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

STM32 点灯丨V1.0.1

[复制链接]
STMCU小助手 发布时间:2021-1-14 16:07
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無缺

收藏 评论0 发布时间:2021-1-14 16:07

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版