当前位置:网站首页>以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断
2022-08-10 05:35:00 【Gerrard yue】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、前言
本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,对于STM32的外部中断进行详细的剖析。
提示:过程中会使用到的外部中断回调函数:当外部满足触发条件进入中断后,会调用该函数。
二、准备事项
2.1:板载资料
以stm32F103C6T6为核心的手工模块板
2.2:软硬件准备
a:STM32CubeMX 6.61
b:IAR集成开发环境(8.32以上版本)
c:STlink烧录工具
d:STM32F103C6T6手工模块板
2.3:电路分析

已KEY1为例,当按键处于未触发状态时按键一端为高电平一端接地,按键按下去时按键两端为低电平,因此当按键按下去是电平会有一个由高到低的变化。电平上升选上升沿,电平下降选下降沿,既有上升又有下降选择边沿。在3.4GPIO配置中会遇到。
2.4:代码调用
GPIO_InitStruct.Pin = GPIO_PIN_3; //外部中断PIN号
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; //外部中断下降沿触发
GPIO_InitStruct.Pull = GPIO_PULLUP; //开启上拉
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0);//设置中断优先级
HAL_NVIC_EnableIRQ(EXTI3_IRQn);//使能中断
//外部中断回调函数:当外部满足触发条件进入中断,会调用本函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_3)
{
index++;
}
}
//定义全局变量
uint32_t index=0;
三、CUBE MX配置
3.1:SYS配置
点击System Core-SYS-Debug,将默认的no debug改为Serial Wire(串行调试)
3.2:RCC配置
配置单片机外部的晶振作为时钟源 System Core-RCC-High Speed Clock 将默认的Disable选项改为Crystal/Ceramic Resonator
3.3:Clock Configuration配置
选择Clock Configuration时钟树,将默认的HSI改为HSE选项,意思是选择外部的时钟源
将主时钟源改为最大,点击回车确定,系统将自动配置相关外设参数
3.4:GPIO配置
在管脚配置中选择GPIO_EXTI3,并命名为KEY1
在GPIO mode中选择外部中断的触发方式,选择下降沿模式,配置内部上拉
在NVIC中打开使能中断,完成后点击生成代码
四、库函数的使用
在main.c中打开GPIO初始化代码
在user code begin后插入中断回调函数,其中变量index++记录触发次数,因此要先定义index变量
定义全局变量index
五、下载程序验证代码
下载程序后点击go全速运行,打开在线变量查看窗口live watch,将index拖入窗口
如果按下KEY1按键,index值发生变化则代表函数调用成功。实际操作按下按键后可以发现index值变为1.
总结
本文通过一个按键边沿触发中断实例讲解如何配置CubeMX实现EXIT外部中断,包括上升沿,下降沿,边沿的介绍以及什么是外部中断的回调函数。
边栏推荐
- 21天挑战杯MySQL-Day05
- Set Sources Resources and other folders in the IDEA project
- Convolutional Neural Network (CNN) for mnist handwritten digit recognition
- Chain Reading Recommendation: From Tiles to Generative NFTs
- STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光
- STM32单片机OLED俄罗斯方块单片机小游戏
- R语言聚类分析——代码解析
- 二维卷积定理的验证(上)
- pytorch-08.加载数据集
- LeetCode 100. The same tree (simple)
猜你喜欢
随机推荐
R语言聚类分析——代码解析
细说MySql索引原理
深度学习TensorFlow入门环境配置
pytorch-05.用pytorch实现线性回归
LeetCode 94.二叉树的中序遍历(简单)
51单片机室内环境甲醛PM2.5光照温度湿度检测及窗帘加湿消毒控制系统
Likou - Number of Provinces
[List Exercise] Traverse the collection and sort by price from low to high,
Smart contracts and DAPP decentralized applications
LeetCode 938.二叉搜索树的范围和(简单)
21天挑战杯MySQL——Day06
VTK 初步 (1) ----- 可视化管线
Notes for SVM
pytorch-10. Convolutional Neural Networks
LeetCode 94. Inorder Traversal of Binary Trees (Simple)
开源免费WMS仓库管理系统【推荐】
A little knowledge point every day
Reflection 【Notes】
LeetCode 162. Finding Peaks (Moderate)
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)









