当前位置:首页 > 单片机 > 单片机
[导读]前言本文将说明在FreeRTOS嵌入式操作系统中,如何设置STM32 Cortex M3和M4系列MCU的中断优先级。总结【1】STM32L1系列,STM32F1系列,STM32F4系列,设置NVIC时需要使用NVIC_PriorityGroup_4。【2】抢占优先级的要比“

前言

本文将说明在FreeRTOS嵌入式操作系统中,如何设置STM32 Cortex M3和M4系列MCU的中断优先级。

总结

【1】STM32L1系列,STM32F1系列,STM32F4系列,设置NVIC时需要使用NVIC_PriorityGroup_4。

【2】抢占优先级的要比“MAX”更大,而比“LOWEST”更小。例如

configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY=5

configLIBRARY_LOWEST_INTERRUPT_PRIORITY=15

那么NVIC抢占优先级设置的具体值应该比MAX=5更大(包括等于),比LOWEST=15更小(包括等于),也就是说5,6,7,8,9,10,11,12,13,14,15肯定是合法值。

【3】FreeRTOS中,数值越大优先级越高,这种优先级可以成为逻辑优先级。Cortex M3/M4中断中,数值越大优先级越低,这种优先级成为中断优先级。两者相反,所以才会出现比"MAX"更大而比“LOWEST”更小的情况。

示意代码

【FreeRTOSConfig.h】


/*Usethesystemdefinition,ifthereisone*/

#ifdef__NVIC_PRIO_BITS

#defineconfigPRIO_BITS__NVIC_PRIO_BITS

#else

#defineconfigPRIO_BITS4/*15prioritylevels*/

#endif

#defineconfigLIBRARY_LOWEST_INTERRUPT_PRIORITY15

#defineconfigLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY5

/*Thelowestpriority.*/

#defineconfigKERNEL_INTERRUPT_PRIORITY(configLIBRARY_LOWEST_INTERRUPT_PRIORITY<<(8-configPRIO_BITS))

/*Priority5,or95asonlythetopfourbitsareimplemented.*/

/*!!!!configMAX_SYSCALL_INTERRUPT_PRIORITYmustnotbesettozero!!!!

Seehttp://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html.*/

#defineconfigMAX_SYSCALL_INTERRUPT_PRIORITY(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY<<(8-configPRIO_BITS))

【NVIC设置】

【示例A】


NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel=XXXX_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=configLIBRARY_LOWEST_INTERRUPT_PRIORITY;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

【示例A】


NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

NVIC_InitStructure.NVIC_IRQChannel=XXXX_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=configLIBRARY_LOWEST_INTERRUPT_PRIORITY-1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

参考博文

【FreeRTOS STM32移植笔记】

【FreeRTOS学习笔记——任务间使用队列同步数据】

【FreeRTOS学习笔记——二值型信号量】

【FreeRTOS学习笔记——互斥型信号量】

【如何在FreeRTOS下实现低功耗——MSP430F5438平台】


参考资料

【1】http://www.freertos.org/RTOS-Cortex-M3-M4.html


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。

关键字: 中断优先级 单片机 中断系统

8月19日消息,据外媒报道,全新一代宝马M3/M4将于9月23日首发,两款新车都会采用与4系类似的“超大双肾”中网,同时还将进行了黑化处理,视觉效果十分激进。 预告图中,全新M3采用独特的深色曼岛绿

关键字: 宝马 m3 m4

引言   随着汽车的普及和行驶速度的加快,交通事故及伤亡人数也在逐年上升。在发生汽车碰撞事故时,如何有效地保护司机和乘员生命的安全是迫切需要解决的问题。安全气囊作为与安全带配合使用的被动

关键字: ARM lm3s1138 安全气囊 cortexm3

继宝马M3之后, 又一款超激进的宝马M Power诞生。 日前,有外媒曝光了一组全新宝马M4的最新渲染图,新车采用最新大尺寸双肾进气格栅设计,已经十分接近量产车型。据悉,该车将于今年9月份正式发布。

关键字: m4 宝马

大联大旗下友尚推出基于瑞昱半导体(Realtek)技术的智能家居整体解决方案。此方案采用全球用量最大的ARM Cortex-M MCU核心及广泛使用的FreeRTOS+LwIP,全系列新产品均能

关键字: freertos 智能家居 通信网络

实现中断允许控制和中断优先级控制分别由特殊功能寄存器区中的中断允许寄存器IE和中断优先级寄存器IP来实现的。下面介绍这两个特殊功能寄存器。

关键字: at89s51 中断优先级 中断允许

新竹, 台湾 – 2019年6月6日 – 新唐科技,全球领先的微控制器平台解决方案供货商, 展示了NuMicro® M2351 系列支持FreeRTOS内核的能力。M2351系列是市场...

关键字: ARM freertos 新唐科技

中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是:(1)先响应优先级高的中断请求,再响应优先级低的中断请求。(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。(3)如果同级的多个中断请求同时出现

关键字: 中断优先级 先级处理

我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮放大看;)前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_P...

关键字: STM32 中断优先级

一、FreeRTOS中断设置介绍FreeRTOSConfig.h中定义了两个宏,分别是:configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORIT...

关键字: freertos STM32 中断优先级
关闭
关闭