STM32的PWM信号控制
- 舵机
电源线通常是红色的,应该连接到Arduino控制板上的5V针脚;
GND地线通常是黑色或棕色的,应该连接到ULN2003 IC上10-16针的任意一个;
信号线通常是黄色或白色的,应该连接到Arduino 9号引脚
3.PWM
pwm输出
CCRx ARR CNT
与CCRx进行比较,比CCRx低输出低电平,比CCRx高输出高电平
ARR决定周期,前提是与定时器有关,占空比是由CCRx决定的
呼吸灯
一般舵机脉冲周期为20ms,宽度为1.5ms
周期=装载值x分频系数 / 72MHz(定时器时钟)
#include "timer.h"
void Servo_PWM_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;//定义结构体变量
TIM_OCInitTypeDef TIM_OCInitStructure;//定义输出比较结构体变量
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIO时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能复用时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//配置GPIO引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置GPIO速率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//配置GPIO为复用推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure);//GPIO初始化函数
TIM_TimeBaseStruct.TIM_Period=9999;//设置自动装载的周期值,计算方法多了
TIM_TimeBaseStruct.TIM_Prescaler=143;//设置预分频系数
TIM_TimeBaseStruct.TIM_ClockDivision=0;//设置时钟分割,0同TIM_CKD_DIV1
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStruct);//定时器初始化函数
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM模式1
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出比较极性高
//多舵机,怎么控制,同一个定时器下的四个通道,所以,下面的8句就很重要
TIM_OC1Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道1
TIM_OC2Init(TIM4,&TIM_OCInitStructure);
TIM_OC3Init(TIM4,&TIM_OCInitStructure);
TIM_OC4Init(TIM4,&TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较1预装载寄存器使能
TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);
TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);
TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);
TIM_Cmd(TIM4,ENABLE);//TIM4使能,忘了就前功尽弃了
}
名词解释:
占空比:单片机通过测量输入脉冲的高电平时间及周期而实现占空比测量
周期:PWM一个波段的时间
TIM定时器:共有四个
分频系数:将时钟源的频率降低,方便低速设备时钟选择,
比如你的晶振是10M,定时器的计数器是65535,如果没有分频器,只能计时65535/10000000=6.5毫秒
如果有了分频器,2分频,定时长度就变为2倍了,当然精度也下降了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了