STM32F030串口中断函数只能进入一次

2019-07-14 15:32发布

void USART1_IRQHandler(void)
{
uint16_t Value;

if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
{
  Value = USART_ReceiveData(USART1);
  USART_SendData(USART1, Value);
  while(!USART_GetiTStatus(USART1, USART_IT_TC));
}
}
为什么这个串口中断函数只能进入一次呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
60user78
1楼-- · 2019-07-15 02:25
先赚分!
曹志静1314
2楼-- · 2019-07-14 21:10
你可以调试一下,程序是不是一直在while判断那里没有出来。
送终鸡酒
3楼-- · 2019-07-15 01:10
 精彩回答 2  元偷偷看……
maruidiyi
4楼-- · 2019-07-15 02:33
 
因为你在程序中,使用了
while(!USART_GetITStatus(USART1, USART_IT_TC));
如果你将这个TC标志,换成USART_FLAG_TXE,也就是
while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE));   
那样就正常了。
 
USART_IT_TC和USART_FLAG_TXE是STM32中很容易出问题的标志,参考手册上讲的很明白
asd004
5楼-- · 2019-07-15 05:00
可能是while那句出错了
sdfasda
6楼-- · 2019-07-15 06:28
  while(!USART_GetITStatus(USART1, USART_IT_TC));
这里错了,,你回去试试好了吗?

一周热门 更多>