- 前言
- 一、实验原理
- 1.LED原理
- 2.74H573锁存器
- 二、工程模板
- 三、程序编写
- 1.移植函数
- 2.LED应用函数
- 总结
提示:以下是本篇文章正文内容
一、实验原理 1.LED原理开发板原理图 LED的一端接入高电平,所以只要给另外一端(PC9-15)引脚输出低电平LED即可点亮
但是,LED灯的控制引脚与驱动LCD的引脚有重叠部分,所以在使用LCD的时候会影响LED的使用情况,所以LED需要使用锁存器
锁存器原理图
OE为高电平时,无论LE与D端为何种电平状态,其输出都为高阻态,此时芯片处于不可控状态。所以在设计电路直接将OE接地,74HC573一直处于使能状态
当LE为高电平时,D与Q同时为H或L,处于直通状态 当LE为低电平时,无论D为何种电平,Q都保持上一次的数据状态,处于锁存状态
锁存器就是把当前的状态锁存起来,使输入的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁存。锁存引脚LE高电平表示直通状态,为低电平表示锁存状态,可以通过控制锁存引脚,控制74HC573后端输出数据
在控制LED的时候,只需在输出对应电平后,给锁存器的LE(N—LE,对应PD2)管脚一个下降沿脉冲即可把对应的电平锁存到锁存器的输出端(Q1~Q8),从而控制LED
二、工程模板 先建立HAL_LED_TEXT文件夹和HAL_PROJECT_SOURCE文件夹  HAL_LED_TEXT: 用户编写程序 HAL_PROJECT_SOURCE:利用CubeMX初始化辅助编写,移植到测试文件中1.使用CubeMX初始化时钟在HAL_LED_TEXT文件夹中
文件夹下目录
注:此时工程中缺少启动文件,一定要从例程(MDK-ARM)中将启动文件添加到工程中。
2.复制HAL_LED_TEXT文件夹到HAL_PROJECT_SOURCE下 在HAL_PROJECT_SOURCE进行GPIO引脚的配置(不在刚才的文件下进行,是为了等下好移植,使工程层次更清晰)
上电默认LED灯全灭(PC8~PC12为高电平)、锁存器不通(PD2为低电平)、全部为推挽输出、全部无上下拉、全部为低速
3.重构HAL_LED_TEXT文件夹目录 建立中间层BSP,目录结构:HAL_LED_TEXT\Inc\BSP\LED 在该目录下在建立bsp_led.h头文件;HAL_LED_TEXT\Src\BSP\LED 在该目录下在建立bsp_led.c源文件;
然后将上层目录结构添加到Keil工程里面,并删除gpio.c文件,主要是把源文件添加到工程里面
添加头文件路径 由于这里只添加到BSP目录路径,所以在引用头文件的时候,我们要采用 如下格式:(因为该目录下可能含有多个外设)
#include "LED/bsp_led.h"
三、程序编写
1.移植函数
将HAL_PROJECT_SOURCE中gpio的初始化移植到bsp_led.c中
根据ucled的值将对应的8个led点亮(最高位对应LED8)
void LED_Display(unsigned char ucled)
{
// 0x88
// 1000 1000
// 8-->1(灯的顺序)
//拉高 ,上电默认熄灭
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
// 根据ucled的值控制led的亮灭
HAL_GPIO_WritePin(GPIOC,ucled
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?