最近做个项目,需要用PWM控制4线风扇的速度,调试完后顺便将其记录下来.
typedef struct {
u16 pwm_change_flag;
u16 pwm_value;
}Pwm_Fan_t;
Pwm_Fan_t Pwm_Fan;
void Pwm_Param_Init(void)
{
Pwm_Fan.pwm_change_flag=0;
Pwm_Fan.pwm_value=80;
}
//PD14->TIM4_CH3
void PWM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // 复用推挽输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
/****************************************************************
2017年8月14日14:37:57:cpu的风扇是使用25Khz pwm来调制的
***************************************************************/
void TIM4_Config(u16 pwm)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* PWM信号电平跳变值 */
u16 CCR3;
if(pwm>160-1)
pwm=160-1;
CCR3=pwm;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_TIM4); //对于L系列的,这句千万别漏掉了
TIM_Cmd(TIM4, DISABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period =160 - 1;//0xEA5F;
TIM_TimeBaseStructure.TIM_Prescaler = 8-1; //设置预分频:预分频=2,即为72/3=24MHz
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分频系数:不分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数溢出模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置为PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR3; //设置跳变值,当计数器计数到这个值时,电平发生跳变
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_Low; //当定时器计数值小于CCR1时为低电平
TIM_OC3Init(TIM4, &TIM_OCInitStructure); //使能通道3
TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM4, ENABLE); //使能TIM4重载寄存器ARR
/* TIM4 enable counter */
TIM_Cmd(TIM4, ENABLE); //使能TIM4
}
上一篇:STM32l151低功耗芯片串口通信
下一篇:STM32L0低功耗设计4: RTC模块1秒时钟的产生方法
推荐阅读
史海拾趣
Anpec(茂达电子)自1997年创立之初,就肩负着提升国内电源模拟设计环境、建立自主模拟及电源相关产业的使命。初期,公司规模虽小,但志向远大。面对国内外市场的激烈竞争,茂达电子凭借对技术的执着追求和对市场的敏锐洞察,逐步在模拟集成电路设计领域站稳脚跟。
在洲光源公司的发展历程中,创新一直是其前进的动力源泉。公司始终坚持以市场需求为导向,不断进行技术创新和产品升级。通过与高校、科研机构的合作,洲光源成功引进了一批高端人才和先进技术,为公司的发展注入了新的活力。同时,公司还积极参与国家和地方的创新计划项目,不断推动科技创新和产业升级。这些创新举措不仅提升了洲光源公司的市场竞争力,也为公司的持续发展奠定了坚实的基础。
近年来,随着环保意识的提高和可持续发展的理念深入人心,Excelta也积极响应这一趋势。公司不断优化生产工艺和材料选择,降低产品对环境的影响。同时,公司还积极参与环保公益活动和社会责任项目,为社会和环境贡献自己的力量。这一转变不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。
为了满足亚洲市场的需求,DB Lectro Inc决定在中国上海设立子公司及工厂。这一战略举措不仅使公司能够更贴近亚洲客户,还大大降低了生产成本。在上海工厂的建设过程中,公司充分考虑到环保和可持续性发展的要求,采用了先进的生产工艺和设备。随着工厂的投产和产能的不断提升,DB Lectro Inc的产品在亚洲市场的占有率也稳步上升。
AEMC Instruments公司成立于1976年,隶属于Chauvin Arnoux集团。这个新成立的公司在电子行业中崭露头角,凭借其在电气测试和测量领域的专业知识和技术,迅速获得了市场的认可。初创时期,AEMC Instruments公司以研发和生产电流测量探头、电能质量分析仪等核心产品为主,这些产品凭借其准确性和稳定性,为公司的快速发展奠定了坚实的基础。
进入21世纪第二个十年,FINTEK公司开始实施国际化战略,以寻求更广阔的发展空间。公司首先在亚洲市场建立了多个销售和服务中心,随后又进军欧洲和北美市场。为了更好地服务国际客户,FINTEK还加强了与国际标准组织的合作,积极参与国际标准的制定和推广。这些努力使得FINTEK的产品和服务得到了全球客户的认可和信赖,公司的国际影响力也随之显著提升。
会用的,知道的,帮下,编程,用ABEL或者VHDL,作用是,一个可以加减的十进制计数器,一个输出是用BDC-二进制输出给D/A转换器,另外一个是输出用BCD7段译码输出给数码管,知道的给段程序啊… 查看全部问答∨ |
对DAC可能最重要的交流指标是建立时间、毛刺脉冲、失真和无杂波动态范围(SFDR)。 如图2-38所示,DAC的建立时间是从数字代码发生变化到输出落在并保持某些误差带之内需要的时间。对于放大器来说,就很难对建立时间进行比较,这是因为他们的误差带可 ...… 查看全部问答∨ |
[qq]334388457[/qq]这是一个信号变换的最后级,输入为一个方波,频率范围是100HZ到100K,经过变压器后,最后的输出方波频率不变,只是下降沿有一个拖尾。Q2集电极接的可调直流电压可以控制信号输出幅度的大小。小弟不明白的是,变压器有隔离的作用 ...… 查看全部问答∨ |
求下面几个型号的资料 3M35-OR-ND 517-351/2GN 3M35-YL-ND 求下面几个型号的资料 3M35-OR-ND 517-351/2GN 3M35-YL-ND… 查看全部问答∨ |
各位大侠。。本人是新手求助一个关于温室大棚湿度温度测控系统设计 基于单片机的温室大棚温湿度测控系统设计 使用51系列单片机STC89S51与智能温度传感器芯片DS18B20(查一下大棚温度)、湿度传感器(查一下型号,注意大棚湿度范围)液晶模块1602(可用别的型号)及外围电路等完成设计与实现; 功能是实时采集温度、 ...… 查看全部问答∨ |
|
http://v.youku.com/v_show/id_XNDI5ODU5NTYw.html 上面是我使用网上呼吸灯程序在示波器上P1.6口的波形 使用的TimerA的PWM输出 理想情况是占空比平滑的递增递减循环下去 但是正如视频中那样,有一点跳动,而且跳动的幅度或是跳动过去的周期数和 ...… 查看全部问答∨ |
|