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

stm32f030cct6 中断出不来问题

[复制链接]
lilu 提问时间:2018-4-3 08:47 /
本帖最后由 lilu 于 2018-4-3 08:52 编辑

在调试stm32f030cct6时,用了4个串口分别为usart1,2,3,5,同时初始化后,串口3会自发产生中断并进入中断服务函数,中断标志死活清不掉,一直卡在中断服务函数里,不知道怎么回事?大家有遇到过吗?
1.png
2.png
3.png
4.png
5.png
收藏 评论4 发布时间:2018-4-3 08:47

举报

4个回答
maxtch 回答时间:2018-4-3 19:03:40
RXNE 和 TXE 标志位是不能直接清的,你必须要清中断条件(RXNE 的话是从 RDR 读取,TXE 的话是向 TDR 写入)要么就是关掉这个中断。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-4-3 22:15:14
借鉴数据手册中提到Set the TE bit in USARTx_CR1 to send an idle frame as first transmission。也就是说一旦使能了TE,芯片会自动地发出了一次数据,并会引起TC_FLAG置位,而想要清除该flag的先决条件是使能了串口。因此,假如在使能串口钱已经使能了串口中断,那程序就一直进入中断了。完成了初始化,那么只要把需要发送的数据填写到发送缓冲区,并且调用一次USART_SendData()把第一个字节发送出去之后,剩下的就交给中断处理。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

琦子 回答时间:2018-4-4 07:48:05
进去之后 先关掉中断 在处理函数内容,然后再次启动,这样就不会一直在中断里出不来了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

废鱼 回答时间:2018-4-4 08:50:24
串口3是卡在发送哥还是接收中断?发送中断的话,需要在发送完成后关闭发送中断使能。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版