请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 点灯丨V1.0.1

[复制链接]
STMCU小助手 发布时间:2021-1-14 16:07
STM32 点灯丨V1.0.1

+ x9 ^2 k) [. f& }1 N5 a
今天先在这里给大家说声对不起,昨天的程序写错了。按照咱们的假设,我们应该是让IO输出低电平,咱们昨晚的程序是让IO口输出拉高,刚好反了。
也好,咱们今天把昨天的BUG给修一下。咱们的程序应该这么写:
  1. GPIO_ResetBits(GPIOA,GPIO_Pin_1);      //输出低电平,亮
复制代码
, h+ C" b1 I/ |$ ^1 M
好了,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): V1 L* N5 ?# Z' O% y2 k. a
  2. {/ X$ j8 x& i+ F" V/ k
  3.     GPIO_InitTypeDef  GPIO_InitStructure;
    % ~; h3 _' Q/ q: i. f; }" I$ g& y
  4.    
    $ F3 f! P$ \* E
  5.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能PB,PE端口时钟) B& \2 L& n5 [/ p8 z* c
  6.    
    - ]0 i* I' h3 @1 N
  7.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;         //LED0-->PB.5 端口配置. ~) \3 F+ j. N( t% p
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出
    5 P$ a% H+ R/ O# ]" o$ ^
  9.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //IO口速度为50MHz+ w) B2 z. k2 G  U. @
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);           //根据设定参数初始化GPIOB.53 k1 q; Z& g  n2 w4 C
  11.     GPIO_SetBits(GPIOB,GPIO_Pin_5);             //PB.5 输出高1 n" [6 T7 E" m* e6 |& G& |3 j. E/ w
  12. }
复制代码
" f5 h4 O9 }; U+ ?' I9 P. N
延时函数的话,咱们也先用正点原子写好的。俗话说,站在巨人的肩膀上,能够看的更远
   
那么,程序主体,就出来了,如下所示:
  1. delay_init();      //初始化延时函数
    4 P6 s* H* N& i
  2.   LED_Init();        //初始化LED端口
    + c: D9 n+ ^( T- \$ B
  3.   while(1)
    + f6 b2 q) w! X) r
  4.   {
    : I$ E% J( M: d3 z
  5.       GPIO_ResetBits(GPIOB,GPIO_Pin_5);    //LED0对应引脚GPIOB.5输出低电平,亮 % H+ D: a+ c& p& h
  6.       delay_ms(300);                       //延时300ms
    " q4 a% |& t$ I; v% {
  7.       GPIO_SetBits(GPIOB,GPIO_Pin_5);      //LED0对应引脚GPIOB.5输出高电平,灭% u  ^' n6 N" D1 z5 d
  8.       delay_ms(300);                       //延时300ms* ]; q; ?, n3 [! e
  9.   }
复制代码
' j& x' c  j$ d3 U
这个就是,咱们今天的程序了。
接下来的,就是明天的需求了。在实际的项目中,咱们一般是用LED来提示故障,一般用闪多少下来提示故障编号。这个又该怎么实现呢?咱们明天揭晓。
文章出处:Yue無缺
. t1 L6 p( y  @8 f& o4 }/ y
收藏 评论0 发布时间:2021-1-14 16:07

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版