STM32定时器TIM实现跑马灯以及按键暂停(外部中断)固件库编程流水灯...

STM32定时器TIM实现跑马灯以及按键暂停(外部中断)固件
路灯开关
库编程流⽔灯
⽬录
项⽬要求玻璃瓶网
先看看具体要求:
流⽔灯的设计:
基础部分:
利⽤GPIO的四个引脚控制四个发光⼆极管,第⼀个灯亮过2秒之后,延时2秒,第⼆个亮,以此类推,当第四个亮过之后就让四个⼆极管全亮,保持2秒,然后不断循环。
提⾼部分:
利⽤GPIO⼝的⼀个管脚作为⼀个按键信号输⼊,其作⽤是启动流⽔灯的开始和停⽌。(第⼀次按启动,第⼆次停⽌,第三次启动,以此类推)链路层劫持
①使⽤定时器TIM实现跑马灯
无人机防御系统②使⽤外部中断来实现按键按下暂停
③在暂停的时候考虑原状态
实现流程
硬件
原理图很简单,拥有⼀块STM32F103C8T6最⼩系统板后,只需画⼀个简易的PCB来代替⾯包板即可,具体原理图如下:
最左边是STM32的核⼼板,根据买到的核⼼板进⾏符号和封装的绘制,封装只需根据具体⼤⼩画上轮廓以及焊盘,之后打出PCB后焊上排母就可以插上系统板了如下图:
原理图的中间部分就是5个LED灯,所有的LED是共阳的,⼀开始对LED的接法有些迷惑,认为LED导通后内阻极⼩,⽆论内阻接到左边还是右边,如果GPIO输出的是低电平,LED两端的电压都为0。但实际上不是这样的,实际上没导通时LED为断路,VCC的3.3V全部加在了LED两端,⽽导通后只需要电流在⼀定范围内即可。所以只需要计算限流电阻的⼤⼩,查看淘宝资料发现蓝⾊LED的⼯作电压为2.2-
2.4V,我们假定为2.3V,需要达到10mA的电流,不难算出限流电阻⼤⼩为1K欧姆。
原理图的右侧是按键部分,按键有4个引脚,左右两边(1、2和3、4)分别接在了⼀起,按照上图接法,当按键没有按下时,PA6与VCC 连接,为⾼电平;当按键按下时,四个引脚接在了⼀起,此时PA6为低电平,就可以分清按键的两种状态了。
画完原理图后绘制PCB:
实物图如下,焊上LED、按键、排母后插上最⼩系统板:
软件
代码结构
软件代码结构如下图,⾸先是⼏个GROUP,STARTUP存放启动⽂件,CMSIS放内核和系统⽂件,FWLIB存放固件库⽂件,USER中存放main⽂件和中断⽂件,HARDWARE中存放LED以及中断按键的预定义⽅法,SYSTEM中存放定时器以及系统的预定义⽅法。
跑马灯
⾸先是最基本的定时器跑马灯,定义LED板级⽀持包:
bsp_led.h:对所有led的端⼝进⾏定义,声明⼀个流⽔灯函数LED_RUN()。
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
/* 定义LED连接的GPIO端⼝, ⽤户只需要修改下⾯的代码即可改变控制的LED引脚 */
#define LED_GPIO_CLK      RCC_APB2Periph_GPIOA  /* GPIO端⼝时钟 */
验光组合
#define LED1_GPIO_PORT    GPIOA                //led1
#define LED1_GPIO_PIN  GPIO_Pin_4
#define LED2_GPIO_PORT    GPIOA              //led2
#define LED2_GPIO_PIN  GPIO_Pin_3
#define LED3_GPIO_PORT    GPIOA                //led3
#define LED3_GPIO_PIN  GPIO_Pin_2
桥壳
#define LED4_GPIO_PORT    GPIOA              //led4
#define LED4_GPIO_PIN  GPIO_Pin_1
#define LED5_GPIO_PORT    GPIOA                //led5
#define LED5_GPIO_PIN  GPIO_Pin_0
void LED_GPIO_Config(void);
void LED_RUN(u8 index);
#endif /* __LED_H */
接着定义其c⽂件,bsp_led.c,需要为跑马灯LED_RUN函数定义多个状态,每个灯单独亮,全亮或全灭,参数由每次中断调⽤此函数时传⼊:
#include "bsp_led.h"

本文发布于:2024-09-23 02:30:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/306269.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按键   中断   需要   跑马灯
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议