【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

这篇具有很好参考价值的文章主要介绍了【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇大鹏一日同风起,扶摇直上九万里。假令风歇时下来,犹能簸却沧溟水。📈


目录

看原理图

 设置STM32CubeMX

配置文件

 初始化LED函数

实例运用


看原理图

可以看到控制LED灯的是PC8~PC15,由于图中最左边是VDD,也就是高电平控制的,所以当PC8~PC15为高电平的时候,LED亮,为低电平的时候,LED灭。同理PD2低电平关,高电平开。

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

设置STM32CubeMX

打开我们已经建立好的工程(如何初始化STM32工程)中的STM32CubeMX

将PC8~PC15和PD2引脚设置为输出模式

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

 然后点击红框中的System Core中的GPIO,在弹出来的中间界面中选中PC8~PC15,根据原理图的分析,我们将这些引脚置为高电平(high)。

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

同理,将PD2置为低电平(low)

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

 然后右上角点击生成代码(GENERATE CODE)即可

配置文件

首先打开Keil5,新建两个文件,命名为led.c和led.h,并加入到我们的bsp文件中去。

然后再左侧工程文件右击,添加一个组(Add Group...)

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

创建成功后,双击红框中的bsp,找到你的bsp文件路径下的lcd.c,并添加进去

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

 接下来我们要将我们写得bsp模块代码路径添加到默认路径中去

点击魔法棒,点击C/C++,根据图中数字引导,在第五步时将bsp的路劲添加进去即可(记得点OK 哦)

控制led嵌入式代码,STM32,蓝桥杯嵌入式,stm32,单片机,硬件工程,c语言,嵌入式硬件

初始化LED函数

初始化一个函数前,我们首先要明白要将这个设备初始化成上面样子的,如LED灯,我们一般希望LED灯初始化后,是全部熄灭的,从这个角度来些代码

另外我们有时还希望初始化能集成一些其他功能,如LED的初始化,我们可以使它拥有点亮灯的功能,于是有如下代码(特别要理解第一句与第二句代码的关系哦)

/*
LED_Disp:全灭LED灯,然后点亮一个LED灯
    @dsLED:要点亮的LED灯,如dsLED==0x01,点亮LED1
*/
void LED_Disp(uchar dsLED)
{
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);		//将GPIOC的所有引脚置为高电平,也就是LED初始化熄灭
	HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);			//因为控制LED灯是在8~15位,上面一句代码是默认前八位置0,所以我们左移8位,就能将GPIOC的8~15置为0了
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);			//初始化锁存器
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

 这样,我们的初始化函数就写成啦,其中的参数设置为“0x01”,就是LED灯全熄灭了。

实例运用

现在我们来简单的写一个流水灯吧

如果理解了初始化代码中的第一句与第二句,我们就可以利用位运算来用更简单的代码实现流水灯了,以下是从左至右依次亮0.5秒,然后熄灭0.5秒:文章来源地址https://www.toymoban.com/news/detail-779171.html

/*
LED_liushui:实现LED灯流水
*/
void LED_liushui(void)
{
	int i = 1;
	while(1)
	{
		LED_Disp(i);
		HAL_Delay(500);
		LED_Disp(0x00);
		HAL_Delay(500);
		if(i == 128)
			i = 1;
		else
			i = i<<1;
	}
}

