600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【学习记录】 STM32 PWM输出实验

【学习记录】 STM32 PWM输出实验

时间:2018-12-17 22:38:21

相关推荐

【学习记录】 STM32 PWM输出实验

STM32 PWM工作过程

以通道1为例:

CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。

CCMR1: OC1M[2:0]位:

对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】

CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。

CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

PWM模式1 & PWM模式2

void TIM_OC2PreloadConfig(TIM_TypeDef*TIMx, uint16_tTIM_OCPreload);

voidTIM_ARRPreloadConfig(TIM_TypeDef*TIMx,FunctionalStateNewState);

STM32 定时器3输出通道引脚

PWM输出库函数

voidTIM_OCxInit(TIM_TypeDef*TIMx,TIM_OCInitTypeDef*TIM_OCInitStruct);

设置比较值函数:

voidTIM_SetCompareX(TIM_TypeDef*TIMx, uint16_t Compare2);

使能输出比较预装载:

void TIM_OC2PreloadConfig(TIM_TypeDef*TIMx, uint16_tTIM_OCPreload);

使能自动重装载的预装载寄存器允许位:

voidTIM_ARRPreloadConfig(TIM_TypeDef*TIMx,FunctionalStateNewState);

PWM输出实验:

使用定时器3的PWM功能,输出占空比可变的PWM波,用来驱动LED灯,从而达到LED【PB5】亮度由暗变亮,又从亮变暗,如此循环。

PWM输出配置步骤:

使能定时器3和相关IO口时钟。

使能定时器3时钟:RCC_APB1PeriphClockCmd();

使能GPIOB时钟:RCC_APB2PeriphClockCmd();

初始化IO口为复用功能输出。函数:GPIO_Init();

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,

所以需要开启AFIO时钟。同时设置重映射。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

初始化定时器:ARR,PSC等:TIM_TimeBaseInit();

初始化输出比较参数:TIM_OC2Init();

使能预装载寄存器:TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);

使能定时器。TIM_Cmd();

不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

重要代码:

timer.c:

main.c:

下载程序后,红灯由暗变亮由亮变暗循环。

总结

只能说是粗略了解了PWM的相关原理和基本用法,PWM输出会在后期经常用到,所以希望我自己在学到之后的内容后再回来重新好好整理一下该部分的内容!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。