1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
XR809/XR871/XR808/XR872上如何修改中断的优先级?
很多模块都会使用到中断,但中断的优先级在模块的初始化或者在使能中断时就设定了,那么如何修改中断的优先级呢? |
|
相关推荐
1个回答
|
|
解决办法
3.1 中断是如何设定优先级的 中断的优先级是在下面这个函数设定的,每个带中断的模块都会调用到这个函数 HAL_NVIC_ConfigExtIRQ(GPADC_IRQn, GPADC_IRQHandler, NVIC_PERIPH_PRIO_DEFAULT);(第二个参数代表的是优先级) 这个HAL_NVIC_ConfigExtIRQ会调用到HAL_NVIC_SetPriority函数 HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)函数的2个参数分别是中断类型以及中断优先级。 最终是HAL_NVIC_SetPriority进行了中断优先级的设定的。 3.2如何设定中断优先级 (1).本来修改模块的优先级通过修改这个模块的HAL_NVIC_ConfigExtIRQ函数即可,但大部分模块的初始化函数都已经rom化了,直接修改rom化的初始化函数是无法生效的。 (2).所以首先我们需要找到模块中哪里调用了HAL_NVIC_ConfigExtIRQ函数,然后在应用层代码中添加HAL_NVIC_SetPriority函数重新设定优先级 例如: GPIO模块在HAL_GPIO_EnableIRQ模块中调用到了HAL_NVIC_ConfigExtIRQ函数,那么需在上层应用代码中再次调用HAL_NVIC_SetPriority 函数来进行重新设定中断的优先级 HAL_GPIO_EnableIRQ ---> 这个接口里面的代码已经rom化,不能进行优先级设定HAL_NVIC_SetPriority ---> 重新设定优先级,覆盖HAL_GPIO_EnableIRQ函数里设定的默认值 ADC模块在HAL_ADC_Init模块中调用到了HAL_NVIC_ConfigExtIRQ函数,那么需在上层应用代码中再次调用HAL_NVIC_SetPriority 函数来进行重新设定中断的优先级 HAL_ADC_Init ---> 这个接口里面的代码已经rom化,不能进行优先级设定HAL_NVIC_SetPriority ---> 重新设定优先级,覆盖HAL_ADC_Init函数里设定的默认值 (3).需要注意HAL_NVIC_SetPriority函数的2个参数 void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) IRQn_Type IRQn ---> 中断类型,在应用层需要根据具体的模块进行填写,例如GPIO需要填GPIOA_IRQn/GPIOB_IRQn,ADC需要填GPADC_IRQn uint32_t priority ---> 优先级,根据具体所需进行填写,数字越小优先级越低 |
|
|
|
只有小组成员才能发言,加入小组>>
445 浏览 0 评论
582 浏览 0 评论
708 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发
1375 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
737 浏览 0 评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
91780浏览 3评论
2834浏览 1评论
5107浏览 1评论
Yuzuki Lizard 全志V851S开发板 –移植 QT5.12.9教程
16390浏览 1评论
关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案
1124浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 23:57 , Processed in 0.602968 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号