今天调试串口程序(查询方式)时候遇到一个问题,不知道是什么原因,不知道别人遇到没有。
初始化串口时的一个顺序问题,具体如下:
1) USART_Init(USART1,&USART_InitStructure); USART_Cmd(USART1, ENABLE); 2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
当如上所示的顺序 先1)后2)初始化串口时,当编程成功“第一次复位”全速跑的时候 程序肯定死在, while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) { } TXE 总为0 即数据还没有被转移到移位寄存
但是我软件复位,或是硬件复位程序,程序就可以正确跑了,没问题了。
当先2)后1)初始化串口时就没这问题。
请教 各位大侠原因!!!!! |