youimisss 发表于 2014-2-17 23:06:00

STM32F030串口中断问题

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));
 }
}
为什么这个串口中断函数只能进入一次呢?

dzc2001 发表于 2014-2-19 10:51:05

RE:STM32F030串口中断问题

连上Jlink调试一下,标志位的问题?

那片清茶 发表于 2014-2-18 08:54:21

回复:STM32F030串口中断问题

你可以调试一下,程序是不是一直在while判断那里没有出来。

youimisss 发表于 2014-2-18 10:26:07

回复:STM32F030串口中断问题

回复第 2 楼 于2014-02-18 08:54:21发表:
你可以调试一下,程序是不是一直在while判断那里没有出来。
 
 
好的,我回去试一下,谢谢
 

senzh01 发表于 2014-2-19 15:20:32

RE:STM32F030串口中断问题

:P先赚分!

fengye5340 发表于 2014-2-19 21:16:45

回复:STM32F030串口中断问题

 
因为你在程序中,使用了
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中很容易出问题的标志,参考手册上讲的很明白

wylb005 发表于 2014-2-20 09:25:03

RE:STM32F030串口中断问题

可能是while那句出错了

小天下 发表于 2014-2-20 11:11:47

回复:STM32F030串口中断问题

  while(!USART_GetITStatus(USART1, USART_IT_TC));
这里错了,,你回去试试好了吗?

看起来很黑 发表于 2014-2-20 16:11:04

回复:STM32F030串口中断问题

回复第 6 楼 于2014-02-19 21:16:45发表:
 
因为你在程序中,使用了
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中很容易出问题的标志,参考手册上讲的很明白
 

在这个while之前不是已经发送过数据了,等待TXE标志清除?

feiante-155820 发表于 2014-2-20 20:42:26

RE:STM32F030串口中断问题

连上仿真器看看程序死在哪了,估计是在while循环里面
页: [1] 2
查看完整版本: STM32F030串口中断问题