STM32 PWM可控制电压原理

PWM可控制电压原理

主要通过PWM 输入模式根据控制单位时间内输出的平均电压,以调节电压大小。而PWM输出模式通过调节占空比,控制平均电压大小;

设置TIM为PWM输出模式

第一步:时钟使能:

GPIO,TIM;

第二步:设置引脚为复用模式

第三步:复用为指定TIM的PWM输出模式

第四步:定时器时基单元的配置

第五步:配置定时器的输出比较功能

cpp 复制代码
void timeer14PWM_init(){
//  开启时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);

//设置PWM输出引脚位复用模式
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
	GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AF;
	GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Speed=GPIO_Low_Speed;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOF,&GPIO_InitStruct);
	
//设置配置GIPO
	GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);


	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
//	设置分频 将84MH降为10000Hz
	TIM_TimeBaseInitStruct.TIM_Prescaler=84-1;
//	设置计数模式往上加,还是往下减
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
//	设置自动复位计数器为10000,恰好为1秒,2000相当于0.2秒
	TIM_TimeBaseInitStruct.TIM_Period=2000-1;
//	设置通用定时器分频为1
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
//	初始化定时器
	TIM_TimeBaseInit(TIM14, &TIM_TimeBaseInitStruct);


//设置寄存器模式
	TIM_OCInitTypeDef TIM_OCInitStruct;
//设置位PWM输出模式
	TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;
	TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
	TIM_OCInitStruct.TIM_Pulse=100;
	TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_Low;
	TIM_OC1Init(TIM14, &TIM_OCInitStruct);

//	开启定时器
	TIM_Cmd( TIM14, ENABLE);

}
相关推荐
偶像你挑的噻5 小时前
15-Linux驱动开发-PWM子系统
linux·驱动开发·stm32·嵌入式硬件
硅农深芯5 小时前
是时候跟GitBucket说再见了
git·单片机
未来之窗软件服务5 小时前
幽冥大陆(三十八)P50酒店门锁SDK C#仙盟插件——东方仙盟筑基期
开发语言·单片机·c#·东方仙盟·东方仙盟sdk·东方仙盟vos智能浏览器
Java小白,一起学习8 小时前
STM32新建工程(标准库官网下载)
stm32·单片机·嵌入式硬件
vickycheung38 小时前
RK3588增加Xenomai3实时补丁
经验分享·嵌入式硬件·arm 嵌入式开发
Bona Sun10 小时前
单片机手搓掌上游戏机(十五)—pico运行fc模拟器之编译环境
c语言·c++·单片机·游戏机
贝塔实验室10 小时前
红外编解码彻底解析
网络·嵌入式硬件·信息与通信·信号处理·代码规范·基带工程·精益工程
小尧嵌入式10 小时前
C++基础语法总结
开发语言·c++·stm32·单片机·嵌入式硬件·算法
2401_8534482311 小时前
STM32F103C8T6---OLED显示屏
stm32·单片机·oled
沐欣工作室_lvyiyi11 小时前
基于单片机的居家智能音箱系统(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·智能音箱