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

STM32实现流水灯

[复制链接]
STMCU小助手 发布时间:2022-11-25 14:06
跟51学**度一样,当我们实现点亮一个灯之后我们就会想着如何点亮流水灯,呼吸灯这两种灯,在51中我们用的整个端口比如说P0口然后利用左移或者右移函数进行流水灯的实现,在32中我们依旧可以采用这种方式,但是由于开发板中连接的LED灯所用的端口不是同一组端口,所以可以直接利用简单的某个灯亮,两外的灯暗来实现。首先还是先上电路图,我用的还是野火的指南者的开发板 1aa2f864dee040509c6ad5f2c6bc029f.png 如图所示,所用的还是共阳极的原理图,要想点亮灯只需要给低电平就好了。要想实现流水灯,就叫而已是其中一个低电平其他全部高电平就好了。代码如下。首先是GPIO初始化。
  1. void LED_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,uint32_t RCC_APB2Periph)//灯初始化
  2. {
  3. GPIO_InitTypeDef GPIO_InitStruct;
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph,ENABLE);//打开时钟
  5. GPIO_InitStruct.GPIO_Pin = GPIO_Pin;//设置引脚
  6.   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置方式
  7. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置速度
  8. GPIO_Init(GPIOx,  &GPIO_InitStruct);//引脚初始化
  9. }
  10. void delay(uint32_t count)//延时函数
  11. {
  12. for(;count!=0;count--);
  13. }
复制代码
初始化之后在main函数中开始编写流水灯。代码如下。
  1. LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
  2. LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
  3. LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
  4. while(1)
  5. {
  6.   GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  7.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  8.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  9.   delay(0xFFFF);
  10.   GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  11.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  12.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  13.   delay(0xFFFF);
  14.   GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  15.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  16.   GPIO_SetBits(GPIOB, GPIO_Pin_0);
  17.   delay(0xFFFF);
复制代码
————————————————版权声明:小柳很菜
收藏 评论0 发布时间:2022-11-25 14:06

举报

0个回答

所属标签

相似分享

官网相关资源

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