Compare commits

...

7 Commits

@ -24,7 +24,7 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.108480266" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1440555153" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="NUCLEO-F401RE" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.735933396" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || NUCLEO-F401RE || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32F4xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32F401xE || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F401RETX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.272603146" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="84" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.272603146" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="32" valueType="string"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1199056163" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/GNSS_Nucleo}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.68958637" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1554129155" name="MCU/MPU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
@ -105,7 +105,7 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1740605827" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.812753682" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="NUCLEO-F401RE" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.519568019" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || NUCLEO-F401RE || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc | ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32F4xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32F401xE || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F401RETX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.992879542" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="84" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.992879542" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="32" valueType="string"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.684191003" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/GNSS_Nucleo}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1367961223" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.2089101508" name="MCU/MPU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">

@ -74,6 +74,11 @@ void Error_Handler(void);
/* USER CODE BEGIN Private defines */
/* LED2 helper accessors (static inline for type-safety and no linker symbol) */
static inline void LED2_Toggle(void) { HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); }
static inline void LED2_On(void) { HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET); }
static inline void LED2_Off(void) { HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); }
/* USER CODE END Private defines */
#ifdef __cplusplus

@ -37,6 +37,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
extern volatile uint32_t SysTickCnt;
/* USER CODE END EC */
@ -57,6 +58,9 @@ void PendSV_Handler(void);
void SysTick_Handler(void);
/* USER CODE BEGIN EFP */
uint32_t SysTimeGetAbs(void);
int32_t SysTimeGetRel(uint32_t tref);
/* USER CODE END EFP */
#ifdef __cplusplus

