• stm32 中断


    配置中断之前

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

     比如第二个组:有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。
  • 相关阅读:
    binutils工具集之---objcopy,ranlib,size,strings,strip
    FreeRtos——多任务
    IntelliJ Idea 常用快捷键
    了解Spring-boot-starter常用依赖模块
    Spring Boot项目的内嵌容器
    Spring Boot 简介
    webstorm的个性化设置settings
    webstorm使用心得
    webstorm快捷键
    WebStorm使用快速入门
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12057007.html
Copyright © 2020-2023  润新知