完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于正点原子精英版的PWM输出实验修改
只需修改三个部分的代码即可,根据之前WIFI控制小灯的教程,可以把ESP8266的代码稍作修改,就可以实现WIFI调节亮度。 led.h #ifndef __LED_H #define __LED_H #include "sys.h" #include "usart.h" #include "timer.h" #include "delay.h" #include "stdio.h" // #define LED0 PBout(5)// PB5 #define LED1 PEout(5)// PE5 void LED_Init(void);//初始化 void LED_Ctrl_Up(void); void LED_Ctrl_Dowm(void); void LED_Ctrl_Open(void); void LED_Ctrl_Close(void); void LED_Ctrl(void); #endif led.c #include "led.h" static u16 led0pwmval=0; //比较值 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5 GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出 GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高 } void LED_Ctrl_Up(void) { TIM_Cmd(TIM3, ENABLE); //使能TIM3 delay_ms(10); if(led0pwmval<600) led0pwmval+=100; TIM_SetCompare2(TIM3,led0pwmval); //给比较值 } void LED_Ctrl_Dowm(void) { delay_ms(10); if(led0pwmval>110) led0pwmval-=100; TIM_SetCompare2(TIM3,led0pwmval); //给比较值 } void LED_Ctrl_Close(void) { TIM_Cmd(TIM3,DISABLE ); //使能TIM3 LED0=1; } void LED_Ctrl_Open(void) { TIM_Cmd(TIM3, ENABLE); //使能TIM3 led0pwmval=200; TIM_SetCompare2(TIM3,led0pwmval); } //#D1 关灯 #D0开灯 #T1 加亮度 void LED_Ctrl(void) { if(USART_RX_STA&0x8000) { if(USART_RX_BUF[0]=='?') { printf("#D1开灯rn#D0关灯 rn#T1和#T0调整红灯亮度rn"); } if(USART_RX_BUF[0]=='#') { if(USART_RX_BUF[1]=='D') { if(USART_RX_BUF[2]=='0') { LED1=1; LED_Ctrl_Close(); } if(USART_RX_BUF[2]=='1') { LED1=0; LED_Ctrl_Open(); } } if(USART_RX_BUF[1]=='T') { if(USART_RX_BUF[2]=='1') { LED_Ctrl_Up(); } if(USART_RX_BUF[2]=='0') { LED_Ctrl_Dowm(); } } } USART_RX_STA=0; } } main.c #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "usart.h" #include "timer.h" int main(void) { delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(115200); //串口初始化为115200 LED_Init(); //LED端口初始化 TIM3_PWM_Init(899,0); //不分频。PWM频率=72000000/900=80Khz printf("#D1开灯rn#D0关灯 rn#T1和#T0调整红灯亮度rn"); while(1) { LED_Ctrl(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:32 , Processed in 0.745375 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号