昨天晚上在做APM32E030R的开发时,把APM32E030的串口速率提到1Mbps无法正常通讯了。
大家有出现类似的情况吗?
我的初始化代码来自参考例程,我的在115200bps下是可以的。
- void uart2_init(uint32_t band)
- {
- GPIO_Config_T gpioConfig;
- USART_Config_T usartConfigStruct;
- /* Enable GPIO clock */
- RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
- RCM_EnableAPB1PeriphClock(USART2);
- /* Connect PXx to USARTx_Tx */
- GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_2, GPIO_AF_PIN1);
- /* Connect PXx to USARTx_Rx */
- GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_3, GPIO_AF_PIN1);
- /* Configure USART Tx as alternate function push-pull */
- gpioConfig.mode = GPIO_MODE_AF;
- gpioConfig.pin = GPIO_PIN_2;
- gpioConfig.speed = GPIO_SPEED_50MHz;
- gpioConfig.outtype = GPIO_OUT_TYPE_PP;
- gpioConfig.pupd = GPIO_PUPD_PU;
- GPIO_Config(GPIOA, &gpioConfig);
- /* Configure USART Rx as input floating */
- gpioConfig.pin = GPIO_PIN_3;
- GPIO_Config(GPIOA, &gpioConfig);
-
- usartConfigStruct.baudRate = band;
- usartConfigStruct.mode = USART_MODE_TX_RX;
- usartConfigStruct.hardwareFlowCtrl = USART_FLOW_CTRL_NONE;
- usartConfigStruct.parity = USART_PARITY_NONE;
- usartConfigStruct.stopBits = USART_STOP_BIT_1;
- usartConfigStruct.wordLength = USART_WORD_LEN_8B;
- USART_Config(USART2, &usartConfigStruct);
-
- /* Enable USART */
- USART_Enable(USART2);
- }
- void debug_uart_sendbyte(uint8_t dat)
- {
- while (USART_ReadStatusFlag(USART2, USART_FLAG_TXBE) == RESET);
- USART_TxData(USART2, dat);
- }
|