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

坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机...

[复制链接]
lovemaomao518 提问时间:2012-11-24 15:08 /
STM32 关闭全局中断目前有几种方法:

void __enable_irq (void)
void __disable_irq (void)
uint32_t __get_PRIMASK (void)
void __set_PRIMASK (uint32_t value)
void __enable_fault_irq (void)
void __disable_fault_irq (void)
uint32_t __get_BASEPRI (void)
void __set_BASEPRI (uint32_t value)
uint32_t __get_FAULTMASK (void)
void __set_FAULTMASK (uint32_t value)

本人裸奔系统,在主程序的主循环中执行IIC(模拟的)命令时,用了上面所有的开启和关闭中断函数,都发现系统会宕机,频繁进入串口中断,而串口进中断值寄存器值为:
IMG_20121122_090019.jpg

而正常情况下为:
IMG_20121122_094133.jpg

只要IIC中开启中断,就会频繁进入串口中断,导致主循环无法执行,及时在串口中断中清除所有中断标识都不行!

请高手解答啊!
最近刚用STM32,发现这个应该算是一个BUG,怎么连主循环中都无法关闭中断呢,发现STM32的硬件BUG真是多啊!

有解决的办法吗?期待牛人啊!

看来STM32吹嘘的太多了!准备专用TI 的M3了,他的M3毕竟是Arm亲生的儿子哦!
收藏 评论13 发布时间:2012-11-24 15:08

举报

13个回答
xieyuanfu 回答时间:2012-11-25 09:16:24

RE:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助

是不是你没写对啊  仔细检查下先啦
STM32的I2C 是有个小BUG的 但不是你这个
你在网上百度下 就知道了
lovemaomao518 回答时间:2012-11-26 09:17:49

回复:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助

 谢谢回复啊!
我的IIC有一个主一个从,主采用IO模拟,从IIC采用的是中断方式,现在在模拟主IIC中关闭和开启全局中断,会导致系统宕机啊!
 
STM32硬件问题真是多!但这个片子牛吹的很大!
 
阿呆 回答时间:2012-11-26 17:22:04

回复:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助 【悬赏问答】

楼主,淡定~
解决问题和玩转技术是关键啊!
zykzyk-93033 回答时间:2012-11-26 21:41:20

RE:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助 【悬赏问答】

这种情况你要看看你的串口设置,和串口的硬件连接有没有问题了。不要心急,我想你这个问题肯定可以解决的。譬如:你先把串口的程序段关掉看看,是不是还存在这个问题。
zoozo 回答时间:2012-11-27 08:53:20

回复:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助 【悬赏问答】

哈哈,楼主好有意思啊,这个问题应该是楼主使用不当。
我记得开启和关闭中断分别是两个函数配合使用吧?忘记了,
多任务系统告诉我们可以使用如下函数开启和屏蔽中断,你可以试试。。。。
__asm void CPU_IntDis (void)
{
        CPSID   I
        BX      LR
}
__asm void CPU_IntEn (void)
{
        CPSIE   I
        BX      LR
}
lovemaomao518 回答时间:2012-11-27 13:17:26

回复:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助 【悬赏问答】

回复第 6 楼 于2012-11-27 08:53:20发表:
哈哈,楼主好有意思啊,这个问题应该是楼主使用不当。
我记得开启和关闭中断分别是两个函数配合使用吧?忘记了,
多任务系统告诉我们可以使用如下函数开启和屏蔽中断,你可以试试。。。。
__asm void CPU_IntDis (void)
{
CPSID   I
BX      LR
}
__asm void CPU_IntEn (void)
{
CPSIE   I
BX      LR
}
 
谢谢各位的回复!
 
这个也不行!
现在情况很明显,若开启串口,并通信,就会出现这个问题!
出现问题时,程序的主循环不再执行程序,类似宕机了!
但奇怪的是,在调试时,只有在串口中断中增加调试断点或停止中断,跳到中断后再继续执行,系统主程序就可以重新运行!
真是奇怪啊!
有没有人和我的一样的情况呢!
 
 
xiaodc88 回答时间:2012-11-29 10:42:42

RE:坑爹的STM32,蛋疼的中断, 关闭全局中断问题,系统宕机哦,无法解决,严重BUG,求助 【悬赏问答】

任何东西都不可能完美吧,有点缺陷什么的也正常,多想想办法,有些问题从软件上是能规避的
创新才是乐趣 回答时间:2016-4-29 10:05:50
disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用disable_irq_nosync来关闭中断
月如意 回答时间:2017-9-18 17:55:40
这个问题,我在多任务处理时也碰到了,求教啊。。。。
月如意 回答时间:2017-9-18 17:59:12
创新才是乐趣 发表于 2016-4-29 10:05
disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用dis ...

你好,可以详细一点说明一下吗?
五哥1 回答时间:2017-9-19 12:48:44
任何东西都不可能完美吧,有点缺陷什么的也正常,多想想办法
Love_ST 回答时间:2019-7-27 10:57:07
mark一下
qiangtech 回答时间:2019-7-27 11:40:29
考验耐心和分析问题能力的时候到了,解决出来技术就能上一台阶。

所属标签

相似问题

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