分析初始化STM32串口后进入发送完成中断的现象
以下是字符发送的配置过程,注意第6点,在设置USART_CR1中的TE位时,会发送一个空闲帧作为第一次数据发送,所以即便你执行了USART_ClearFlag(USART1, USART_FLAG_TC); (这个函数肯定在空闲帧数据发送完成前执行),所以当空闲帧发送完后,就进入发送完成中断。
配置步骤:
1.
2.
3.
4.
的描述配置DMA寄存器。
5.
6.
7.
下,对每个待发送的数据重复步骤7。
8.
传输结束。当需要关闭USART或需要进入停机模式之前,需要确认传输结束,避免破坏
最后一次传输。
解决的办法:
方法一
在执行USART_ITConfig(USART1, USART_IT_TC, ENABLE); 之前,
先延时一段时间,基本上比一个字符发送的时间长一点就可以了,然后再执行
USART_ClearFlag(USART1, USART_FLAG_TC);
方法二:
在执行USART_ITConfig(USART1, USART_IT_TC, ENABLE); 之前,
USART_ClearFlag(USART1, USART_FLAG_TC);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET)
{
}
USART_ClearFlag(USART1,USART_FLAG_TC);
初始化STM32串口发送完成中 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)