|
发送部分的程序
/******************************************************************************** ** UART1发送数据 ** *********************************************************************************/ void uart1_send(void) { uint8 i; for(i=0;i<uart1len;i++) { USART_SendData(USART1, uart1_buff); feeddog(); while(USART_GetFlagStatus(USART1, USART_IT_TXE) == RESET); } }
大家注意:USART_IT_TXE这个值是0x727,此时发送完成已经置位,只是0X727检测不到相应的位,所以每次都检测没有发送完成,不会再次发送了。而0X727是检测11位,可是该寄存器有用的位只有10位,一时想不明白。
而把USART_IT_TXE的值改为0X00C7程序可以正常接收与发送了。
这时库文件: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_USART_FLAG(USART_FLAG)); if ((USARTx->SR & USART_FLAG) != (u16)RESET) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } |
|