STM32串口调试进入死循环
最近在调试STM32串口,发现串口发送数据总是进入如下死循环
while(USART_GetFlagStatus(UART5, USART_FLAG_TXE) == RESET);
经检查发现串口时钟没有开,打开串口时钟后串口发送数据正常
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE); //打开串口时钟
附上串口配置完整代码
void uart_init(void)
{
/* 定义结构体变量 */
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/*开启时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); //ʹÄÜUSART1£¬GPIOAʱÖÓ
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE); //ʹÄÜUSART1£¬GPIOAʱÖÓ
/* 初始化GPIO口*/
//RS4851 USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_Init(GPIOA, &GPIO_InitStructure);//³õÊ