打印
[应用相关]

ST32之PWM

[复制链接]
591|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 通用定时器PWM概述
  1) ST32PWM工作过程:

使用特权

评论回复
沙发
欢乐家园|  楼主 | 2021-3-28 23:23 | 只看该作者
工作过程:TIM_xARR(自动重装载寄存器)控制PWM的频率,TIMx_CCRx(捕获比较寄存器)控制PWM的占空比。当CCRxTIM_CNT,IO口输出高电平,如此往复输出(CNT的值一直在0~ARR之间变换),输出PWM波.

使用特权

评论回复
评论
欢乐家园 2021-3-28 23:24 回复TA
注:至于高低电平有效,是根据TIMx_CCER(捕获比较使能寄存器)的CCEP位来决定的 
板凳
欢乐家园|  楼主 | 2021-3-28 23:24 | 只看该作者
2)PWM模式1和PWM模式2

使用特权

评论回复
地板
欢乐家园|  楼主 | 2021-3-28 23:25 | 只看该作者

使用特权

评论回复
5
欢乐家园|  楼主 | 2021-3-28 23:25 | 只看该作者
2. 库函数配置
     1) ①PWM输出库函数
 void TIM_OCxInit(TIM_TypeDef* TIM_OCInitTypeDef* TIM_OCInitStruct);

     typedef struct
   {
       uint16_t TIM_OCMode;//PWM模式1或者模式2
       uint16_t TIM_OutputState;//比较输出使能
       uint16_t TIM_Pulse;//  设置CCRx的值
       uint16_t TIM_OCPolarity;//比较输出极性
     }TIM_OCInitTypeDef;

TIM_OCInitStructure. TIM_OCMode=TIM_OCMode_PWM2; //PWM2模式
TIM_OCInitStructure. TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OCInitStructure. TIM_Pulse=100;
TIM_OCInitStructure. TIM_OCPolarity;=OCPolarity_High;//输出极性,TIM输出比较极性高
TIM_OC2Init(TIM3,&TIM_OCInitStructure);//根据指定参数初始化外设TIM3 OC2

使用特权

评论回复
6
欢乐家园|  楼主 | 2021-3-28 23:26 | 只看该作者
2) PWM输出配置步骤:

使用特权

评论回复
7
欢乐家园|  楼主 | 2021-3-28 23:27 | 只看该作者
① 使能定时器3和相关GPIO口时钟:RCC_APB1PeriphClockCmd();
                                                 RCC_APB2PeriphClockCmd();

使用特权

评论回复
8
欢乐家园|  楼主 | 2021-3-28 23:27 | 只看该作者
  ② 初始化IO口为复用功能输出:GPIO_Init();

使用特权

评论回复
9
欢乐家园|  楼主 | 2021-3-28 23:28 | 只看该作者
③ 这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,所以需要开启AFIO时钟,同时设置重映射:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENZNLE);
           GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);

使用特权

评论回复
10
欢乐家园|  楼主 | 2021-3-28 23:29 | 只看该作者
④ 初始化定时器:ARR,PSC等:TIM_OC2Init();

使用特权

评论回复
11
欢乐家园|  楼主 | 2021-3-28 23:29 | 只看该作者
⑤ 初始化输出比较参数:TIM_OC2Init();

使用特权

评论回复
12
欢乐家园|  楼主 | 2021-3-28 23:30 | 只看该作者
⑥ 使能预装载寄存器:TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);

使用特权

评论回复
13
欢乐家园|  楼主 | 2021-3-28 23:31 | 只看该作者
⑦ 使能定时器:TIM_Cmd();

使用特权

评论回复
14
欢乐家园|  楼主 | 2021-3-28 23:31 | 只看该作者
⑧ 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

使用特权

评论回复
15
欢乐家园|  楼主 | 2021-3-28 23:32 | 只看该作者
3. PWM输出实验
  1)TIM3_PWM_Init(u16 arr,u16 psc)    //包含上步①~⑦步骤

使用特权

评论回复
16
欢乐家园|  楼主 | 2021-3-28 23:33 | 只看该作者

使用特权

评论回复
17
欢乐家园|  楼主 | 2021-3-28 23:33 | 只看该作者
2)主函数:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

918

帖子

1

粉丝