MG32F10x Standard Peripherals Firmware Library
NVIC IRQ Mask example
  *************** (C) COPYRIGHT 2020 - 2023 megawin Technology ***************
  * @file    NVIC/NVIC_IRQ_Mask/readme.txt 
  * @author  megawin Application Team
  * @version V0.1.10
  * @date    05-January-2023
  * @brief   Description of the NVIC IRQ Mask example.
  ******************************************************************************
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, MEGAWIN SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM
  * THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  ******************************************************************************
例程描述

本例演示了嵌套矢量中断控制器(NVIC)IRQ通道配置的使用,以及如何屏蔽/激活不同的IRQ:
系统时钟工作在96Mhz,通过PLL配置产生。PLL时钟源是外部8Mhz晶振。APB1的分频比是1,APB2的分频比是1。
-配置3个TIM(TIM2..TIM4)计时器,在每个计数器更新事件上生成中断。
-这三个计时器链接到相应的IRQ更新通道。
-分配每个IRQ通道的上升IRQ优先级:
-TIM2的优先权为0。
-TIM3的优先权为1。
-TIM4的优先权为2。
-在每个中断程序中:
-TIM2切换PA8
-TIM3切换PA9
-TIM4切换PA10
-按键和唤醒按钮用于提高执行优先级,如下所示:
-按键在GPIO模式下使用,每次按键时,执行优先级提升至0并打开LED。这可以防止所有具有可配置优先级的异常激活,而不是通过硬故障升级机制激活。
因此,PA8,PA9,PA10停止切换,因为TIM2、TIM3和TIM4 IRQ被阻止激活。
再次按下按键将释放优先级提升,关闭LED2,并允许激活所有具有可配置优先级的异常,再次生成TIM2、TIM3和TIM4,GPIO重新启动切换。
此执行优先级是使用CMSIS函数“__disable_irq()”和“__enable_irq()”实现的。这两个功能是管理Cortex-M3 Primask专用寄存器。
-唤醒按钮在EXTI模式下使用,每次按下唤醒按钮时,使用BASEPRI寄存器将执行优先级屏蔽为0x40。
当BASEPRI定义的优先级与当前执行优先级相同或更高时,非零值将充当优先级掩码,影响执行优先级。
因此,PA9和PA10停止切换,因为TIM3_IRQ和TIM4_IRQ无法激活。
再次按下唤醒按钮将把BASEPRI寄存器配置为0,因此对当前优先级没有影响,可以再次生成TIM3和TIM4,并重新启动PA9和PA10切换。
此执行优先级是使用CMSIS函数“__set_rasepri()”设置的。
此功能用于管理Cortex-M3 BASEPRI专用寄存器。
当使用“__disable_irq()”函数将执行优先级提升为0时,设置BASEPRI寄存器无效。

目录内容
  • NVIC/NVIC_IRQ_Mask/NVIC_IRQ_Mask.uvprojx MDK5工程文件
  • NVIC/NVIC_IRQ_Mask/NVIC_IRQ_Mask.uvoptx MDK5工程配置文件
  • NVIC/NVIC_IRQ_Mask/JLinkSettings.ini Jlink配置文件
  • NVIC/NVIC_IRQ_Mask/main.c 主程序
硬件和软件环境
  • 硬件平台搭建
    • HSE 连接外部8MHz晶振
    • 管脚连接如下:
      • PA8 管脚连接到示波器
      • PA9 管脚连接到示波器
      • PA10 管脚连接到示波器
      • PB11 管脚连接到LED2
      • PA0 管脚连接到WakeUp按键(KEY1)
      • PA1 管脚连接到KEY2
如何使用?

为了使程序工作,您必须执行以下操作 :

  • 使用 MDK5 打开此例程文件夹中的 NVIC_IRQ_Mask.uvprojx 工程
  • 重新编译该工程并下载到目标存储器中
  • 运行此例程

    © COPYRIGHT 2020 - 2023 megawin Technology