相关经验及心得如下:
摘要:1.在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。2 .在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。3.相关配置程序编写无误,并已经开启时钟,依旧无法配置相关GPIO及外设;4.ADC通道:分为规则组和注入组;5.修改定时器的预装值后,定时器不能立刻修改。
一、 USART TX中断配置
-
问题描述:
在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。
1 -
问题分析:
在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。
1
(TC标志位:发送完成标志位 )
当包含有数据的一帧发送完成后,由硬件将该位置位。如果USART_CR1中的TCIE为1,则产生中断。由软件序列清除该位(先读USART_SR,然后写入USART_DR)。TC位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。
0:发送还未完成;
1:发送完成成。 -
解决方法:
a) 方案一: 先读状态寄存器(USART_SR) ,然后再DR发送寄存器中写数,TC标志位自动清除;
1
/** 用于清除TC标志位**/
USART_GetFlagStatus(USART1, USART_IT_TC);
USART1->DR=0x00;
1
2
3
b) 方案二:强行将SR寄存器的TC位写0