STM32呼吸灯的制作 您所在的位置:网站首页 opporeno8有呼吸灯吗 STM32呼吸灯的制作

STM32呼吸灯的制作

2023-06-28 15:53| 来源: 网络整理| 查看: 265

目的:

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

准备工作

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

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

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

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

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

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

二:代码实现

1.设置亮暗的循环周期

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

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

如下:

1s:低低低高

2s:低低高高

3s: 低高高高

4s: 高高高高

代码如下:

1.LED初始化函数

#include "stm32f10x.h"   static __IO uint32_t TimingDelay; void RCC_Configuration(void); void Delay(__IO uint32_t nTime);   void LED_Config(void){   GPIO_InitTypeDef GPIO_InitStructure;         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               GPIO_Init(GPIOB, &GPIO_InitStructure);                       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;               GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               GPIO_Init(GPIOB, &GPIO_InitStructure);             } 1.2主函数

int main(void) {    RCC_Configuration();                           LED_Config();                               if (SysTick_Config(72000))               {      /* Capture error */       while (1);    }    while (1)    {          if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0)          {              while(1)              {                    GPIO_SetBits(GPIOB, GPIO_Pin_5);     //LED1 ÁÁ            Delay(1000);                            GPIO_ResetBits(GPIOB, GPIO_Pin_5); //LED1 Ãð            Delay(1000);                           }                     }    } }  1.3定时延时函数

void Delay(__IO uint32_t nTime)

{

TimingDelay = nTime;

while(TimingDelay != 0);

}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有