到了这里,关于【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA学习——点亮流水灯

    在FPGA开发板中,一般板载LED默认高电平点亮,因此我们只需要将想要亮起的LED赋值为1即可。 本入门实验要求为每隔1s开发板上的LED轮流亮起,因此我们需要一个1s的计数器, 由于开发板晶振时钟为50MHz,因此我们计数50_000_000即为1s。 注意:为了后续方便仿真所以这里MAX设置

    2024年02月13日
    浏览(43)
  • led流水灯

      本章将讲解流水灯的制作,在Cyclone IV开发板上依次点亮四个led灯,并以一定间隔亮灭,达到流水灯的效果。 图1. DIP发光二极管(直插型) 图2. SMD发光二极管(贴片型)   LED灯就是发光二极管,二极管功能很多,在本实验中我们暂且将其看作是一个开关。二极管在正向

    2024年02月13日
    浏览(42)
  • 汇编语言实现C51单片机点亮流水灯

    P0作输出口,接8只发光二极管,编写程序实现二极管循环点亮 二极管为共阳极连接时,即二极管正极已接通电源,单片机输出接阴极,所以单片机输出为低电平有效。 所以为实现二极管轮流点亮,单片机的输出应为:0FEH,0FDH,0FBH,....0FEH,每输出一种状态,需要延时0.1us. 最后在

    2024年02月06日
    浏览(48)
  • 嵌入式-stm32-用PWM点亮LED实现呼吸灯

    答:LED需要低电平才能亮,高电平是灯灭。 答:这是用到不同占空比来实现的,控制LED实现呼吸灯,就是通过占空比的高低电平和其持续时间来实现。 ①例如,要定时500ms,则:PSC=7199,ARR=4999,Tclk=72Mhz。 ②假如频率为 2kHz ,则:PSC=71,ARR=499, 频率和周期是描述波形的两个基

    2024年02月03日
    浏览(86)
  • 51单片机学习--LED流水灯

    延时代码可通过软件生成,系统频率要和开发板的晶振频率相对应。  

    2024年02月16日
    浏览(43)
  • 【C51基础实验 LED流水灯】

    前言: 前几篇学会了LED驱动原理,并且成功点亮了一颗LED和实现了LED的闪烁,那么这篇紧接着就来解锁LED的新功能,LED流水灯。当然这里前提是基于肉眼余晖可见光达成的效果。 开发板上 LED 模块电路原理图如下图所示: 看上图中 LED 采用共阳接法 ,D1-D8 连接到单片机的

    2024年02月10日
    浏览(31)
  • Verilog HDL——LED流水灯工程&LED点阵显示

    LED流水灯 根据8位LED灯与EPM240引脚I/O对应关系 配置CPLD引脚: Hardware SetupUSB-Blaster[USB-0]JTAG Mode 下载工程: LED点阵显示 LED点阵电路: 00IC-EPM240 开发板采用的点阵型号是 10788。8×8LED 点阵共有 16 个引脚,分别控制 8 行和 8 列,行列共同决定其中一个 LED 的亮灭。图中 ROW 为行,

    2024年02月03日
    浏览(38)
  • FPGA入门————LED流水灯(超详细教程)

    本文使用软件为vivado,其实用哪个软件都是一样的,主要是掌握核心编程思想。 如有需要下载vivado软件下载可以参考: vivado及ISE各版本软件下载方法、链接及详细步骤,官方网页下载_ise软件下载_千寻xun的博客-CSDN博客 目录 一、新建工程及设计文件 二、编写LED流水灯程序

    2024年02月08日
    浏览(38)
  • Quartus II使用——3 LED流水灯

    1.学习要求 目标:实现8个LED灯(LED 0~LED 7)间隔100ms依次点亮,然后全部熄灭,再依次点亮。 2.仿真分析 clk是50Mhz时钟,那么一个周期为(1X10^9)/(50X10^6)=20ns,1秒对应50000000个时钟周期,100ms=5000000个时钟周期。 复位时,LED灯全部熄灭    :led=8\\\'hff 点亮第1个LED灯               

    2023年04月22日
    浏览(31)
  • ARM入门(实现LED流水灯)超简单

            实现效果将LDE2到LED5依次点亮再依次熄灭。点亮LED灯就像我们接触编程语言的第一天输出一个\\\"hello world\\\"一样,这是一个最基础的入门操作。这里我们以点亮LED2的过程进行详细讲解,因其他LED灯的点亮过程都是一样的,所以就不做一一介绍了。 1、首先第一步我们需

    2023年04月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包