打印
[应用相关]

STM32F407关闭总中断

[复制链接]
434|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们在写程序的时候,有的器件时序不允许被中断打断,这时候我们就需要在执行某段程序时,先把全部中断都关闭,执行完毕后,再打开。
  由于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");
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

88

帖子

0

粉丝