@ -22,8 +22,10 @@
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "printf.h"
#include <stm32f4xx_it.h>
#include <usart2_it.h>
#include <usart6_it.h>
#include "usart1_it.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -69,8 +71,22 @@ static void MX_USART1_UART_Init(void);
/***************************************************************************//**
* @brief Character send interface for printf function
*//****************************************************************************/
void uart_putc(void *p, char c) {
Usart6_PutByte(c);
void printf_putc(void *p, char c) {
Usart1_PutByte(c);
}
/***************************************************************************//**
* @brief Check if specified time interval has elapsed
* @param tref Pointer to time reference variable
* @param tcycle Time interval in milliseconds
*//****************************************************************************/
static inline uint32_t TickChk(uint32_t *tref, int_fast16_t tcycle) {
int32_t tdif = SysTickCnt - *tref;
if (tdif >= tcycle) {
*tref += tcycle;
return 1;
}
return 0;
}
/* USER CODE END 0 */
@ -111,23 +127,76 @@ int main(void) {
Usart2_Init();
Usart6_Init();
init_printf(NULL, &uart_putc);// connect printf to UART
printf("Hello world. This is a Nucleo UART and printf sample with IRQ and ring buffer.\n");
Usart1_Init();
init_printf(NULL, &printf_putc);
printf("Nucleo UART with IRQ and ring buffer\n");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
static uint32_t Tick10msRef = 0;
/* per-second and total byte counters */
static uint32_t bytes_2to6 = 0;
static uint32_t bytes_6to2 = 0;
static uint32_t total_2to6 = 0;
static uint32_t total_6to2 = 0;
if (TickChk(&Tick10msRef, 10)) {
}
static uint32_t Tick1secRef = 0;
if (TickChk(&Tick1secRef, 1000)) {
LED2_Toggle();
/* print per-second data rates and cumulative totals */
printf("OUT:%5u IN:%5u B/s (Total:%u/%u)\n", (unsigned) bytes_2to6, (unsigned) bytes_6to2, (unsigned) total_2to6, (unsigned) total_6to2);
/* reset per-second counters */
bytes_2to6 = 0;
bytes_6to2 = 0;
}
int c;
c = Usart1_GetByte();
if (c != -1) { // new incoming data
/*
switch (c) {
case '1':
printf("Send 800 bytes to UART1\n");
for (int i = 0; i < 800; i++) {
Usart1_PutByte((i % 10) + '0');
}
break;
case '2':
printf("Send 800 bytes to UART2\n");
for (int i = 0; i < 800; i++) {
Usart2_PutByte((i % 20) + 'A');
}
break;
case '6':
printf("Send 800 bytes to UART6\n");
for (int i = 0; i < 800; i++) {
Usart6_PutByte((i % 20) + 'a');
}
break;
default: // echo back
Usart1_PutByte(c);
break;
}
*/
}
c = Usart2_GetByte();
if (c != -1) {// new incoming data
Usart6_PutByte(c);// UART2rx --> UART6tx
if (c != -1) { // new incoming data
Usart6_PutByte(c); // UART2rx --> UART6tx
bytes_2to6++;
total_2to6++;
}
c = Usart6_GetByte();
if (c != -1) {// new incoming data
Usart2_PutByte(c);// UART6rx --> UART2tx
if (c != -1) { // new incoming data
Usart2_PutByte(c); // UART6rx --> UART2tx
bytes_6to2++;
total_6to2++;
}
/* USER CODE END WHILE */
@ -153,14 +222,13 @@ void SystemClock_Config(void) {
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 16;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 256;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV8;
RCC_OscInitStruct.PLL.PLLQ = 7;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
Error_Handler();
@ -172,10 +240,10 @@ void SystemClock_Config(void) {
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
Error_Handler();
}
}

@ -41,6 +41,7 @@
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
volatile uint32_t SysTickCnt = 0;
/* USER CODE END PV */
@ -52,6 +53,22 @@
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/***************************************************************************//**
* @brief Get absolute system time
*//****************************************************************************/
uint32_t SysTimeGetAbs (void) {
return SysTickCnt;
}
/***************************************************************************//**
* @brief Get relative time
*//****************************************************************************/
int32_t SysTimeGetRel (uint32_t tref) {
int32_t tdif = SysTickCnt - tref;
return tdif;
}
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
@ -187,7 +204,7 @@ void SysTick_Handler(void)
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
SysTickCnt++;
/* USER CODE END SysTick_IRQn 1 */
}

@ -0,0 +1,141 @@
/***************************************************************************//**
* @file usart1_it.c
* @brief UART with interrupt and ring buffer (USART1)
*//****************************************************************************/
#include "stm32f4xx_hal.h"
//------------------------------C library---------------------------------------
#include <stdlib.h>
//----------------------------user includes-------------------------------------
#include "usart1_it.h"
#include "usart1_it_cfg.h"
//------------------------------------------------------------------------------
/* Private typedefs ----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
//====== UART buffer defines ===================================================
#define USART1_RXBUF_MASK (USART1_RXBUF_SIZE - 1)
#define USART1_TXBUF_MASK (USART1_TXBUF_SIZE - 1)
#if ( USART1_RXBUF_SIZE & USART1_RXBUF_MASK )
#error RX buffer size is not a power of 2!
#endif
#if ( USART1_TXBUF_SIZE & USART1_TXBUF_MASK )
#error TX buffer size is not a power of 2!
#endif
/* Private variables ---------------------------------------------------------*/
//====== Variables for transmitter =============================================
static uint8_t Usart1TxBuf[USART1_TXBUF_SIZE];
static uint16_t Usart1TxWrIdx = 0;
static volatile uint16_t Usart1TxRdIdx = 0;
//====== Variables for Receiver ================================================
static uint8_t Usart1RxBuf[USART1_RXBUF_SIZE];
static volatile uint16_t Usart1RxWrIdx = 0;
static volatile uint16_t Usart1RxRdIdx = 0;
/* Public variables ----------------------------------------------------------*/
/* Functions -----------------------------------------------------------------*/
/***************************************************************************//**
* @brief USART1 init
*//****************************************************************************/
void Usart1_Init(void) {
USART1->CR1 |= USART_CR1_RXNEIE; // Enable RX interrupt
}
/***************************************************************************//**
* @brief USART1 interrupt handler
*//****************************************************************************/
void USART1_IRQHandler(void) {
uint32_t statusreg = USART1->SR; // read interrupt flags
if ((statusreg & USART_SR_RXNE)) { // RX interrupt
uint8_t d = USART1->DR; // read received byte
uint_fast16_t wr = Usart1RxWrIdx;
wr = (wr + 1) & USART1_RXBUF_MASK; // new write index
Usart1RxBuf[wr] = d; // received data to buffer
Usart1RxWrIdx = wr; // Store new index
}
if ((statusreg & USART_SR_TXE)) { // TX interrupt
uint_fast16_t rd = Usart1TxRdIdx;
uint_fast16_t wr = Usart1TxWrIdx;
if (wr != rd) { // data in buffer
rd = (rd + 1) & USART1_TXBUF_MASK; // new read index
USART1->DR = Usart1TxBuf[rd]; // send data byte
Usart1TxRdIdx = rd; // Store new index
}
if (wr == rd) { // data buffer empty
USART1->CR1 &= ~USART_CR1_TXEIE; // INT disable
}
}
}
/***************************************************************************//**
* @brief Send byte to UART
* @param d: byte to send
*//****************************************************************************/
void Usart1_PutByte(uint8_t d) {
uint_fast16_t wr = Usart1TxWrIdx;
wr = (wr + 1) & USART1_TXBUF_MASK; // new write index
if (wr == Usart1TxRdIdx) { // No free space in buffer (overflow)
return; // drop remaining data (Attention! Buffer overflow not signaled! Use bigger buffer)
}
Usart1TxBuf[wr] = d; // Store data in buffer
Usart1TxWrIdx = wr; // Store new index
USART1->CR1 |= USART_CR1_TXEIE; // Interrupt enable (start send)
}
/***************************************************************************//**
* @brief Send more data to UART
* @param src: data to send
* @param n: count of data
*//****************************************************************************/
void Usart1_PutData (void* src, uint16_t n) {
uint8_t* p = src;
uint_fast16_t wr = Usart1TxWrIdx;
while (n) {
wr = (wr + 1) & USART1_TXBUF_MASK; // new write index
if (wr == Usart1TxRdIdx) { // No free space in buffer (overflow)
break; // drop remaining data (Attention! Buffer overflow not signaled! Use bigger buffer)
}
Usart1TxBuf[wr] = *p; // Store data in buffer
p++;
n--;
}
Usart1TxWrIdx = wr; // Store new index
USART1->CR1 |= USART_CR1_TXEIE; // Interrupt enable (start send)
}
/***************************************************************************//**
* @brief Read data from UART RX buffer
* @return received character, -1: no data in RX buffer
*//****************************************************************************/
int16_t Usart1_GetByte(void) {
uint_fast16_t rd = Usart1RxRdIdx;
if (rd != Usart1RxWrIdx) { // new data in buffer
rd = (rd + 1) & USART1_RXBUF_MASK; // new read index
Usart1RxRdIdx = rd; // store new index
return Usart1RxBuf[rd]; // return with data
}else {
return -1; // buffer empty
}
}

@ -0,0 +1,13 @@
// filepath: c:\projects\STM32CubeIDE\GNSS_Nucleo\Core\user\usart1_it.h
#ifndef __USART1_IT_H__
#define __USART1_IT_H__
#include <stdint.h>
extern void Usart1_Init(void);
extern void Usart1_PutByte(uint8_t d);
extern void Usart1_PutData(void* src, uint16_t n);
extern int16_t Usart1_GetByte(void);
#endif

@ -0,0 +1,8 @@
// filepath: c:\projects\STM32CubeIDE\GNSS_Nucleo\Core\user\usart1_it_cfg.h
#ifndef __USART1_IT_CFG_H__
#define __USART1_IT_CFG_H__
#define USART1_RXBUF_SIZE 1024
#define USART1_TXBUF_SIZE 1024
#endif // __USART1_IT_CFG_H__

@ -79,9 +79,9 @@ void USART2_IRQHandler(void) {
rd = (rd + 1) & USART2_TXBUF_MASK; // new read index
USART2->DR = Usart2TxBuf[rd]; // send data byte
Usart2TxRdIdx = rd; // Store new index
if (wr == rd) { // data buffer empty
USART2->CR1 &= ~USART_CR1_TXEIE; // INT disable
}
}
if (wr == rd) { // data buffer empty
USART2->CR1 &= ~USART_CR1_TXEIE; // INT disable
}
}
}

@ -79,9 +79,9 @@ void USART6_IRQHandler(void) {
rd = (rd + 1) & USART6_TXBUF_MASK; // new read index
USART6->DR = Usart6TxBuf[rd]; // send data byte
Usart6TxRdIdx = rd; // Store new index
if (wr == rd) { // data buffer empty
USART6->CR1 &= ~USART_CR1_TXEIE; // INT disable
}
}
if (wr == rd) { // data buffer empty
USART6->CR1 &= ~USART_CR1_TXEIE; // INT disable
}
}
}

