У меня есть проблема с картой STM32429zi-disc1 usart2 Периф - PullRequest
0 голосов
/ 28 октября 2018

У меня возникла проблема с картой 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

...