您当前的位置: 首页 >  stm32

风间琉璃•

暂无认证

  • 1浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

STM32G4之LED实验

风间琉璃• 发布时间:2022-01-16 17:50:38 ,浏览量:1

文章目录
  • 前言
  • 一、实验原理
    • 1.LED原理
    • 2.74H573锁存器
  • 二、工程模板
  • 三、程序编写
    • 1.移植函数
    • 2.LED应用函数
  • 总结

提示:以下是本篇文章正文内容

一、实验原理 1.LED原理

开发板原理图 在这里插入图片描述 LED的一端接入高电平,所以只要给另外一端(PC9-15)引脚输出低电平LED即可点亮

2.74H573锁存器

但是,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文件夹 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3358347e1d7d4f09949f69ec06d10fe5.png) 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中 在这里插入图片描述

2.LED应用函数

根据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            
关注
打赏
1665385461
查看更多评论
0.0917s