news 2026/4/16 9:08:46

[STM32C0] 【STM32C092RC 测评】+ 02 板载按键用作外部中断触发LED闪烁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32C0] 【STM32C092RC 测评】+ 02 板载按键用作外部中断触发LED闪烁

可配置的嵌套向量中断控制器与核心紧密耦合。它处理与非屏蔽中断(NMI)和屏蔽中断相关的物理线事件,以及 Cortex-M0+异常。它提供了灵活的优先级管理。
处理器核心与NVIC的紧密耦合显著减少了中断事件与相应中断服务例程(ISR)开始之间的延迟。ISR向量列在向量表中,存储在NVIC的基址中。要执行的ISR的向量地址由硬件从向量表基址和用作偏移的ISR顺序号构建。
如果较高优先级的中断事件发生时,较低优先级的中断事件正在等待处理,那么较晚到达的较高优先级中断事件将首先处理。另一个优化称为尾链。当从较高优先级的ISR返回时,然后开始处理未决的较低优先级ISR,则跳过不必要的处理器上下文解栈和上栈。这减少了延迟并有助于提高能效。
NVIC的特点:
低延迟中断处理4个优先级别处理不可屏蔽中断(NMI)处理32个可屏蔽中断线处理10个 Cortex-M0+异常后到达的高优先级中断先处理尾链
硬件中断向量检索
二:中断知识分享
扩展的中断/事件控制器增加了处理物理线事件的灵活性,并允许在处理器从停止模式唤醒时识别唤醒事件。
EXTI控制器有多个通道,其中一些具有上升沿、下降沿或上升沿和下降沿检测功能。任何GPIO和一些外围信号都可以连接到这些通道。
这些通道可以独立屏蔽。
EXTI控制器可以捕获比内部时钟周期短得多的脉冲。
EXTI控制器的寄存器即使在停止模式下也会锁定每个事件,这使得软件能够识别处理器从停止模式唤醒的源,或者识别导致中断的GPIO和边缘事件。
三:原理图如下所示:


可以看出:这里使用的是PC13引脚;
四:STM32cube MX 软件配置如下:


如上图所示:注意配置中断的触发模式:上升沿、下降沿或者是边沿触发,然后使能中断,并且配置中断13的优先级
五:软件代码编写:软件编写流程如下:
1:初始化IO口为输入。
2:开启IO口复用时钟。
3:设置IO口与中断线的映射关系。
4:初始化线上中断,设置触发条件等。
5:配置中断分组(NVIC),并使能中断。
6:编写中断服务函数。 清除中断标志位,HAL库自动处理,无需再添加用户代码

GPIO13配置位下降沿触发,初始化配置成上拉模式

复制

  1. GPIO_InitStruct.Pin = GPIO_PIN_13;
  2. GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  3. GPIO_InitStruct.Pull = GPIO_PULLUP;
  4. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

使能中断13的优先级

复制

  1. HAL_NVIC_SetPriority(EXTI4_15_IRQn, 3, 0);
  2. HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);

编写用户的中断处理函数:
使用下降沿回调函数如下所示:

复制

  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
  2. {
  3. if (GPIO_Pin == GPIO_PIN_13)
  4. {
  5. HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  6. HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
  7. }
  8. }

使用上升沿触发函数如下所示:

复制

  1. void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin);

然后再cube MX生成的代码中会自动处理中断函数;如下所示

复制

  1. void EXTI4_15_IRQHandler(void)
  2. {
  3. /* USER CODE BEGIN EXTI4_15_IRQn 0 */
  4. /* USER CODE END EXTI4_15_IRQn 0 */
  5. HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
  6. /* USER CODE BEGIN EXTI4_15_IRQn 1 */
  7. /* USER CODE END EXTI4_15_IRQn 1 */
  8. }

六:实物测试如下图所示:
试验现象:按下用户按键PC13,可以看到板载的LED灯,状态发生改变。


工程代码如下:

02_LED_exit.zip(5.71 MB, 下载次数: 1)



---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3453922-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:22:45

C# Lambda参数默认值设置全解析(资深架构师20年实战经验分享)

第一章:C# Lambda参数默认值设置的核心概念在C#中,Lambda表达式提供了一种简洁的语法来创建匿名函数,常用于LINQ查询、事件处理和委托调用等场景。然而,与普通方法不同,**Lambda表达式本身并不直接支持参数的默认值**。…

作者头像 李华
网站建设 2026/4/16 12:59:15

使用YOLOv8进行图像分割的完整指南(附GPU加速技巧)

使用YOLOv8进行图像分割的完整指南(附GPU加速技巧) 在智能摄像头、工业质检和自动驾驶系统日益普及的今天,如何快速实现高精度的图像分割,已成为许多开发团队面临的核心挑战。传统方法往往受限于复杂的环境配置、缓慢的训练速度以…

作者头像 李华
网站建设 2026/4/16 12:47:05

【C# 交错数组深度解析】:掌握二维集合表达式的5大高效技巧

第一章:C# 交错数组的基本概念与核心优势什么是交错数组 交错数组(Jagged Array)是C#中一种特殊的多维数组结构,它本质上是一个“数组的数组”。与矩形数组不同,交错数组的每一行可以拥有不同的长度,这使得…

作者头像 李华
网站建设 2026/4/16 10:59:21

AI辅助论文写作工具排行:9款平台实测,开题报告和降重功能卓越

AI写论文平台排名:9个实测,开题报告论文降重都好用 工具对比排名表格 工具名称 核心功能 突出优势 Aibiye 降AIGC率 适配高校规则,AI痕迹弱化 Aicheck 论文降重 速度快,保留专业术语 Askpaper 论文降重 逻辑完整性好 …

作者头像 李华
网站建设 2026/4/16 13:47:16

9大AI论文写作平台评测:开题报告与降重功能全解析

AI写论文平台排名:9个实测,开题报告论文降重都好用 工具对比排名表格 工具名称 核心功能 突出优势 Aibiye 降AIGC率 适配高校规则,AI痕迹弱化 Aicheck 论文降重 速度快,保留专业术语 Askpaper 论文降重 逻辑完整性好 …

作者头像 李华
网站建设 2026/4/16 11:06:30

【C#高级编程技巧】:揭秘using别名与元组类型适配的5大实战场景

第一章:C# using别名与元组类型适配概述在现代 C# 开发中,using 别名和元组类型的灵活使用显著提升了代码的可读性与维护性。通过为复杂类型定义简洁的别名,开发者能够简化命名空间引用和泛型声明;而元组则为轻量级数据聚合提供了…

作者头像 李华