企业网站建设要多少,中山网站建设中山,网站开发哪个公司好,沈阳正规制作网站公司四、FreeRTOS中断管理
中断的概念不再过多叙述#xff0c;学习过逻辑的都知道
中断的执行过程
中断请求 外设产生中断请求#xff08;GPIO外部中断、定时器中断等#xff09;响应中断 CPU停止执行当前程序#xff0c;转而去执行中断处理程序#xff08;ISR#xff09;…四、FreeRTOS中断管理
中断的概念不再过多叙述学习过逻辑的都知道
中断的执行过程
中断请求 外设产生中断请求GPIO外部中断、定时器中断等响应中断 CPU停止执行当前程序转而去执行中断处理程序ISR退出中断 执行完毕返回被打断的程序处继续往下执行
中断的优先级分组 ARM Cortex-M 使用了 8 位宽的寄存器来配置中断的优先等级 stm32只用了中断优先级配置寄存器的高4位 [7 : 4]四位最多16级中断优先级 STM32 的中断优先级可以分为抢占优先级和子优先级分为两类优先级 抢占优先级 抢占优先级高的中断可以打断正在执行但抢占优先级低的中断子优先级当同时发生具有相同抢占优先级的两个中断时子优先级数值小的优先执行 中断优先级数值越小越优先 设置中断优先级分组 共4位所以只有这5种分组方式 在Hal库中通过调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4即可完成设置HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4在在HAL_Init()调用 中断优先级分组特点 只有低于configMAX_SYSCALL_INTERRUPT_PRIORITY优先级的中断里才允许调用FreeRTOS 的API函数建议将所有优先级位指定为抢占优先级位方便FreeRTOS管理调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)中断优先级数值越小越优先任务优先级数值越大越优先 中断相关的寄存器 SHPR1寄存器地址0xE000ED18SHPR2寄存器地址0xE000ED1CSHPR3寄存器地址0xE000ED20 FreeRTOS配置PendSV和Systick中断优先级 中断屏蔽寄存器 FreeRTOS所使用的中断管理就是利用的BASEPRI这个寄存器BASEPRI屏蔽优先级低于某一个阈值的中断BASEPRI设置为0x50代表中断优先级在515内的均被屏蔽04的中断优先级正常执行BASEPRI屏蔽优先级低于某一个阈值的中断当设置为0时则不关闭任何中断 中断优先级在5 ~ 15的全部被关闭 当BASEPRI设置为0x50时 在中断服务函数中调度FreeRTOS的API函数需注意
中断服务函数的优先级需在FreeRTOS所管理的范围内在中断服务函数里边需调用FreeRTOS的API函数必须使用带“FromISR”后缀的函数
*设置为0x50代表中断优先级在515内的均被屏蔽04的中断优先级正常执行 BASEPRI屏蔽优先级低于某一个阈值的中断当设置为0时则不关闭任何中断 中断优先级在5 ~ 15的全部被关闭 当BASEPRI设置为0x50时
[外链图片转存中…(img-h5ZWihIx-1698820880665)]
在中断服务函数中调度FreeRTOS的API函数需注意
中断服务函数的优先级需在FreeRTOS所管理的范围内在中断服务函数里边需调用FreeRTOS的API函数必须使用带“FromISR”后缀的函数