【国信长天蓝桥杯】CT117E-M4 嵌入式开发板基础篇 ①点亮一颗LED灯,LED灯的使用

摘要

本文章基于国信长天 CT117E-M4 嵌入式开发板,讲述了开发板上LED灯的使用,LED灯的点亮步骤,祝各位同学蓝桥杯电子比赛取得好成绩!
国信长天开发板

LED部分原理图

LED驱动原理图

从上图可以看出,8颗LED灯通过锁存器74HC573驱动,LED灯的阴极连接在锁存器的输出端,采用低电平的方式点亮。

锁存器的输入端连接在GPIO PC8 ~ PC15 上,控制引脚连接在PD2引脚上。74HC573开解锁的控制逻辑如下图:

在这里插入图片描述

74HC573在LE引脚的上升沿开锁,允许1D ~ 8D 的数据存入 锁存器,但此时并不会将这些数据输出到1Q ~ 8Q,输出的数据保持不变。

74HC573在LE引脚的下降沿时刻上锁,上锁后不在允许1D ~ 8D的数据存入锁存器,同时将之前存入锁存器的数据输出到1Q ~ 8Q,完成一次数据刷新。

LED灯的使用步骤

下文将以赛方提供的示例代码HAL_06_LCD为基础,为大家讲解LED的使用步骤,赛方提供的示例代码可以加入我们的备赛交流QQ群(482754201),在群里下载:
在这里插入图片描述

① 将 PC8 ~ PC15 初始化为输出模式,将控制引脚PD2也初始化为输出模式

双击工程目录下的HAL_06_LCD.ioc,使用STM32CubeMX软件打开工程配置。
在这里插入图片描述
打开后可以看到已经有了一些配置,特别是LCD的数据引脚PC0 ~ PC15已经被设置成了输出模式,我们就不需要重复配置了,只需要把PD2设为输出模式即可,点击PD2引脚,将其功能选择为GPIO_Output模式,如下图所示:
在这里插入图片描述
配置完成后可以看到PD2引脚被大头钉钉住了,颜色也变成了绿色,然后我们点击右上角的GENERATE CODE生成代码:
在这里插入图片描述
出现下列提示表示代码生成成功,我们就可以关闭STM32CubeMX这个软件了。

在这里插入图片描述
② 编写LED 灯控制逻辑代码
基础的配置可以通过工具生成,具体的控制逻辑就需要自己写了。上文中我们分析了74HC573的工作原理,通过PD2控制锁存的开关,将PC8 ~ PC15上的数据锁存到锁存器中。代码中我们需要用到如下基本函数:

HAL_GPIO_WritePin(GPIOx, GPIO_PIN_x, 0/1); //设置某个(些)引脚输出的电平状态
/*例如*/
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);//将PD2设为低电平
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 |GPIO_PIN_9 , 1);//将PC8和PC9设为高电平
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0); //将PC0 - PC15设为低电平

使用Keil打开刚刚生成的代码,如果想要控制LD2亮,其他LED灭,可在main函数对应位置添加如下代码实现:

在这里插入图片描述

为了更方便的控制LED,我在下面编写了LED的控制函数,同学们可将下列代码粘贴到main.c中USER CODE区域,在主函数中调用即可:


void led_all_off() //关闭所有的LED灯
{
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_all_on() //打开所有的LED灯
{
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_on(int n) //只打开某一个LED灯(n取值为 1 ~ 8)
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << n, 0);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_status(unsigned char c) //打开一部分LED灯(传入的8位数据分别控制8个灯)
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	GPIOC -> ODR = (c << 8);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

总结

LED 灯使用步骤总结如下:

  1. 使用STM32CubeMX配置引脚PD2为输出模式
  2. 复制文章中LED控制部分的代码到main.c的USER CODE中
  3. 在主函数中调用led_all_off(); , led_all_on(); , led_on(3); , led_status() 控制LED灯

如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

学习过程中遇到问题可以在评论区留言,或者加入我们的QQ群(482754201),在群里讨论。

需要蓝桥杯嵌入式开发板的同学可以在海鲜市场搜索鹏老师蓝桥杯,鹏老师设计的蓝桥杯练习板,功能和蓝桥杯赛方指定的设备功能完全兼容,并做了一些优化,价格仅仅是官方设备的一半,可以为预算有限的同学节约一笔开支。

在这里插入图片描述

  • 20
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值