STM32-USART打印字符、字符串函数自己犯的错误反思
2024-10-20 16:05:45
void UART_Send_Byte(USART_TypeDef *USARTx, uint8_t cha)
{
USART_SendData(USARTx, cha);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET) ;
}
这是发送单个字符的函数,其中while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET) ; 这句代码非常重要,
如果没有这句代码,发送一连串数据的时候就可能出现:
USART的发送寄存器(TDR)还没发送出去数据,就被总线新来的数据覆盖,最后可能只打印出一个字符。
发送字符串函数应该为:
void UART_Send_String(USART_TypeDef *USARTx, char *str)
{
int i=0;
#if 0
while(*(str+i)!='\0')
{
USART_SendData(USARTx, *(str+i));//错误的,没有进行TXE检测
i++;
}
#endif #if 1
do
{
UART_Send_Byte(USARTx, *(str+i));//正确的,进行了TXE检测
i++; }while(*(str+i)!='\0'); #endif while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET) ; }
最新文章
- Linux之脚本安装软件
- AndroidAnnotations配置--Android studio
- JNI系列——简便开发流程
- Java设计模式 之 工厂方法模式
- [Javascript] Functor Basic Intro
- 向着目标杀jj
- Add LUN to ASM in Linux
- android学习系列:jercy——AI3 的博客
- 使用Morphia框架操作mongodb
- react学习笔记-01
- Ubuntu快速截图
- nowcoder300J Mex
- SUSE12Sp3-kafka安装
- 设计模式のProxyPattern(代理模式)----结构模式
- Linux大学实验
- Oracle的基本查询知识
- vagrant box保存路径修改
- Request.Cookies 和 Response.Cookies 的区别
- Calculate CRC32 as in STM32 hardware (EWARM v.5.50 and later)
- python 类属性 、实例属性,可变数据结构作为类属性需要注意的地方