完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关闭全局中断函数是__enable_irq();,,,在头文件core_cmFunc.h中
|
|
|
|
要利用STM32CubeMX生成的Keil项目关闭全局中断,您需要执行以下步骤:
1. 首先,确保您已经安装了STM32CubeMX和Keil MDK-ARM。 2. 使用STM32CubeMX生成您的项目。在STM32CubeMX中,选择您的STM32微控制器型号,配置所需的外设和中断。 3. 生成项目后,打开生成的Keil MDK-ARM项目。 4. 在Keil项目中,找到中断相关的头文件。通常,这些文件位于STM32CubeMX生成的源代码文件夹中,例如`Drivers/CMSIS/Device/ST/STM32xxxxxx/Include`。对于STM32F1系列,全局中断控制函数在`core_cm3.h`或`core_cm3.c`中;对于STM32F4系列,全局中断控制函数在`core_cm4.h`或`core_cm4.c`中。 5. 要关闭全局中断,您可以使用`__disable_irq()`宏(对于STM32F1系列)或`__disable_fault_irq()`宏(对于STM32F4系列)。这些宏分别位于`core_cm3.h`和`core_cm4.h`中。 6. 在您的代码中,找到需要关闭全局中断的位置。例如,您可以在临界区(需要保护的代码段)之前调用这些宏。示例代码如下: ```c void critical_section(void) { __disable_irq(); // 关闭全局中断(STM32F1系列) // 或者 __disable_fault_irq(); // 关闭全局中断(STM32F4系列) // 临界区代码 __enable_irq(); // 启用全局中断(STM32F1系列) // 或者 __enable_fault_irq(); // 启用全局中断(STM32F4系列) } ``` 7. 如何关闭系统滴答定时器中断: 要关闭系统滴答定时器(SysTick)中断,您需要修改SysTick的中断使能位。以下是如何操作的示例: ```c void disable_systick_interrupt(void) { // 清除SysTick中断使能位 SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; } ``` 请注意,关闭全局中断可能会影响系统的实时性能。因此,在执行关键操作时,应尽可能减少全局中断的禁用时间。 总之,要关闭STM32CubeMX生成的Keil项目的全局中断,您需要在适当的位置使用`__disable_irq()`或`__disable_fault_irq()`宏,并在完成关键操作后使用`__enable_irq()`或`__enable_fault_irq()`宏重新启用中断。对于系统滴答定时器中断,您可以通过修改SysTick的中断使能位来禁用它。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1553 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1499 浏览 1 评论
925 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
660 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1551 浏览 2 评论
1846浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
605浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
503浏览 3评论
505浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
487浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 17:24 , Processed in 0.723545 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号