携程|嵌入式开发:配置中断控制器的10个轻松步骤

携程|嵌入式开发:配置中断控制器的10个轻松步骤

文章图片

携程|嵌入式开发:配置中断控制器的10个轻松步骤

文章图片

携程|嵌入式开发:配置中断控制器的10个轻松步骤

文章图片

携程|嵌入式开发:配置中断控制器的10个轻松步骤

文章图片


在微控制器上正确设置中断并不容易 , 工程师在其职业生涯中设置中断的次数似乎并没有什么不同 。 配置中断总是隐藏一些问题 , 让嵌入式开发人员摸不着头脑 , 在晦涩难懂的数据表或在线代码片段中寻找答案 。 值得庆幸的是 , 可以遵循10个步骤来缓解这些痛苦 , 并允许开发人员在第一次尝试时配置中断 。


步骤 1 – 配置GPIO引脚
在GPIO引脚上触发的外部中断始终是最糟糕的设置中断 。 外部中断和内部中断之间的唯一区别是需要设置GPIO 。 配置GPIO本身有许多步骤 。 首先 , 启用GPIO 时钟 , 其次 , 将GPIO配置为输入 。 根据硬件 , 这可能还需要在GPIO外设上配置内部上拉电阻 。 图1显示了如何在 STM32Nucleo 板上完成此操作的示例 。

图 1 – 配置GPIO引脚
步骤 2 – 禁用中断
一旦配置了GPIO引脚 , 就该开始关注实际的中断配置了 。 在做任何事情之前 , 开发人员应该首先禁用所有中断 。 这确保了在设置过程中 , 部分配置的中断不会意外触发并使系统陷入混乱和未知状态 。
步骤 3 – 清除中断标志现在禁用中断 , 开发人员不再需要担心设置过程被中断 。 但是 , 由于系统的启动状态 , 在设置过程之前可能存在未决的中断 。 清除中断标志可以确保一旦中断控制器被配置和启用 , 系统不会立即跳转到旧的和过期的中断请求 。
【携程|嵌入式开发:配置中断控制器的10个轻松步骤】步骤 4 – 将引脚连接到中断线
GPIO引脚配置为输入并准备就绪 , 但目前它没有在内部连接到任何东西 。 为了触发中断 , 嵌入式开发人员需要将该GPIO引脚连接到中断控制器 。 每个微控制器以略微不同的方式执行此操作 。 对于ARM微控制器 , 这是使用系统配置外设 EXTICFG 寄存器完成的 。 这需要额外的步骤来打开系统配置外设的时钟 。 图 4 显示了如何为STM32Nucleo板的GPIO C13上的按钮完成此操作的示例 。

图 2 – 将GPIO连接到中断控制器
步骤 5 – 设置触发极性
中断控制器现在已连接到GPIO引脚 , 但控制器不知道实际应该触发中断的内容 。 现代微控制器有许多不同的选择 。 中断可以是电平触发和边沿触发 , 例如上升或下降 。 触发设置将高度依赖于应用程序 。 对于STM32 Nucleo板 , GPIO有一个上拉电阻 , 可将输入保持在逻辑1 , 除非按下按钮 。 中断控制器可以设置为在上升沿和下降沿触发 。 图3显示了如何禁用上升沿触发和启用下降沿触发 。

图 3 – 设置下降沿触发
步骤 6 – 设置中断优先级
现代中断控制器不是简单直接的外围设备 。 中断控制器提供了广泛的特性和功能 , 开发人员可以利用这些特性和功能并针对他们自己的特定应用进行调整 。 一个中断控制器可以有多达256个不同的中断!如果两个或多个中断同时触发 , 控制器需要知道应该首先处理哪个中断 。 设置中断优先级可以是一个简单的练习 , 只需设置中断控制器中的优先级位 。 图4中显示了一个使用ARM CMSIS规范的示例 。