当前位置:   article > 正文

STM32简单呼吸灯的制作_stm32呼吸灯

stm32呼吸灯

物联网应用技术2班 李俊运 20210320018

目的:

实现呼吸灯。逐渐亮,逐渐灭。

准备工作

1.首先我们需要准备32的最小系统板或者开发板。
2.准备一个LED灯(如果使用板子上的灯来实现则不需要,下面我是使用最小系统板上的LED灯来实现)。
3.若干杜邦线。
4.软件方面的准备,我是直接使用开源PWM源码进行修改。

外设工作靠电流,因此要改变电流大小,所以要动电阻或电压。

电阻:阻值固定,不可更改。

电压:怎么改变电压大小呢?

方法1:在单位时间(4s),通过GPIO口,给高电平的时间逐渐变长,给低电平时间逐渐变短,来实现灯逐渐变亮。反之,灯逐渐变暗。

方法2:通过PWM实现,跟定时器有关。

二:代码实现

1.设置亮暗的循环周期

解释:在四秒的单位时间中,时间是逐渐增加的。那我可不可以把高电平的时间逐渐增加Delay(i)呢?把低电平的时间逐渐减少Delay(4000 - i)呢?

2.这样单位时间的平均电流就变小了!!!

如下:

1s:低低低高

2s:低低高高

3s: 低高高高

4s: 高高高高

逐渐亮的逻辑:

逐渐暗一样,只需要把高电平时间逐渐减少,低电平时间逐渐增加 

3.最后的main函数 

 4.用到led, 所以要包含led初始化函数, 这个很简单就不说了

5.全部函数

  1. void Delay(unsigned long nCount);
  2.  
  3.  
  4. int main(void)
  5. {
  6.     int i;
  7.     
  8.     Led_Configuration();
  9.     
  10.     while(1)
  11.         for(i = 0; i < 4000; i++)
  12.         {
  13.             GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
  14.             Delay(i);
  15.             GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
  16.             Delay(4000 - i);
  17.         }
  18.         for(i = 0; i < 4000; i++)
  19.         {
  20.             GPIO_ResetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
  21.             Delay(i);
  22.             GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
  23.             Delay(4000 - i);
  24.     }
  25.     }
  26. }
  27. void Led_Configuration(void)
  28. {
  29.     GPIO_InitTypeDef GPIO_InitStructure;//³õʼ»¯LED(1~4)µÄGPIO
  30.     
  31.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜAPB2ÍâÉèʱÖÓ
  32.     
  33.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
  34.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  35.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  36.     GPIO_Init(GPIOA, &GPIO_InitStructure);
  37. }
  38. void Delay(unsigned long nCount)
  39. {
  40.     while(nCount--  )
  41.     {
  42.     }

6.效果展示,检查是否

7.大功告成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57087
推荐阅读
相关标签
  

闽ICP备14008679号