[应用相关] STM32F407关闭总中断

[复制链接]
577|2
 楼主| 范德萨发法国队 发表于 2022-3-27 15:09 | 显示全部楼层 |阅读模式
我们在写程序的时候,有的器件时序不允许被中断打断,这时候我们就需要在执行某段程序时,先把全部中断都关闭,执行完毕后,再打开。
  由于STM32F407的库函数的版本不同,所以关闭总中断的函数也不相同,这就给我们开发者带来一定的困扰,那么我们此时应该怎么办呢?
  其实在KEIL编程环境中,有一个KEIL专用的关闭/打开总中断的函数,这个函数定义在KEIL中找不到,但是就是可以用;如下:
__disable_irq() ; //关闭总中断
__enable_irq() ; //打开总中断

小叶三千 发表于 2022-3-28 08:13 | 显示全部楼层
STM32別的型号的芯片也能使用这个开关总中断吧
sonicll 发表于 2022-3-28 09:07 | 显示全部楼层
这两个是ARM CMSIS的库函数,只要是cortex-m系列内核都可以用,ARM编译器6里有这两个函数的原型,是C嵌入汇编:
__STATIC_FORCEINLINE void __enable_irq(void)
{
  __ASM volatile ("cpsie i" : : : "memory");
}

__STATIC_FORCEINLINE void __disable_irq(void)
{
  __ASM volatile ("cpsid i" : : : "memory");
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

94

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部