本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。
中断
中断分为内部中断和外部中断
外部中断是由外部设备(如按键、传感器、通信接口等)产生的中断请求信号,需要通过中断控制器进行处理。
通常情况下,外部中断是通过中断输入引脚连接到中断控制器,由中断控制器检测到外部中断请求,然后触发相应的中断服务程序进行处理。
内部中断是由处理器内部产生的中断请求信号,通常是由串口、定时器、DMA控制器、系统时钟等硬件设备产生的中断请求,需要通过中断控制器进行处理。
与外部中断不同的是,内部中断不需要外部设备的触发,而是由硬件设备自身产生中断请求,由中断控制器检测到并触发相应的中断服务程序进行处理。
硬件触发中断示例
使用外部中断来检测 PA0 的电平变化。代码如下:
#include "gd32f4xx.h"
#include "systick.h"
#include "ExtendedUSART.h"
// 核心板 PA0 引脚触发中断的配置
void EXTI0_config() {
// PA0
rcu_periph_clock_enable(RCU_GPIOA);
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
// SYSCFG
rcu_periph_clock_enable(RCU_SYSCFG);
syscf