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));
}
}
为什么这个串口中断函数只能进入一次呢?
RE:STM32F030串口中断问题
连上Jlink调试一下,标志位的问题?回复:STM32F030串口中断问题
你可以调试一下,程序是不是一直在while判断那里没有出来。回复:STM32F030串口中断问题
回复第 2 楼 于2014-02-18 08:54:21发表:你可以调试一下,程序是不是一直在while判断那里没有出来。
好的,我回去试一下,谢谢
RE:STM32F030串口中断问题
:P先赚分!回复: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中很容易出问题的标志,参考手册上讲的很明白
RE:STM32F030串口中断问题
可能是while那句出错了回复:STM32F030串口中断问题
while(!USART_GetITStatus(USART1, USART_IT_TC));这里错了,,你回去试试好了吗?
回复: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标志清除?
RE:STM32F030串口中断问题
连上仿真器看看程序死在哪了,估计是在while循环里面
页:
[1]
2