电子产业一站式赋能平台

PCB联盟网

搜索
查看: 58|回复: 0
收起左侧

什么是中断处理函数(IRQHandler)的标准流程?

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

积分
2891
发表于 2021-7-3 15:02:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是以i.MXRT的GPIO模块为例谈谈中断处理函数(IRQHandler)的标准流程' S9 W) k& s; ^+ W) I
在痞子衡旧文 《串口(UART)自动波特率识别程序设计与实现(中断)》里,我们利用了 GPIO 模块内部集成的 I/O 边沿检测功能完成了 RXD 信号下降沿的捕捉,这里涉及到了 GPIO 中断处理函数。中断处理函数 IRQHandler 是嵌入式里非常特殊的一类函数,它们是嵌入式系统能够实时完成任务的关键所在,任何一个中断处理函数都需要被谨慎对待。
# O, i6 u, R" F1 @" N* a上面那篇旧文里,痞子衡写的 GPIO 中断处理函数其实是有一点瑕疵的,虽然不影响最终波特率识别功能,但其并不是标准流程写法。今天痞子衡就和大家聊一聊什么是中断处理函数的标准流程:1 M3 w, L% _% n7 m" D3 t
一、GPIO模块中断简介GPIO 基本上可以说是 MCU 里最入门级的外设了,我们先来简单看一下 i.MXRT1011 里 GPIO 模块功能。) B, k8 B5 `+ c7 m4 R; E( q
1.1 GPIO 一般设计i.MXRT 里每组 GPIO 最大包含 32 个 Pin,正好对应 32bit 寄存器,下面是 GPIO 三大基础寄存器:% [. x4 u/ s" M9 y5 Q0 @% j9 g$ n
GDIR[31:0] - 配置 Pin 的输入/输出方向(仅当 IOMUXC 里配置为 GPIO 模式)
$ I9 Y- v. w1 `& Z7 b+ _- jDR[31:0]   - 设置 Pin 输出电平$ J# {2 A9 M) ]! |3 O" b6 V
PSR[31:0]  - 保存 Pin 输入电平(以 ipg_clk_s 时钟来采样)
; q0 n+ ]$ b( q- U  W操作上述 GPIO 外设寄存器的前提条件是在 IOMUXC 模块里已将 Pin 功能模式配为 GPIO (因为每个 Pin 可能被多种外设UART/Timer等复用)。比如文章开头提及的那篇旧文里我们用于波特率检测的 GPIO_09 引脚,它有如下八种复用功能,其中 Alt5 功能是 GPIO。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表