@ -114,10 +114,8 @@ PC13-ANTI_TAMP.GPIO_PuPd=GPIO_NOPULL
PC13-ANTI_TAMP.Locked=true
PC13-ANTI_TAMP.Signal=GPXTI13
PC14-OSC32_IN.Locked=true
PC14-OSC32_IN.Mode=LSE-External-Oscillator
PC14-OSC32_IN.Signal=RCC_OSC32_IN
PC15-OSC32_OUT.Locked=true
PC15-OSC32_OUT.Mode=LSE-External-Oscillator
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
PC6.GPIOParameters=GPIO_Speed
PC6.GPIO_Speed=GPIO_SPEED_FREQ_LOW
@ -128,10 +126,10 @@ PC7.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PC7.Mode=Asynchronous
PC7.Signal=USART6_RX
PH0\ -\ OSC_IN.Locked=true
PH0\ -\ OSC_IN.Mode=HSE-External-Clock-Source
PH0\ -\ OSC_IN.Mode=HSE-External-Oscillator
PH0\ -\ OSC_IN.Signal=RCC_OSC_IN
PH1\ -\ OSC_OUT.Locked=true
PH1\ -\ OSC_OUT.Mode=HSE-External-Clock-Source
PH1\ -\ OSC_OUT.Mode=HSE-External-Oscillator
PH1\ -\ OSC_OUT.Signal=RCC_OSC_OUT
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
@ -166,34 +164,36 @@ ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_USART6_UART_Init-USART6-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=84000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
RCC.APB1Freq_Value=42000000
RCC.APB1TimFreq_Value=84000000
RCC.APB2Freq_Value=84000000
RCC.APB2TimFreq_Value=84000000
RCC.CortexFreq_Value=84000000
RCC.FCLKCortexFreq_Value=84000000
RCC.HCLKFreq_Value=84000000
RCC.48MHZClocksFreq_Value=36571428.571428575
RCC.AHBFreq_Value=32000000
RCC.APB1Freq_Value=32000000
RCC.APB1TimFreq_Value=32000000
RCC.APB2Freq_Value=32000000
RCC.APB2TimFreq_Value=32000000
RCC.CortexFreq_Value=32000000
RCC.FCLKCortexFreq_Value=32000000
RCC.HCLKFreq_Value=32000000
RCC.HSE_VALUE=8000000
RCC.HSI_VALUE=16000000
RCC.I2SClocksFreq_Value=96000000
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLN,PLLP,PLLQ,PLLQCLKFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLP,PLLQ,PLLQCLKFreq_Value,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
RCC.LSE_VALUE=32768
RCC.LSI_VALUE=32000
RCC.MCO2PinFreq_Value=84000000
RCC.PLLCLKFreq_Value=84000000
RCC.PLLN=336
RCC.PLLP=RCC_PLLP_DIV4
RCC.MCO2PinFreq_Value=32000000
RCC.PLLCLKFreq_Value=32000000
RCC.PLLM=8
RCC.PLLN=256
RCC.PLLP=RCC_PLLP_DIV8
RCC.PLLQ=7
RCC.PLLQCLKFreq_Value=48000000
RCC.PLLQCLKFreq_Value=36571428.571428575
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.RTCFreq_Value=32000
RCC.RTCHSEDivFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=84000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.VCOI2SOutputFreq_Value=192000000
RCC.VCOInputFreq_Value=1000000
RCC.VCOOutputFreq_Value=336000000
RCC.VCOOutputFreq_Value=256000000
RCC.VcooutputI2S=96000000
SH.GPXTI13.0=GPIO_EXTI13
SH.GPXTI13.ConfNb=1

Loading…
Cancel
Save