1 Star 2 Fork 0

wangjiewen / STM32基础代码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
pwm_led.c 1.77 KB
一键复制 编辑 原始数据 按行查看 历史
wangjiewen 提交于 2020-10-22 10:12 . first commit
#include "pwm_led.h"
static uint32_t PWM_arr = 0;
static uint32_t PWM_prescaler = 0;
static int16_t brightness = 0;
void PWM_LED_Init(void);
static void GPIO_Configure(void)
{
GPIO_InitTypeDef GPIOInitType;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
GPIOInitType.GPIO_Pin = GPIO_Pin_5;
GPIOInitType.GPIO_Mode = GPIO_Mode_AF_PP;
GPIOInitType.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);
GPIO_Init(GPIOB,&GPIOInitType);
}
static void TIM_Configure(void)
{
TIM_TimeBaseInitTypeDef TIMInitType;
TIMInitType.TIM_Period = PWM_arr; //设置定时器的周期
TIMInitType.TIM_Prescaler = PWM_prescaler;
TIMInitType.TIM_ClockDivision = TIM_CKD_DIV1;
TIMInitType.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIMInitType);
}
static void PWM_Configure(void)
{
TIM_OCInitTypeDef TIMOCInitType;
TIMOCInitType.TIM_OCMode = TIM_OCMode_PWM1; //pwm1模式即计数值小于pulse有效,大于pulse小于arr为无效电平
TIMOCInitType.TIM_OCPolarity = TIM_OCPolarity_Low; //设置为低电平有效
TIMOCInitType.TIM_OutputState = ENABLE;
TIM_OC2Init(TIM3,&TIMOCInitType);
TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3,ENABLE);//使能预装载寄存器
TIM_Cmd(TIM3,ENABLE);
}
void User_PWM_Init(uint32_t arr,uint32_t prescaler)
{
PWM_arr = arr;
PWM_prescaler = prescaler;
GPIO_Configure();
TIM_Configure();
PWM_Configure();
}
void BrightnessControl()
{
brightness += 50;
if(brightness > PWM_arr)
brightness = 0;
TIM_SetCompare2(TIM3,brightness);
}
C
1
https://gitee.com/wangmimo/stm32-basic-code.git
git@gitee.com:wangmimo/stm32-basic-code.git
wangmimo
stm32-basic-code
STM32基础代码
master

搜索帮助