STM32怎么暂时禁能EXTI中断

lr2131 2014-09-05 11:34:42
直接入主题,定义了一个全局变量,在EXTI的ISR中会被读和修改这个全局变量,在线程代码中也会读写访问这个全局变量,为了做这个变量的互斥但又不想通过关全局中断来实现,所以我需要在线程中,在修改这个变量的前后加点代码,暂时禁能EXTI中断,修改了全局变量后再使能EXTI中断。但特别注意这只是想暂时禁能EXTI的中断,绝对希望丢失了这次中断。不知道STM32固件库哪些函数可以实现这个效果,抽个时间再去查查资料,这里就先发帖问问,谢谢回帖。
...全文
1055 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
john_liqinghan 2014-09-12
  • 打赏
  • 举报
回复
EXTI_IMR此寄存器可以完成楼主的需求!
woshi_ziyu 2014-09-05
  • 打赏
  • 举报
回复
可以使用EXTI_DeInit然后再EXTI_Init()
dceacho 2014-09-05
  • 打赏
  • 举报
回复
多任务都可能对存储设备进行操作时也遇到类似的问题 我一般都是增加以全局标记,需要写时检查设备是否被占用,是的话就等待 但你这个可能在中断里写,中断里不可能等待外面用完了再写,比较麻烦.. 我这应该有STM32的库文件,我找找下午贴给你
lr2131 2014-09-05
  • 打赏
  • 举报
回复
引用 7 楼 wangfan027 的回复:
在屏蔽中断后,手动短路下IO口弄个中断,然后再开放,开这个中断还有没有
恩,好,有时间我按你说的试试。 目前为了稳定可靠我还是先用OS提供的开关中断来做了,以后尽量改成小范围开关中断
dceacho 2014-09-05
  • 打赏
  • 举报
回复
在屏蔽中断后,手动短路下IO口弄个中断,然后再开放,开这个中断还有没有
dceacho 2014-09-05
  • 打赏
  • 举报
回复
lr2131 2014-09-05
  • 打赏
  • 举报
回复
引用 2 楼 woshi_ziyu 的回复:
可以使用EXTI_DeInit然后再EXTI_Init()
EXTI_DeInit搞一下似乎会丢中断的呀,
lr2131 2014-09-05
  • 打赏
  • 举报
回复
引用 2 楼 woshi_ziyu 的回复:
可以使用EXTI_DeInit然后再EXTI_Init()
重新再初始化下EXTI呀,感觉不用那么麻烦吧
lr2131 2014-09-05
  • 打赏
  • 举报
回复
引用 1 楼 wangfan027 的回复:
多任务都可能对存储设备进行操作时也遇到类似的问题 我一般都是增加以全局标记,需要写时检查设备是否被占用,是的话就等待 但你这个可能在中断里写,中断里不可能等待外面用完了再写,比较麻烦.. 我这应该有STM32的库文件,我找找下午贴给你
好的,谢谢版主l

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