PWM(脉宽调制)
来源:互联网 发布:东京女子图鉴 知乎 编辑:程序博客网 时间:2024/05/29 07:32
PWM(脉宽调制)
占空比:pwm占空比就是一个脉冲周期内高电平的所整个周期占的比例。
其余TIM:4路PWM输出
控制PWM的三个寄存器
捕获/比较模式寄存器(TIMx_CCMR1/2)
捕获/比较使能寄存器(TIMx_CCER)
捕获/比较寄存器(TIMx_CCR1~4)
//捕获/比较模式寄存器(TIMx_CCMR1/2)
CCMR1控制CH1和2
CCMR2控制CH3和4
模式设置位OCxM
使用PWM模式必须设置为110/111(输出电平极性有区别)
//捕获/比较使能寄存器(TIMx_CCER)
CC2E是输入/捕获输出使能位
该位设置为1,PWM从IO口输出
//捕获/比较寄存器(TIMx_CCR1~4)
对应CH1~4
该寄存器的值与CNT的值比较,通过修改此寄存器的值就可以控制PWM的输出脉宽。
STM32的重映射控制(复用重映射和调试IO配置寄存器AFIO_MAPR)
TIM3_REMAP重映射表
如图
如果TIM3_REMAP设置为00,是没有映射
如果TIM3_REMAP设置为10,即部分映射,如图所示的箭头。
值得注意的是当我们设置TIM3_REMAP为10的时候PA6映射到PB4,同时PA7映射到PB5.
//配置步骤
1.开启TIM时钟以及复用功能时钟,配置io口为复用输出
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx,ENABLE);//使能定时器时钟
RCC_APB1PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//复用时钟使能
GPIO_InitStructure.GPIO_Mode_AF_PP;//复用推挽输出
2.设置TIMx_CHx重映射
如TIM3部分重映射
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);
#define GPIO_PartialRemap_TIM3 ((uint32_t)0x001A0800)
3.初始化TIM设置的ARR和PSC
PWM频率=时钟/(ARR+1)
4.设置TIMx_CHx的PWM模式,使能TIM的CH输出。
PWM的通道设置通过TIM_OC1Init~TIM_OC4Init()
/////////////////////////////////////////////////////
typedef struct
{
uint16_t TIM_OCMode;//模式设置,PWM,输出比较
uint16_t TIM_OutputState;//输出使能,输出到端口
uint16_t TIM_OutputNState;
uint16_t TIM_Pulse;
uint16_t TIM_OCPolarity;//设置极性的高低(就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。 )
uint16_t TIM_OCNPolarity;
uint16_t TIM_OCIdleState;
uint16_t TIM_OCNIdleState;
} TIM_OCInitTypeDef
其他的为高级定时器才会用到这里暂时不介绍。
/////////////////////////////////////////////////////
实现格式
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择 PWM 模式 2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性高
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //初始化 TIM3 OC2
5.使能TIM。
6.修改TIMx_CCRx来控制占空比。
假如不设置,那么其占空比和频率都是固定值。
void TIM_SetCompare2(TIM_TypeDef* TIMx,uint16_t Compare2);
占空比:pwm占空比就是一个脉冲周期内高电平的所整个周期占的比例。
例如1秒高电平1秒低电平的PWM波占空比是50%。
TIM6和TIM7:不可以产生pwm输出
TIM1和TIM8:7路的PWM输出其余TIM:4路PWM输出
控制PWM的三个寄存器
捕获/比较模式寄存器(TIMx_CCMR1/2)
捕获/比较使能寄存器(TIMx_CCER)
捕获/比较寄存器(TIMx_CCR1~4)
//捕获/比较模式寄存器(TIMx_CCMR1/2)
CCMR1控制CH1和2
CCMR2控制CH3和4
模式设置位OCxM
使用PWM模式必须设置为110/111(输出电平极性有区别)
//捕获/比较使能寄存器(TIMx_CCER)
CC2E是输入/捕获输出使能位
该位设置为1,PWM从IO口输出
//捕获/比较寄存器(TIMx_CCR1~4)
对应CH1~4
该寄存器的值与CNT的值比较,通过修改此寄存器的值就可以控制PWM的输出脉宽。
STM32的重映射控制(复用重映射和调试IO配置寄存器AFIO_MAPR)
TIM3_REMAP重映射表
如图
如果TIM3_REMAP设置为00,是没有映射
如果TIM3_REMAP设置为10,即部分映射,如图所示的箭头。
值得注意的是当我们设置TIM3_REMAP为10的时候PA6映射到PB4,同时PA7映射到PB5.
//配置步骤
1.开启TIM时钟以及复用功能时钟,配置io口为复用输出
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx,ENABLE);//使能定时器时钟
RCC_APB1PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//复用时钟使能
GPIO_InitStructure.GPIO_Mode_AF_PP;//复用推挽输出
2.设置TIMx_CHx重映射
如TIM3部分重映射
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);
#define GPIO_PartialRemap_TIM3 ((uint32_t)0x001A0800)
3.初始化TIM设置的ARR和PSC
PWM频率=时钟/(ARR+1)
4.设置TIMx_CHx的PWM模式,使能TIM的CH输出。
PWM的通道设置通过TIM_OC1Init~TIM_OC4Init()
/////////////////////////////////////////////////////
typedef struct
{
uint16_t TIM_OCMode;//模式设置,PWM,输出比较
uint16_t TIM_OutputState;//输出使能,输出到端口
uint16_t TIM_OutputNState;
uint16_t TIM_Pulse;
uint16_t TIM_OCPolarity;//设置极性的高低(就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。 )
uint16_t TIM_OCNPolarity;
uint16_t TIM_OCIdleState;
uint16_t TIM_OCNIdleState;
} TIM_OCInitTypeDef
其他的为高级定时器才会用到这里暂时不介绍。
/////////////////////////////////////////////////////
实现格式
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择 PWM 模式 2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性高
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //初始化 TIM3 OC2
5.使能TIM。
6.修改TIMx_CCRx来控制占空比。
假如不设置,那么其占空比和频率都是固定值。
void TIM_SetCompare2(TIM_TypeDef* TIMx,uint16_t Compare2);
阅读全文
0 0
- PWM脉宽调制
- PWM(脉宽调制)
- PWM-脉宽调制介绍
- STC12C4052 PWM脉宽调制功能模块
- PWM脉宽调制原理
- S3C2410中的脉宽调制定时器(PWM)
- 直流电机_脉宽调制调速(PWM)
- 用Arduino剖析PWM脉宽调制
- 脉宽调制(PWM)的基本原理及其应用实例
- 脉宽调制(PWM)的基本原理及其应用实例
- 树莓派的PWM脉宽调制功能介绍
- S3C2410 实验八—— 脉宽调制(PWM)实验
- PWM(脉宽调制)的基本原理 及其 应用实例
- PWM(脉宽调制)的基本原理 及其 应用实例 .
- PWM(脉宽调制)的基本原理及其应用实例
- 使用 RPi.GPIO 模块的脉宽调制(PWM)功能
- 使用 RPI.GPIO 模块的脉宽调制(PWM)功能
- 树梅派应用13:使用 RPI.GPIO 模块的脉宽调制(PWM)功能
- WebView图片自适应屏幕
- 初学数据仓库-ETL简单理解
- iOS的framework动态库
- SVN地址
- react native point
- PWM(脉宽调制)
- React/React Native 的ES5 ES6写法对照表
- iOS10/sdk10/xcode8/iphone7(+)/swift3适配
- python学习之字符串
- iOS10 推送通知整理
- Java NIO系列教程(九) ServerSocketChannel
- java学习 20170706 Maven 的作用
- 部分伸缩的TextView
- TVOS tips