请选择 进入手机版 | 继续访问电脑版
搜索
查看: 68|回复: 0

[分享] STM32 点灯丨V1.0.1

[复制链接]

该用户从未签到

104

主题

105

帖子

0

蝴蝶豆

高级会员

最后登录
2021-1-20
发表于 7 天前 | 显示全部楼层 |阅读模式
STM32 点灯丨V1.0.1

今天先在这里给大家说声对不起,昨天的程序写错了。按照咱们的假设,我们应该是让IO输出低电平,咱们昨晚的程序是让IO口输出拉高,刚好反了。
也好,咱们今天把昨天的BUG给修一下。咱们的程序应该这么写:
  1. GPIO_ResetBits(GPIOA,GPIO_Pin_1);      //输出低电平,亮
复制代码

好了,BUG修好了。咱们进入今天的正题,今天的需求是,如何让LED灯闪烁?
首先,咱们分析一下这个小需求。闪烁,那就是亮一定的时间,灭一定的时间。
说到时间,那就需要用到延时,STM32的延时,咱们一般用定时器来处理。今天先不细说了,主要写程序的实现。
到这里,咱们的程序也基本成型了,白话版程序如下所示:
点亮LED;
延时一定时间;
熄灭LED;
延时一定时间;(这个延时是必要的,不然看不到闪烁的效果)
好了,今天就先用别人的硬件来实现一下咱们的程序。我这里手上正好有一块正点原子的V3战舰开发板,今天就用它来试试。
先来看一下硬件,在开发板上有这么一个LED灯,它挂载在PB5上。硬件如下所示:
4.1.png
图1   LED接线方式
4.2.png
图2 LED挂载的IO口
程序的话,IO初始化的部分如下所示:
  1. void LED_Init(void)
  2. {
  3.     GPIO_InitTypeDef  GPIO_InitStructure;
  4.    
  5.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能PB,PE端口时钟
  6.    
  7.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;         //LED0-->PB.5 端口配置
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出
  9.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //IO口速度为50MHz
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);           //根据设定参数初始化GPIOB.5
  11.     GPIO_SetBits(GPIOB,GPIO_Pin_5);             //PB.5 输出高
  12. }
复制代码

延时函数的话,咱们也先用正点原子写好的。俗话说,站在巨人的肩膀上,能够看的更远
   
那么,程序主体,就出来了,如下所示:
  1. delay_init();      //初始化延时函数
  2.   LED_Init();        //初始化LED端口
  3.   while(1)
  4.   {
  5.       GPIO_ResetBits(GPIOB,GPIO_Pin_5);    //LED0对应引脚GPIOB.5输出低电平,亮
  6.       delay_ms(300);                       //延时300ms
  7.       GPIO_SetBits(GPIOB,GPIO_Pin_5);      //LED0对应引脚GPIOB.5输出高电平,灭
  8.       delay_ms(300);                       //延时300ms
  9.   }
复制代码

这个就是,咱们今天的程序了。
接下来的,就是明天的需求了。在实际的项目中,咱们一般是用LED来提示故障,一般用闪多少下来提示故障编号。这个又该怎么实现呢?咱们明天揭晓。
文章出处:Yue無缺

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2021-1-21 04:21 , Processed in 0.062418 second(s), 13 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表