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

STM32 点灯丨V1.0.1

[复制链接]
STMCU小助手 发布时间:2021-1-14 16:07
STM32 点灯丨V1.0.1
- f; |) T0 D" J% ]1 ]
今天先在这里给大家说声对不起,昨天的程序写错了。按照咱们的假设,我们应该是让IO输出低电平,咱们昨晚的程序是让IO口输出拉高,刚好反了。
也好,咱们今天把昨天的BUG给修一下。咱们的程序应该这么写:
  1. GPIO_ResetBits(GPIOA,GPIO_Pin_1);      //输出低电平,亮
复制代码

& Y8 A0 B: N) V% n  e
好了,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)
    9 h! q: {  e& l+ D4 V4 y
  2. {
    ' d7 w: a9 B! u* [+ n4 |" I% H
  3.     GPIO_InitTypeDef  GPIO_InitStructure;
    ) t& w' a4 k6 O- a- o' J
  4.    
    & I6 n: u0 Y. N: r- e5 ^6 a# B
  5.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能PB,PE端口时钟8 H& s4 r5 f. k) J
  6.     0 c7 z. C# j4 [$ V2 V
  7.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;         //LED0-->PB.5 端口配置1 V4 `, S. W' h4 n$ D
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出
    # L* L& i" V  S
  9.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //IO口速度为50MHz
    3 O0 l) i' B* d+ g! o$ i
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);           //根据设定参数初始化GPIOB.5
    9 D# x! ~. g9 A* A( k( ~4 h
  11.     GPIO_SetBits(GPIOB,GPIO_Pin_5);             //PB.5 输出高
    ( u  a3 ~4 ^" j$ H
  12. }
复制代码

7 b  v0 d# ?1 h& L& f
延时函数的话,咱们也先用正点原子写好的。俗话说,站在巨人的肩膀上,能够看的更远
   
那么,程序主体,就出来了,如下所示:
  1. delay_init();      //初始化延时函数' Y7 L! _; r- s' v+ N
  2.   LED_Init();        //初始化LED端口# p: Q; m7 M2 l
  3.   while(1)
    # h# m; e' R2 h" y1 Y9 X! b- y7 O) [
  4.   {, W9 ]* b, S- |" b4 [
  5.       GPIO_ResetBits(GPIOB,GPIO_Pin_5);    //LED0对应引脚GPIOB.5输出低电平,亮 % Y5 Q  G- c# B; T6 m: V/ D
  6.       delay_ms(300);                       //延时300ms
    5 j) y3 K3 n. ]# Z" C) M
  7.       GPIO_SetBits(GPIOB,GPIO_Pin_5);      //LED0对应引脚GPIOB.5输出高电平,灭
    2 G0 m& O" y* w5 R
  8.       delay_ms(300);                       //延时300ms
    * O6 Z* v; p# C* t- g+ B8 d
  9.   }
复制代码
2 v7 Q/ k0 B3 ~# ^
这个就是,咱们今天的程序了。
接下来的,就是明天的需求了。在实际的项目中,咱们一般是用LED来提示故障,一般用闪多少下来提示故障编号。这个又该怎么实现呢?咱们明天揭晓。
文章出处:Yue無缺
8 j$ r' r& ^4 }/ x# T8 {+ _
赞 收藏 评论0 发布时间:2021-1-14 16:07

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版