分析初始化STM32串口后進入發(fā)送完成中斷的現(xiàn)象
以下是字符發(fā)送的配置過程,注意第6點,在設置USART_CR1中的TE位時,會發(fā)送一個空閑幀作為第一次數(shù)據(jù)發(fā)送,所以即便你執(zhí)行了USART_ClearFlag(USART1, USART_FLAG_TC); (這個函數(shù)肯定在空閑幀數(shù)據(jù)發(fā)送完成前執(zhí)行),所以當空閑幀發(fā)送完后,就進入發(fā)送完成中斷。
配置步驟:
1.
2.
3.
4.
的描述配置DMA寄存器。
5.
6.
7.
下,對每個待發(fā)送的數(shù)據(jù)重復步驟7。
8.
傳輸結(jié)束。當需要關閉USART或需要進入停機模式之前,需要確認傳輸結(jié)束,避免破壞
最后一次傳輸。
解決的辦法:
方法一
在執(zhí)行USART_ITConfig(USART1, USART_IT_TC, ENABLE); 之前,
先延時一段時間,基本上比一個字符發(fā)送的時間長一點就可以了,然后再執(zhí)行
USART_ClearFlag(USART1, USART_FLAG_TC);
方法二:
在執(zhí)行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);
評論