历史上的今天
返回首页

历史上的今天

今天是:2024年09月28日(星期六)

2021年09月28日 | 基于STM32的PWM呼吸灯系统设计

2021-09-28 来源:eefocus

一、简述


记--使用定时器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 for(j=0; j<10000;j++);

}

 

 

//主函数

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”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
频率  :时钟速度   1GHZ = 1000MHZ = 1000 000 KHZ =1 000 000 000 HZ    (如12MHz:1秒12 000 000个脉冲)
占空比:占空比是指在一个脉冲循环内,通电时间(有效电平)相对于一个脉冲总时间所占的比例。(可以简单理解为该高、低电平的占脉冲总时间的比例)
       

5.3 设置定时器4输出PWM
           

TIM_OCInitStruct.TIM_OCMode      =  TIM_OCMode_PWM1;       //PWM1模式
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的值设置比较值,调整占空比


推荐阅读

史海拾趣

FEIG ELECTRONIC公司的发展小趣事

FEIG ELECTRONIC与意法半导体(STMicroelectronics)的合作是其发展史上的又一重要篇章。两家公司共同研发了一种非接触式个性化设置系统,该系统能够在短时间内完成对托盘上有意法半导体ST25DV NFC动态标签的货品的个性化设置,无需打开产品电源或包装。这一创新技术不仅大大提高了产品生产效率,还为客户提供了更加便捷、高效的服务体验。

D3 Semiconductor公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,D3 Semiconductor始终保持对新技术、新应用的关注和研究。公司不断投入研发资源,推出了一系列具有创新性的半导体产品,满足了市场的多样化需求。这种持续创新的精神推动了D3 Semiconductor的不断发展,也使其在竞争激烈的电子行业中保持领先地位。

Everett Charles Technologies (ECT)公司的发展小趣事

1996年,ECT为了进一步壮大在产业中的主导地位,加入了Dover集团。Dover集团是一家在纽约股票交易所上市的全美500强大企业之一,其业务涵盖工业、工程系统、流体、电子技术等多个领域。加入Dover集团后,ECT得到了更多的资源和支持,实现了跨越式发展。Dover集团的全球布局和丰富资源,为ECT在全球范围内的业务拓展提供了有力保障。

Gwconnect (Molex)公司的发展小趣事
相比集成电路,分立元件构成的电路体积较大,占用空间多。
Advanced Photonix公司的发展小趣事

在光电技术不断发展的背景下,Advanced Photonix开始研发太赫兹传感器产品。这种传感器产品主要针对无损检测和质量控制市场,如行李和货物的安全检查等。经过长时间的努力,公司成功开发出了一系列高性能的太赫兹传感器,这些产品凭借其高可靠性和精确性,迅速赢得了市场的青睐。通过与各大航空公司和物流企业的合作,Advanced Photonix的太赫兹传感器产品在全球范围内得到了广泛应用,为公司的快速发展注入了新的动力。

AIC [Analog Intergrations Corporation]公司的发展小趣事

在光电技术不断发展的背景下,Advanced Photonix开始研发太赫兹传感器产品。这种传感器产品主要针对无损检测和质量控制市场,如行李和货物的安全检查等。经过长时间的努力,公司成功开发出了一系列高性能的太赫兹传感器,这些产品凭借其高可靠性和精确性,迅速赢得了市场的青睐。通过与各大航空公司和物流企业的合作,Advanced Photonix的太赫兹传感器产品在全球范围内得到了广泛应用,为公司的快速发展注入了新的动力。

问答坊 | AI 解惑

谈谈FPGA工程师

谈谈FPGA工程师 最近发现好多熟悉用Altera或者Xilinx的工程师不大原意接受其他的FPGA 不大新欢接受新的东西,新的FPGA器件 学习也是要成本的. 主要是因为软件工具 好不容易学会一样东西. 现在又要搞别的.肯定不愿意 但有些设 ...…

查看全部问答>

EMC专区开辟!

EMC是电子系统设计中一个不可回避的大问题,几乎每个产品的EMC问题都令工程师们头痛不已。在论坛中开辟个专区,大家来互相交流经验、分享一些好的资料,希望大家积极发言把自己好的资料分享一下,遇到什么问题,大家一起在这个贴中交流! 我先开个 ...…

查看全部问答>

單片機播放音樂

轉載一個別人編寫的單片機會唱歌,給大家看看…

查看全部问答>

请教大家一个比较器的严重问题(在线等)

麻烦大家看看下面这个电路图,输入的正弦波信号在经过电容后在运放LM324的2脚上,会被叠加一个400mV的直流电压,不知道这个自流电压是哪儿来的,…

查看全部问答>

关于MDK与C51在同一部电脑中会出现冲突的问题解决

可以把RealView MDK与C51装在不同盘中,分别用不同快捷方式打开即可。…

查看全部问答>

LED照明定位讨论(欢迎讨论)

从2006年3月,大功率LED露出头角,LED的战火被点燃,国内最初的预计,2008年LED会替代大部分家庭照明.2010年达到大量普及.现在反过来看,国内预计并没有实现.相比之下,国外的进度就比较严谨一些,设计规划比较长线.纵观现在做LED的厂商,做得大的都将主力 ...…

查看全部问答>

求助 关于相敏检波中的积分电路

下图是一个相敏检波的基本方框图  小弟就是不明白 图中积分器也就是低通滤波器的截止频率有什么技术要求 我在具体实验中发现截止频率的选择好像很随意 不知道是不是这样。 望大侠们指点指点,谢谢!!!…

查看全部问答>

新手问题,谢谢帮助!

我拿到了qy-9315工控板,就是:wince5.0的,里面有sdk,还有内核镜像等, 我不知道如何搭建整个平台,就是:在这个pc机上模拟运行,调式wince程序。 谢谢!…

查看全部问答>

一个简短的C程序,出现问题!!

很简单的一个才程序,编译没错,运行是错误:CXX0030: Error: expression cannot be evaluated #include typedef enum                         {   &n ...…

查看全部问答>

怎样实现OrCAD16.2 PSpice完全破解

小弟去年装的Orcad16.2,当时已经成功破解之后,PSpice能做直流、交流、瞬态分析、还有温度分析,但是不能做参数分析和monte-carlo分析。求大侠慷慨救助,赏小弟一个完全破解的方法。…

查看全部问答>