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