CH573-03-外部中断——RISC-V内核BLE MCU快速开发教程

文章介绍了如何使用CH573芯片的中断功能来控制LED。首先,阐述了CH573芯片的中断模式和睡眠唤醒特性,然后详细步骤创建了一个基于中断的按键工程,包括中断初始化、中断函数的编写以及在main函数中的应用。在中断初始化中,配置了PB4引脚为按键中断,下降沿触发,并在中断处理函数中实现了LED的翻转。最后,文章提到了编译、烧录和测试过程,以及可能出现的问题和解决途径。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1. 中断模式

  CH573芯片的所有 I/O 管脚都具有中断功能,并可实现睡眠唤醒。为了使用外部中断,端口位必须配置成输入模式。并提供 4 种触发模式:高电平、低电平、上升沿、下降沿。
(位于CH57x_gpio.h文件中)
在这里插入图片描述

2. 创建工程

  复制粘贴上一节的按键工程,并命名为:CH573F-03-interrupt

在这里插入图片描述

3. 中断初始化与中断函数

   在这里我们将外部中断配置为按键的一种,在上一节的key.h和key.c中完成补充

   1) 补充按键定义,定义PB4为外部中断触发按键引脚

#define KEY3_PIN     GPIO_Pin_4

在这里插入图片描述

   2) 中断初始化

      在key.h中声明按键初始化函数void KEY_interrupt_init(void);

void KEY_interrupt_init(void);

在这里插入图片描述

      在key.c中补充函数KEY_interrupt_init的实体:

/*
 * 函数名:KEY_interrupt_init
 * 参数:无
 * 返回值:无
 * 功能说明:按键中断初始化
 */
void KEY_interrupt_init(void)
{
    GPIOB_ModeCfg(KEY3_PIN, GPIO_ModeIN_PU);       //KEY3_PIN设置为上拉输入
    GPIOB_ITModeCfg(KEY3_PIN,GPIO_ITMode_FallEdge);//KEY3_PIN下降沿触发中断
    PFIC_EnableIRQ(GPIO_B_IRQn);                   //使能GPIOB端口中断

}

   3) 重写中断函数

      在main.c文件中重写中断函数

//设置外部中断相关函数属性,指定声明相关特征
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
/*
 * 函数名:GPIOB_IRQHandler
 * 参数:无
 * 返回值:无
 * 功能说明:GPIOB端口的中断处理函数
 */
void GPIOB_IRQHandler(void)
{
    //判断GPIOB端口的中断标志
    if(GPIOB_ReadITFlagBit(KEY3_PIN))
    {
        LED_Toggle();
    }
    //清空中断标志位
    GPIOB_ClearITFlagBit(KEY3_PIN);
}

4. main函数

/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    LED_init();//LED初始化
    KEY_init();//按键初始化
    KEY_interrupt_init();   //中断初始化
    while(1)
    {
        DelayMs(50);
    }
}

5. 编译烧录运行

   编译无错误无警告并生成hex文件后,使用WCH单片机编程工具完成程序下载。
在这里插入图片描述
   实验现象:
    将PB4引脚接入一个按键,并将按键的导通引脚接到GND上,快速按下(未消抖)按键观察LED现象;或者接将PB4引脚通过杜邦线连接GND,做插拔来模拟按键;此时LED会出现翻转变化。


    如果按键中断控制LED正常,即达到本实验的目的,如果异常(按键消抖的问题属正常现象),请检查源代码,如有疑问,可关注公众号 “IOT趣制作”,将您遇到的问题描述出来,平台收到您的留言后会第一时间进行解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT趣制作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值