码迷,mamicode.com
首页 > 其他好文 > 详细

stm32 中断

时间:2019-12-17 22:41:53      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:开始   http   使用   执行   group   ble   inf   作用   oid   

配置中断之前

要先设置一下优先级的分组,这个分组将会影响到你程序中的所有中断,并且这个分组不会再改

技术图片

 

 

 比如第二个组:有4个位,2个位是抢占优先级 另外2个位是响应优先级

 而2个位 能设置的数就只有0-3 所以可以设置抢占/相应优先级为0-3

 

然后说说抢占优先级和响应优先级

抢占优先级的作用:就是用来打断别人正在进行的程序。比如现在抢断优先级2的任务在执行,现在发生了一个抢断1的任务,那么前面的任务就会被打断。

响应优先级的作用:如果当前没有程序在运行,两个中断同时发生,如果抢占优先级相同,则先运行响应优先级高的程序

 

 

 

 


 

设置中断优先级分组:

void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)

函数参数填 NVIC_PRIORITYGROUP_0  1 2 3 4 

 

举个例子:

  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);

 

 

设置抢占优先级和响应优先级

void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)

 

举个例子:

HAL_NVIC_SetPriority(USART1_IRQn,3,3);            //抢占优先级3,子优先级3

 

使能中断通道:

void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)

 

 

最后我们总结一下中断优先级设置的步骤: 
①系统运行开始的时候设置中断分组。确定组号,也就是确定抢占优先级和响应优先级的分配位数。设置函数为 HAL_NVIC_PriorityGroupConfig。
  对于 HAL 库,在文件 stm32f7xx_hal.c内部定义函数 HAL_Init 中有调用 HAL_NVIC_PriorityGroupConfig 函数进行相关设置,
  所以我们只需要修改 HAL_Init 内部对中断优先级分组设置即可。 ②设置单个中断的中断优先级别和使能相应中断通道,使用到的函数函数主要为函数 HAL_NVIC_SetPriority 和函数 HAL_NVIC_EnableIRQ。

stm32 中断

标签:开始   http   使用   执行   group   ble   inf   作用   oid   

原文地址:https://www.cnblogs.com/qifeng1024/p/12057007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!