У меня возникла проблема с картой STM32429zi-disc1 usart2 периферия.Я отправляю данные через usb на rs232 conv, но данные неверны.На мой взгляд, скорость передачи битов отличается от моего выбора.вероятно, это происходит от PLL.Как я могу это исправить?
Моя настройка PLL следующая:
************************* PLL Parameters *************************************/
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 8
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
#if defined (STM32F40_41xxx)
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F40_41xxx */
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
#define PLL_N 360
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F427_437x || STM32F429_439xx */
#if defined (STM32F401xx)
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 4
#endif /* STM32F401xx */
и мой код usart следующий:
USART_InitStruct.USART_BaudRate = 115200;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_Init(USART2,&USART_InitStruct);
USART_Cmd(USART2,ENABLE);
InitGPIO( sGPIOD,
GPIO_Mode_AF,
GPIO_OType_PP,
GPIO_Speed_100MHz,
GPIO_PuPd_UP,
GPIO_Pin_5|GPIO_Pin_6);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource6,GPIO_AF_USART2);
основной цикл:
while(1){
while(!USART_GetFlagStatus(USART2, USART_FLAG_TXE));
USART2->DR = 0x0002;
_delay_ms(1000);
}//EOF Loop
Мой usart конвертер профильный и ch34