STM32cubeMX中断响应优先级设置不了

如图,一开始以为是设置好抢占优先级后,响应优先级设置不了(下拉只有0一个选项),查资料才知道中断优先级是要分组的。

STM32中断分组和优先级

优先级分组抢占优先级响应优先级描述
NVIC_PriorityGroup_0  00~15取值高4位全部是响应优先级,无抢占优先级
NVIC_PriorityGroup_1 0~1取值 0~7取值高4位全部是响应优先级,无抢占优先级
NVIC_PriorityGroup_2 0~3取值0~3取值抢占优先级为2位,响应优先级为2位
NVIC_PriorityGroup_3 0~7取值0~1取值抢占优先级为2位,响应优先级为2位
NVIC_PriorityGroup_4 0~15取值0抢占优先级为2位,响应优先级为2位
  • 抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。(注:优先级数字越小,优先级越高)
  • 抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。(例如:两个中断同时响应,这里就会先执行响应优先级高的那个中断)(注:优先级数字越小,优先级越高)
  • 抢占优先级和响应优先级都相同,则比较它们的硬件中断编号,中断编号越小,优先级越高。(硬件中断编号从中断向量表当中查看)

根据以上可在设置中自行设置优先级

### 如何在STM32CubeMX中配置抢占优先级为0 在STM32微控制器中,中断优先级抢占优先级优先级共同决定。通过STM32CubeMX工具,可以直观地完成这些参数的配置。以下是关于如何将抢占优先级设置为0的具体说明。 #### 使用STM32CubeMX配置抢占优先级 1. 打开STM32CubeMX并加载目标项目文件。如果尚未创建项目,则需先选择对应的芯片型号(例如STM32F407ZGT6),然后生成初始配置[^2]。 2. 进入 **Pinout & Configuration** 页面,在左侧导航栏找到 **System Core -> NVIC** 节点,并展开它以查看可用的中断源列表。 3. 定位到需要调整优先级的特定中断项上双击或者单击右侧编辑按钮进入详细属性界面。 4. 在弹出窗口中的 “Priority” 字段下拉菜单里可以选择合适的数值组合来定义该中断的整体优先级别;其中,“Preemption Priority” 即表示抢占优先级部分,将其设定成 `0` 表明此中断具有最高级别的抢占能力[^1]。 5. 同样需要注意的是“Sub Priority”,即响应阶段内的相对顺序安排,默认情况下可能不需要特别修改除非有特殊需求场景存在。 6. 当所有必要的中断都已按照上述方式设置了各自的优先等级之后保存更改退出即可继续下一步操作流程比如生成对应平台支持包下的初始化代码片段供后续移植至实际开发环境中测试验证功能表现情况等等。 #### 示例代码展示 以下是一个简单的例子展示了如何手动调整已经生成的基础框架里的某些具体实现细节以便于满足更精确控制的需求: ```c // 假设我们正在处理 TIM2 的全局中断服务程序 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM2){ // 插入您的应用逻辑在这里... } } /* USER CODE BEGIN 2 */ // 如果希望进一步确认当前运行环境是否符合预期可以通过如下手段检查 __weak void NMI_Handler(void) { /* User can add his own implementation to report the NMI interrupt occurrence */ } /* USER CODE END 2 */ /** * @brief This function handles Hard Fault exception. */ void HardFault_Handler(void) { while (1) { } } ``` 以上仅作为示范用途并不代表完整的解决方案还需要结合实际情况灵活运用相关技术手段加以完善扩展才能达到理想效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值