STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯
基于上篇我们已经基本了解了软件界面和如何创建一个项目了
接着我们看如何利用外部按键来控制LED灯的亮灭,即外部中断。
(本文讲述的是外部中断控制led取反以及如何实现流水灯)
(如果想了解外部中断如何控制led流水灯,请看我另一篇文章,http://t.csdn.cn/8KryH)
- 点击RCC
- 2高速时钟(HSE)选择外部晶振
- 3 软件自动配置管脚
- 32的时钟树框图
- 如果不懂的话 也可以参考Z小旋的 《【STM32】系统时钟RCC详解(超详细,超全面)》https://blog.csdn.net/as480133937/article/details/98845509
GPIO初始化
LED:4个GPIO_OUTPUT (输出模式)
按键:2个GPIO_EXITx(外部中断模式)
配置完了之后我们要在NVIC中打开外部中断
编译,进入编译界面
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//外部中断回调函数
{if(GPIO_Pin==K1_Pin)//如果按键为K1(我们备注为K1){for(long i =1; i<72000;i++)//消抖{}if (HAL_GPIO_ReadPin(K1_GPIO_Port,K1_Pin)==1)//如果按键按下{HAL_GPIO_TogglePin(D1_GPIO_Port,D1_Pin);//取反函数 改变IO口高低电平}__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);//中断清理,防止影响下次按键}
}
这样我们就实现了按键一下就改变LED亮灭。
这时我们还想实现一下LED流水灯
配置SYS可编译,然后
配置各个引脚,第一个输出电平设为High,然后备注为D1,D2,D3,D4(自行定义,也可以不备注,主要为了便于记忆和引用)
因为要一直循环,所以要写在它系统生成的while里面。
HAL_GPIO_WritePin(GPIOE,D1_Pin,0);//写低电平,点亮第1个LEDHAL_Delay(1000);//延时1000毫秒HAL_GPIO_WritePin(GPIOE,GPIO_PIN_9,GPIO_PIN_SET);//灯灭,第二种写法//中间不延时,1灯灭�?2灯亮HAL_GPIO_WritePin(GPIOE,D2_Pin,0);//写低电平,点亮第二个LEDHAL_Delay(1000);//延时1000毫秒HAL_GPIO_WritePin(GPIOE,GPIO_PIN_11,GPIO_PIN_SET);//第二个灯亮HAL_GPIO_WritePin(GPIOE,D3_Pin,0);//写低电平,点亮第2个LEDHAL_Delay(1000);//延时1000毫秒HAL_GPIO_WritePin(GPIOE,GPIO_PIN_13,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOE,D4_Pin,0);HAL_Delay(1000);//延时1000毫秒HAL_GPIO_WritePin(GPIOE,GPIO_PIN_14,GPIO_PIN_SET);
这样就可以实现LED循环亮灭。
持续更新中...
STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯相关推荐
- CC2530基础实验:(2)外部中断控制LED亮灭
目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.中断相关的基础概念 2.CC2530 的中断系统 3.CC2530 的中断处理函数编写方法 4.CC2530 的外部中断 三.源码分析 前 ...
- [stm32] Start Tour-利用外部中断控制LED亮灭
如果觉得不错就点个赞吧~ 目录 一 元件相关 二 面包板上的连线 三 具体代码 传感器驱动代码(跟独立按键那个差不多) 中断函数代码(外部中断) main.c 四 最终效果 效果图: 一 元件相 ...
- 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪
定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...
- STM32之中断控制LED灯
STM32中断控制LED灯 一.中断 1. 中断地址 2. 中断优先级 3. 中断响应过程 二.新建工程 三.编写代码 四.运行结果 五.总结 参考 一.中断 在处理器中,中断是一个过程,即CPU在正 ...
- STM32中断控制LED灯亮灭
目录 一.中断介绍 1.中断分类 硬件中断(Hardware Interrupt) 软件中断(Software Interrupt) 2.中断优先级 3.中断源种类 4.中断响应原则 二.新建项目 1 ...
- STM32系统学习——EXTI(外部中断)
一. EXTI 简介 EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 20个中断/事件线.每个中断/事件线都对应有一个边沿检测 ...
- 用51单片机中断控制LED灯亮灭
用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...
- 【嵌入式】按键中断控制 LED 跑马灯实验
[嵌入式]按键中断控制 LED 跑马灯实验 1. 操作内容 2. 原理解释 2.1 实验箱按键电路 2.2 实验箱LED电路 2.3 寄存器说明 3. 操作步骤 3.1 编写键控制 LED 代码,将代 ...
- Arduino程序设计(二) 按键控制LED灯
按键控制LED灯程序设计 前言 一.按键控制LED灯--内部上拉(基础) 二.按键控制LED灯--外部上拉(基础) 三.按键控制LED灯(进阶) 总结 参考文献 前言 本文主要介绍三种按键控制LED灯 ...
最新文章
- c语言findnext递归扫描文件,C++用FindFirstFile、FindNext递归遍历硬盘的文件-Go语言中文社区...
- 整数行hdu 1244 Max Sum Plus Plus Plus(dp)
- Linux下xz与tar的区别
- 无限网络无限连接掉网的解决
- jedisPool.getResource()方法长时间无响应并且不报错
- 多线程 java 实例_Java多线程实例学习
- 常见的股票技术因子学习以及计算
- 大数据学习(06)-- 云数据库
- Collections常用方法总结
- Windows 技术篇-cmd命令查看系统启动时间、操作系统信息、内存使用情况、电脑配置信息
- html中span隐藏属性,span标签的class属性
- 吃了知乎月饼,成了「喷射战士」
- edcoder数据结构第1关:基于BF算法的病毒感染监测
- Designing Data-Intensive Application《数据密集型应用系统设计》笔记
- 【图书管理系统】附源码+教程
- SpringBoot——使用拦截器拦截未登录用户
- vue_按需引入elment、echarts和路由懒加载,减少打包体积
- PWNFEST黑客大会:苹果Safari与微软Edge浏览器均被攻破
- 如何去除discuz的powered by discuz!代码
- QSFP-DD封装有何优势?800G光模块是否会沿用QSFP-DD封装?