欢迎来到亿配芯城! | 免费注册
你的位置:JSCJ长晶科技CJ(JCET长电科技)-亿配芯城 > 芯片资讯 > 如何使用stm32的高级定时器产生脉宽调制
如何使用stm32的高级定时器产生脉宽调制
发布日期:2024-11-20 07:12     点击次数:163
使用stm32的高级定时器TIM1和TIM8来产生脉宽调制,应该注意:1.所有都有TIM1,但只有闪存容量大于256K的大容量单片机才有TIM82.与普通定时器相比,高级定时器具有更多TIM_CtrlPWMOutputs(TIM8,ENABLE);TIM1生成四路脉宽调制程序: 静态空隙时间_ GPIO _配置(空隙){GPIO _ IntTypeDefGPIO _ IntStructure;RCC _ APb2周波锁定cmd(RCC _ APb2周波_TIM1,使能);RCC _ APB2Perchickcmd(RCC _ APB2Perich _ GPIOA,ENABLE);GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 8 | GPIO _ Pin _ 9 | GPIO _ Pin _ 10 | GPIO _ Pin _ 11;GPIO_InitStructure。通用输入输出模式;//多路推挽输出GPIO_InitStructure。GPIO _速度= GPIO _速度_ 50兆赫;GPIO _ Init(GPIOA & GPIO _ Init structure);}静态无效时间1 _模式_配置(无效){TIM _时基TimeBaseInitTypeDefTIM _时基结构;TIM _ OCinitTypeDeftim _ OCinitstructure;u16CCR1 _ Val = 500u16CCR2 _ Val = 500u16CCR3 _ Val = 500u16CCR4 _ Val = 500TIM _时基结构。时间周期= 999;//计时器从0到999计数时,为1000次,这是一个计时周期。TIM _时基结构。TIM _预分频器= 71;TIM _时基结构。TIM _ ClockDivision = TIM _ CKD _ DIV 1;//设置时钟分频因子:无分频TIM _时基结构。TIM _计数器代码= TIM _计数器代码_ Up//递增计数模式TIM _时基初始化(TIM1和TIM _时基结构);TIM_OCInitStructure。TIM _ OCMode = TIM _ OCMode _ PWM1//配置为脉宽调制模式1TIM_OCInitStructure。TIM _输出状态= TIM _输出状态_启用;//TIM_OCInitStructure。TIM _ OutPut状态= TIM _ OutPut状态_启用;TIM_OCInitStructure。TIM _ Pulse = CCR1 _ Val//设置跳转值。当计数器计数到这个值时,电平将会跳TIM_OCInitStructure。TIM _ OCpolarity = TIM _ OCpolarity _ High;//当定时器计数值小于CCR1_Val时为高TIM _ OC1单位(TIM1和TIM _ OC1单位结构);//启用通道1TIM _ OC1预加载配置(TIM1,TIM _ OCpreload _ Enable);TIM_OCInitStructure。TIM _输出状态= TIM _输出状态_启用;TIM_OCInitStructure。TIM _ Pulse = CCR2 _ Val//设置通道2的电平跳变值,并以另一个占空比输出脉宽调制。TIM _ OC2 nit(TIM 1 & TIM _ OCinitstructure);//启用通道2TIM _ OC2预加载配置(TIM1, 电子元器件采购网 TIM _ OCpreload _ Enable);TIM_OCInitStructure。TIM _输出状态= TIM _输出状态_启用;TIM_OCInitStructure。TIM _ Pulse = CCR3 _ Val//设置通道3的电平跳变值,并以另一个占空比输出脉宽调制。TIM _ OC3单位(TIM1和TIM _ OC1单位结构);//启用通道3TIM _ OC3预加载配置(TIM1,TIM _ OCpreload _ Enable);TIM_OCInitStructure。TIM _输出状态= TIM _输出状态_启用;TIM_OCInitStructure。TIM _ Pulse = CCR4 _ Val//设置通道4的电平跳变值,并以另一个占空比输出脉宽调制。TIM_OC4Init(TIM1和TIM _ OCinitstructure);//启用通道4TIM _ OC4预加载配置(TIM1,TIM _ OCpreload _ Enable);TIM_ARRPreloadConfig(TIM1,启用);//使能TIM1重载寄存器ARRTIM_CtrlPWMOutputs(TIM1,ENABLE);TIM_Cmd(TIM1,ENABLE);}空隙时间1 _脉宽调制_初始化(空隙){TIM 1 _ GPIO _ Config();TIM1 _模式_配置();}TIM8生成双向脉宽调制程序:静态空隙时间_ GPIO _配置(空隙){GPIO _ IntTypeDefGPIO _ IntStructure;RCC _ APb2周波锁定cmd(RCC _ APb2周波_TIM8,使能);RCC _ APB2Perchickcmd(RCC _ APB2Perich _ GPIOC,ENABLE);GPIO_InitStructure。GPIO _ Pin = GPIO _ Pin _ 7 | GPIO _ Pin _ 9;GPIO_InitStructure。通用输入输出模式;//多路推挽输出GPIO_InitStructure。GPIO _速度= GPIO _速度_ 50兆赫;GPIO _ Init(GPIOC & GPIO _ Init structure);}静态空隙时间8 _模式_配置(空隙){TIM _时基TimeBaseInitTypeDefTIM _时基结构;TIM _ OCinitTypeDeftim _ OCinitstructure;u16CCR1 _ Val = 500u16CCR2 _ Val = 500u16CCR3 _ Val = 500u16CCR4 _ Val = 500TIM _时基结构。时间周期= 999;//计时器从0到999计数时,为1000次,这是一个计时周期。TIM _时基结构。TIM _预分频器= 71;TIM _时基结构。TIM _ ClockDivision = TIM _ CKD _ DIV 1;//设置时钟分频因子:无分频TIM _时基结构。T

  • 上一篇:电阻器常见故障分析及维修方法
  • 下一篇:没有了