10个止痛项配置中断控制器

正确设置微控制器上的中断并不容易。工程师在他们的职业生涯中断中断的次数似乎没有差异。配置中断始终存在一些隐藏的遗漏,使开发人员刮掉他们的头部并在晦涩的数据表或在线代码片段中寻找答案。值得庆幸的是,可以遵循10个步骤,以缓解这些痛苦的设置会话,并允许开发人员在第一次尝试时配置中断。

要遵循,请随时下载位于Keil Arm-MDK的STM32 Nucleo-L053R8的代码示例 http://www.dbtgy.com/design-news-cec-mastering-the-arm-cortex-m-processor/ 。滚动到课程资源下的页面底部并下载课程源代码。练习4 Button.c模块具有关联的C代码。

步骤#1 - 配置GPIO引脚

外部中断在GPIO引脚上触发的外部中断始终是设置的最糟糕的中断。外部中断与内部中断之间的唯一区别是需要设置Pesky GPIO。配置GPIO具有许多步骤。首先,启用GPIO时钟。其次,将GPIO配置为输入。根据硬件,这也可能需要在GPIO外围设备上配置内部上拉电阻。图1中可以看出如何在STM32NUCLOCO板上完成这一点的示例。

图1 - 配置GPIO引脚

步骤#2 - 禁用中断

一旦GPIO引脚配置,就是开始关注实际中断配置的时间。在做任何事情之前,开发人员应该首先禁用所有中断。这可确保在设置过程中,部分配置的中断不会意外地射击并将系统扔进混沌和未知状态。

 

步#3 - 清除中断标志

随着中断现在禁用开发人员不再需要担心设置过程中断。然而,由于系统的启动状态,在设置过程之前可能会在待处理过程中断。清除中断标志确保配置中断控制器配置并启用后,系统不会立即跳转到旧的和过期的中断请求。

 

步骤#4 - 将引脚连接到中断线

GPIO引脚配置为输入并准备好,但目前它在内部连接到任何内容时。为了触发中断,开发人员需要将该GPIO引脚连接到中断控制器。每个微控制器以略微不同的方式执行此操作。对于ARM微控制器,这是使用系统配置外设EXTICFG寄存器完成的。这需要额外的步骤达到系统配置外设的时钟。图4显示了如何为位于STM32核磁板的GPIO C13上的按钮完成的示例。

图2 - 将GPIO连接到中断控制器

 

步骤#5 - 设置触发极性

中断控制器现在连接到GPIO引脚,但控制器不知道实际触发中断应该是什么。现代微控制器有许多不同的选择。中断可以是触发的水平和边缘触发,例如上升或下降。触发设置将高度依赖于应用程序。对于STM32 Nucleo板,GPIO有一个上拉,除非按下按钮,否则将在逻辑1处保持输入。可以设置中断控制器以触发上升沿和下降沿。图3显示了如何禁用上升沿触发器,并且启用下降沿触发器。

图3 - 设置下降沿触发器

 

步骤#6 - 设置中断优先级

现代中断控制器不是简单的简单外围设备。中断控制器提供了广泛的特征和功能,开发人员可以利用和调整自己的特定应用程序。中断控制器可以具有多达256个不同的中断!如果两个或多个中断火灾同时,控制器需要知道应该首先处理哪个中断。设置中断优先级可以是仅在中断控制器中设置优先级位的简单练习。可以在图4中看到使用ARM CMSI规范的示例。

图4 - 设置中断优先级

步骤#7 - 启用中断

启用中断通常是两步过程。第一步是检查中断寄存器并揭示系统使用的中断。取消屏蔽中断允许中断控制器触发特定中断时响应。然后第二步是为了实现实际中断。再次启用中断,可以从微控制器到微控制器的变化,因此有必要打开数据表并密切检查。图5示出了通过首先取消揭示中断,然后使用CMSI来使能够使得与GPIO C13相关联的中断线来实现STM32 NUCLUCO板上的GPIO C13的示例。

图5 - 启用中断

 

步骤#8 - 创建中断处理程序

现在配置中断控制器!只有一个问题,当发生中断时,没有中断处理程序来响应中断。下一个逻辑步骤是创建一个中断处理程序。有许多方法可以根据架构而且还可以在编译器和IDE上完成。指定函数是中断通常使用#pragma或类似类型的编译器内在。在ARM平台上开发时,开发人员只需查看中断列表并创建匹配预先指定的处理程序的函数。图6显示了如何检查GPIO C13的中断处理程序的示例。

图6 - 空中断处理程序

步骤#9 - 处理程序中的清除中断标志

大多数微控制器要求中断处理程序中的开发人员手动清除中断标志。在特殊情况下,中断标志被自动清除,但应参考微控制器的数据表以确定哪些中断行为这种方式。 GPIO中断通常作为块射击,并且在进入中断时,需要执行简单的检查,以确定哪些GPIO线导致中断。然后可以清除相应的标志。图7显示了如何完成。

图7 - 处理程序中的清除中断标志

步骤#10 - 测试和调试

最后完成所有这些步骤后,开发人员现在可以测试其代码。它非常不可能,固件将在第一次尝试时正确运行,但在这些步骤中遵循每个步骤,在中断并正确运行之前只需要进行微小的调整。

一个想法“10个止痛项配置中断控制器”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.