Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【FAQ】全志XR806芯片 如何修改中断优先级?

    其它全志芯片讨论区
    xr806 xr872 faq 技术支持
    1
    1
    1440
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 9 last edited by

      1.问题背景
      XR809/XR871/XR808/XR872上如何修改中断的优先级。

      2.问题描述
      很多模块都会使用到中断,但中断的优先级在模块的初始化或者在使能中断时就设定了,那么如何修改中断的优先级呢?

      3.解决办法

      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  --->   优先级,根据具体所需进行填写,数字越小优先级越低
      
      1 Reply Last reply Reply Quote Share 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策