当前位置:网站首页>以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操作Excel高效低内存的开源框架 - MiniExcel
- 【从零设计 LaTex 模板】1. 一些基础知识
- STM32单片机RGB红蓝调光植物补光系统红光蓝光PWM调色调节亮度
- A little knowledge point every day
- pytorch-05. Implementing linear regression with pytorch
- pytorch-10.卷积神经网络
- Deep learning TensorFlow entry environment configuration
- Collection Map
- LeetCode 1894. Find the student number that needs to be supplemented with chalk
- cesium rotate image
猜你喜欢
LeetCode 938.二叉搜索树的范围和(简单)
.Net Core imports tens of millions of data to Mysql
基于 .NET Core MVC 的权限管理系统
The way for programmers to make money from a sideline business and increase their monthly income by 20K
LeetCode 162. Finding Peaks (Moderate)
2022李宏毅机器学习hw1--COVID-19 Cases Prediction
LeetCode 938. Range Sum of Binary Search Trees (Simple)
STM32单片机OLED经典2048游戏单片机小游戏
二维卷积定理的验证(下,cv2.filter2D())
pytorch-10. Convolutional Neural Networks (homework)
随机推荐
Collection set interface
集合 Map
.Net Core imports tens of millions of data to Mysql
I don't like my code
Decentralized and p2p networks and traditional communications with centralization at the core
Notes for SVM
Set Sources Resources and other folders in the IDEA project
Day1 微信小程序-小程序代码的构成
PyTorch之模型定义
深度学习TensorFlow入门环境配置
LeetCode refers to offer 10-I. Fibonacci sequence (simple)
LeetCode 面试题17.14 最小k个数(中等)
详解 Hough 变换(上)基本原理与直线检测
LeetCode 94.二叉树的中序遍历(简单)
pytorch-09.多分类问题
LeetCode 162. Finding Peaks (Moderate)
21天挑战杯MySQL——Day06
优先队列
51单片机教室人数进出统计检测数码管显示装置红外传感器
细说MySql索引原理