当前位置: 首页 > news >正文

STM32—按键控制LED(定时器)

目录

1 、 电路构成及原理图 

2 、编写实现代码 

main.c

exit.c

3、代码讲解

4、烧录到开发板调试、验证代码

5、检验效果 


此笔记基于朗峰 STM32F103 系列全集成开发板的记录。

1 、 电路构成及原理图 

EXTI(External interrupt/event controller)—外部中断/事件控制器,管理着控制器的  20  个中断/事件线并且每个中断/事件线都对应有一个边沿(上升沿/下降沿)检测器,可以实现输入信号的边沿检测。EXTI  可对每个中断/事件线进行单独配置,可以配置为中断或者事件,
以及触发事件的属性。STM32F103  的中断控制器支持  20 个外部中断/事件请求。

2 、编写实现代码 

main.c

exit.c

 

3、代码讲解

main

初始化 HAL 库、初始化系统时钟(72Mhz)、初始化 LED、初始化按键最后初始化按键的外部中断。 因控制逻辑写在了中断服务函数里,程序运行后有中断产生时就自动运行了,所以 main 函数里也就没有什么需要处理了。 

exit.c

先初始化产生中断的引脚 PC8 也就是 KEY1 引脚,因KEY1 的另一个引脚连接在低电平 GND 端所以选择下降沿触发(按下按键时 PC8 引脚会由高电平被拉到低电平),也是这个原因 PC8 选择上拉即平时没有按下 KEY1 时 PC8 是高电平状态。 

随后就要用 HAL 库函数 HAL_NVIC_SetPriority()设置中断的优先级别了,这里中断线我们选择 EXTI9_5 因前面介绍了中断线和中断服务 函 数 的 对 应 关 系 , 引 脚 PC8 对 应 的 中 断 服 务 函 数 是EXTI9_5_IRQHandler()。 

4、烧录到开发板调试、验证代码

5、检验效果 

按下 KEY1 看到LED1 亮起,再次按 KEY1 键 LED1 熄灭。_______________________________________________________________

STM32F103RCT6开发板——全集成开发板,让开发更简单!

【全集成设计】 STM32F103RCT6开发板,采用全集成设计,集成了多种传感器和接口,让你的原型设计和开发工作更加高效。

【资料全】 我们提供详尽的开发文档、示例代码和教程,无论你是初学者还是资深开发者,都能快速上手,轻松开发。

【功能强大】 这款开发板搭载了高性能的STM32F103RCT6微控制器,具备丰富的外设和接口,满足你的各种开发需求。

【接口丰富】 USB、串口、I2C、SPI等多种接口一应俱全,支持各种外设扩展,让你的创意无限延伸。

【开发便捷】 无论是嵌入式系统开发、物联网项目还是智能家居控制,STM32F103RCT6开发板都能成为你的强大助手。

相关文章:

  • 根据模板和git commit自动生成日·周·月·季报
  • ALSA 用例配置
  • Dokcer 基础使用 (4) 网络管理
  • C# 泛型函数
  • 毕业论文word常见问题
  • ElementUI中date-picker组件,怎么把大写月份改为阿拉伯数字月份(例如:一月、二月,改为1月、2月)
  • 【全开源】JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
  • 为Android组件化项目搭建Maven私服
  • 洛谷 P1253 扶苏的问题 题解 线段树
  • 爬虫案例:有道翻译python逆向
  • 【中间件系列】浅析redis是否适合做消息队列
  • dots_image 增强图像中的圆点特征
  • 逆波兰表达式
  • three.js官方案例(animation / multiple)webgl_animation_multiple.html学习笔记
  • Redisson分布式锁原理解析
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • CAP 一致性协议及应用解析
  • css系列之关于字体的事
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • jQuery(一)
  • js对象的深浅拷贝
  • Linux链接文件
  • spark本地环境的搭建到运行第一个spark程序
  • vue自定义指令实现v-tap插件
  • 分享几个不错的工具
  • 分享一份非常强势的Android面试题
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 回顾2016
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 智能合约Solidity教程-事件和日志(一)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • elasticsearch-head插件安装
  • ​【已解决】npm install​卡主不动的情况
  • ​如何在iOS手机上查看应用日志
  • (07)Hive——窗口函数详解
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (六)Hibernate的二级缓存
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)http协议
  • (转)JAVA中的堆栈
  • 、写入Shellcode到注册表上线
  • .bat文件调用java类的main方法
  • .gitattributes 文件
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET 中的轻量级线程安全
  • .NET4.0并行计算技术基础(1)
  • .NET企业级应用架构设计系列之应用服务器