当前位置:网站首页>以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外部中断,包括上升沿,下降沿,边沿的介绍以及什么是外部中断的回调函数。
边栏推荐
- 一个基于.Net Core跨平台小程序考试系统
- Day1 微信小程序-小程序代码的构成
- LeetCode 1894. Find the student number that needs to be supplemented with chalk
- LeetCode 292.Nim 游戏(简单)
- 我不喜欢我的代码
- IO stream【】【】【】
- PyTorch之训练技巧
- pytorch-09. Multi-classification problem
- [List Exercise] Traverse the collection and sort by price from low to high,
- Mini Program Study Notes: Communication between Mini Program Components
猜你喜欢
STM32单片机RGB红蓝调光植物补光系统红光蓝光PWM调色调节亮度
菜谱小程序源码免费分享【推荐】
STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光
Convolutional Neural Network (CNN) for Clothing Image Classification
pytorch-11.卷积神经网络(高级篇)
Day1 微信小程序-小程序代码的构成
开源免费WMS仓库管理系统【推荐】
51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
LeetCode 100. The same tree (simple)
Machine Learning - Clustering - Shopping Mall Customer Clustering
随机推荐
Bifrost micro synchronous database implementation services across the library data synchronization
51单片机智能蓝牙APP加油站火灾预警安防防控报警监控系统MQ2DHT11
.Net Core imports tens of millions of data to Mysql
Consensus calculation and incentive mechanism
Notes for RNN
Radon 变换原理和应用
win12 modify dns script
LeetCode refers to offer 10-I. Fibonacci sequence (simple)
Smart contracts and DAPP decentralized applications
pytorch-09.多分类问题
详解 Hough 变换(下)圆形检测
pytorch-08.加载数据集
51单片机智能远程遥控温控PWM电风扇系统红外遥控温度速度定时关机
力扣——统计只差一个字符的子串数目
LeetCode 1720. Decoding XORed Arrays (Simple)
大端以及小端以及读寄存器习惯
Chain Reading Good Article: Jeff Garzik Launches Web3 Production Company
STM32单片机OLED俄罗斯方块单片机小游戏
Notes for Netual Network
impdp import data