实现了 IRQ 中断服务函数的汇编部分以后,接下来我们要使用C代码实现IRQ中断服务函数的具体逻辑,主要包含初始化和中断处理两部分。
- 全局中断初始化(全局中断使能、IRQ中断使能)
- 具体中断处理逻辑实现
我们这里的中断是由按键产生的,那我们要打开的就是按键引脚所关联的中断。
目录
一、外设引脚分析
按键是对应的引脚是 UART1_CTS,我们需要将其复用为GPIO功能,我们找到 UART1 CTSB会发现,该引脚可以复用为 GPIO1_IO18

因此,要打开 GPIO1 的中断,就需要知道GPIO1 对应的中断ID。GPIO1_IO18 对应的中断ID就是67 + 32 = 99。注意还需要加上固有中断 SGI 和 PPI(一共32个)。

二、外设中断初始化
1、基本流程
外设中断初始化的整体流程如下,该过程中可能会用到如下寄存器:
- GPIO1_ICR2 —— 配置中断的触发模式,也可以直接设置 GPIOx_EDGE_SEL 寄存器
- GPIO1_IMR —— 设置 GPIO1 某个引脚中断使能
- GPIO_ISR —— 中断状态寄存器,记录中断的发生状态(处理完中断以后,要对中断相应的bit位 置为1)
<
C语言实现GPIO中断服务函数配置教程

本文详细介绍了如何使用C代码实现基于GPIO的中断服务函数,包括初始化全局中断、使能GPIO中断、设置中断触发方式以及注册中断服务函数。以按键中断为例,讲解了如何配置GPIO1_IO18为下降沿触发,并在按键按下时切换LED灯状态。最后给出了按键中断的初始化函数和中断服务函数的关键代码。
最低0.47元/天 解锁文章
440

被折叠的 条评论
为什么被折叠?



