你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030串口中断问题

[复制链接]
youimisss 提问时间:2014-2-17 23:06 /
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));
 }
}
为什么这个串口中断函数只能进入一次呢?
<
收藏 2 评论14 发布时间:2014-2-17 23:06

举报

14个回答
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串口中断问题

先赚分!
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循环里面
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版