stm32呼吸灯本程序是利用占空比来调节led灯的渐亮渐暗的
芯片:stm32f10x
单片机源程序如下:
- #include<stm32f10x.h>
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- void ledbreath(u16 t,u16 i)
- {
- PAout(3)=0;
- PAout(3)=1;//电平先拉低,在拉高
- delay_us(i);//高电平的时间
- PAout(3)=1;
- PAout(3)=0;//电平先拉高,再拉低
- delay_us(t-i);//低电平的时间
-
- } //形成一个基本的pwm波,但占空比在变,
- int main(void)
- {
- int i=0;
- delay_init(); //延时函数初始化
- LED_Init(); //初始化与LED连接的硬件接口
- while(1)
- {
- for(i=1;i<25000;i+=350)//25000,250,这两个参数随便调,只要效果明显就行了,先开始i增加占空比在增大
- {
- ledbreath(25000,i);
- }
- for(i=25000;i>1;i-=350)//后占空比开始减小
- {
- ledbreath(25001,i);
- }
- }
- }
- // int main(void)
- // {
- // delay_init(); //延时函数初始化
- // LED_Init(); //初始化与LED连接的硬件接口
- // while(1)
- // {
- // LED0=0;
- // LED1=1;
- // delay_ms(300); //延时300ms
- // LED0=1;
- // LED1=0;
- // delay_ms(300); //延时300ms
- // }
- // }
- /**
- *****************下面注视的代码是通过调用库函数来实现IO控制的方法*****************************************
- int main(void)
- {
-
- delay_init(); //初始化延时函数
- LED_Init(); //初始化LED端口
- while(1)
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_5); //LED0对应引脚GPIOB.5拉低,亮 等同LED0=0;
- GPIO_SetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉高,灭 等同LED1=1;
- delay_ms(300); //延时300ms
- GPIO_SetBits(GPIOB,GPIO_Pin_5); //LED0对应引脚GPIOB.5拉高,灭 等同LED0=1;
- GPIO_ResetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉低,亮 等同LED1=0;
- delay_ms(300); //延时300ms
- }
- }
-
- ****************************************************************************************************
- ***/
-
-
- /**
- *******************下面注释掉的代码是通过 直接操作寄存器 方式实现IO口控制**************************************
- int main(void)
- {
-
- delay_init(); //初始化延时函数
- LED_Init(); //初始化LED端口
- while(1)
- {
- GPIOB->BRR=GPIO_Pin_5;//LED0亮
- GPIOE->BSRR=GPIO_Pin_5;//LED1灭
- delay_ms(300);
- GPIOB->BSRR=GPIO_Pin_5;//LED0灭
- GPIOE->BRR=GPIO_Pin_5;//LED1亮
- delay_ms(300);
- }
- }
- **************************************************************************************************
- **/
复制代码
所有资料51hei提供下载:
呼吸灯实验.7z
(178.71 KB, 下载次数: 149)
|