一、简述
记--使用定时器4输出PWM来实现呼吸灯效果。
在人眼辨识能力范围内,调节LED亮的时间,达到LED灯的亮度不同。例:给低电平LED就亮,如果一个脉冲中全是低电平那么LED最亮,如果一个脉冲一半是高电平,一半是低电平,那么LED就显得有点暗,这样调整脉冲中的高低电平的比例就可以达到LED的亮度调节。
二、效果
LED1逐渐由暗变亮,接着由亮变暗。
三、工程结构
四、源文件
#include "stm32f4xx.h"
#include "led.h"
#include "pwm.h"
//粗延时
void delay_ms(int ms)
{
int i,j;
for(i=0; i } //主函数 int main(void) { int i; //中断优先级分组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); LED_Init();//初始化LED Pwm_Init();//设置定时器4输出PWM while(1)//呼吸灯 { //从暗到亮 for(i=1; i<499; i++)//定时器4重装载值为499 { TIM_SetCompare1(TIM14,i);//根据i的值设置比较值,调整占空比 delay_ms(20);//根据实际情况进行调整,方便观察效果 } //从亮到暗 for(i=499; i>0; i--) { TIM_SetCompare1(TIM14,i); delay_ms(20); } } return 0; } #ifndef __PWM_H_ #define __PWM_H_ #include "stm32f4xx.h" void Pwm_Init(void); #endif #include "pwm.h" void Pwm_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; //1、使能定时器14时钟: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE); //初始化GPIOF组时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //2、初始化PF10引脚 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚10 LED1 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; //复用 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //速度 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOF,&GPIO_InitStruct); //3、引脚功能映射 GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); //4、初始化定时器,配置ARR,PSC。 TIM_TimeBaseInitStruct.TIM_Prescaler = 84-1; //分频系统 84MHZ/84 = 1MHZ 每秒数1000 000数 1us数一个数 TIM_TimeBaseInitStruct.TIM_Period = 500-1; //重装值 500数,用时500us TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; //分频因子 TIM_TimeBaseInit(TIM14,&TIM_TimeBaseInitStruct); TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; //PWM1模式 TIM_OCInitStruct.TIM_OutputState= TIM_OutputState_Enable;//输出使能 TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_Low; //极性低 TIM_OC1Init(TIM14,&TIM_OCInitStruct); //5、使能预装载寄存器: TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable); //6、使能自动重装载的预装载寄存器允许位 TIM_ARRPreloadConfig(TIM14,ENABLE); //7、使能定时器。 TIM_Cmd(TIM14,ENABLE); } 5.1 LED亮度调节实现 5.2 相关概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 5.3 设置定时器4输出PWM TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; //PWM1模式五、总结
频率 :时钟速度 1GHZ = 1000MHZ = 1000 000 KHZ =1 000 000 000 HZ (如12MHz:1秒12 000 000个脉冲)
占空比:占空比是指在一个脉冲循环内,通电时间(有效电平)相对于一个脉冲总时间所占的比例。(可以简单理解为该高、低电平的占脉冲总时间的比例)
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; //输出使能
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_Low; //极性低,设置低电平为有效状态
TIM_TimeBaseInitStruct.TIM_Period = 500-1; //重装值 500,用时500us
TIM_SetCompare1(TIM14,i);//根据i的值设置比较值,调整占空比
上一篇:stm32f103呼吸灯(PWM脉冲宽度调制)
下一篇:STM32f103核心板点呼吸灯教程
推荐阅读最新更新时间:2024-11-11 11:26
推荐帖子
- LPC2366的几个问题
- 1.LPC2366的三个VDD(DCDC)(3V3)引脚是否一定要接3.3V电源?周立功的资料说这三个引脚不使用可以悬空。。。但是当这三个引脚悬空时整个单片机根本就没有工作,H-JTAG无法识别芯片,ISP也无法连接,说明这三个脚应该是给内部某些关键模块供电的,有谁知道这三个脚到底什么作用吗?希望能给小弟指点一二。2.LPC2366复位问题。因为要用到EEPROM,所以外接了一个CAT1025,通过此芯片产生一个稳定的复位信号,来复位LPC2366,但是发现一个问题,复位完成以后部分IO
- 5586 嵌入式系统
- 【瑞萨电子MCU套件免费试用】自行车炫彩风火轮开发应用笔记——(2)系统设计与硬件
- 本帖最后由xsunset于2014-9-2216:17编辑 1自行车风火轮系统设计原理如前所述,风火轮的主要原理是在不同的角度,控制沿着车轮辐条半径或直径分布的LED的颜色、亮度等数据,将一个圆周360°分为2n等分,相当于角度间隔是360/2n度,半径上分布着m个像素。根据前述分析的功能,对项目的系统设计提出了如下要求。1.1.LED及其驱动为了实现全彩,需要有独立控制RGB三色的LED,同时由于本项目要求
- xsunset 瑞萨电子MCU
- 明纬电源板的器件的布局是怎么做的,看高人分析,,
- 功率变压器在电源中起着能量变换和能量传送的作用(联接信号源与负载的中介)。一般的变压器模型是一个双端口网络,在大部分仿真软件中的模型如下:不过因为双端口模型不利于我们的分析,我们一般不直接使用这种模型。(当然软件中大部分都是这么分析)这种模型忽略了漏磁电感和激磁电抗,需要进行改进才能得出比较精确的结果。我们也可以将变压器与负载分开(独立的器件),变压器则等效成为附加一定电抗的电感器,次边电磁参数以一定变换归一化到原边进行处理,可看成一个单口网络进行等效,从而使模
- qwqwqw2088 模拟与混合信号
- 在datasheet中获取二极管的有效信息!
- 一,二极管的分类●二极管按其用途可分为:普通二极管和特殊二极管。●普通二极管:整流二极管、快速二极管、稳压二极管、检波二极管、开关二极管等。●特殊二极管:光二极管、变容二极管、隧道二极管、触发二极管等。本文,主要介绍整流二极管、快速二极管和稳压二极管。二,规格书的认识●整流二极管和快速二极管整流二极管结构主要是平面接触型,其特点是允许通过的电流比较大,反向击穿电压比较高,但PN结电容比较大,一般广泛应用于处理频率不高的电路中
- 木犯001号 电源技术
- 跪求图片上红外接收/发射模组型号,谢谢!
- 如图片所示,上面丝印为5X2F,麻烦有知道的DX告知下,万分感谢!跪求图片上红外接收/发射模组型号,谢谢!对这个芯片来个特写大镜头,根本看不清楚红外接收/发射组件是很常用的,它没有标准,都是由厂家自己作主,如果出于修理需要,可以将内部的二极管更换掉即可,如果是开发目的,完全可以不受别人电路设计、PCB布局限制。
- perryzhan 传感器
- 被同一个坑绊倒了两次-俺的100mWZIGBEE节点调试心得
- 拿到一个新的PAIC,台湾某厂的UP2202,2.4G频段专用,号称增益25db,输出功率能轻而易举的达到20dbm,恰好有个zigbee项目需要增加功率,于是毫不犹豫的上了它,嘿嘿!按照原理图,俺画了块板子,看起来貌似该ic使用起来很“弱智”,所以我直接和zigbee芯片,RF开关集成了,谁知道,噩梦就此开始!画板这些都是小事,俺当然没有弱智到把传输线周围紧挨着全都铺上地,虽然微带线俺的经验是2mm线宽就差不离,但是俺还是仿真了一下,主席说过,万事都怕认真二字(是不是主席说的俺忘了,权
- clj2004000 RF/无线
设计资源 培训 开发板 精华推荐
- PI HiperPFS-4系列功率因数校正IC,了解产品特色,答题享好礼!
- 下载有礼!是德科技5G精选解决方案,帮您勘破 5G 迷宫!
- 直播已结束|如何通过【TI MSPM0 固件示例】及【常用电机驱动器方案和拓扑】,在10分钟内旋转电机
- 来聊聊你与MP3的情缘吧!——MP3播放板等你拿
- nanoPower技术:延长电池寿命,提升传感器性能 2021年1月20日 上午10:00在线研讨会
- Microchip 有奖直播|如何构建车载充电器
- 重量级板子揭晓——TI M4开发板,你敢得到她么?
- TI首届低功耗设计大赛之玩转MSP430 FRAM MCU
- 你敢评,我敢送! 点评《越控越有趣-TI C2000 LaunchPad炼成记》尽享精彩好礼!