十二、STM32基于标准库的PWM输出及控制Servo180℃舵机转动

1.输出PWM代码(PA0-TimerCH1为例)

1.1 使能定时器和相关GPIO口的时钟

1     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
2     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

1.2 初始化IO口的功能

1     GPIO_InitTypeDef GPIO_InitStruct;
2     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出模式
3     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
4     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
5     GPIO_Init(GPIOA,&GPIO_InitStruct);

1.3 定时器初始化,设置自动装载值和分频系数,计算周期时间

1     TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
2     TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
3     TIM_TimeBaseInitStruct.TIM_Period=20000-1;
4     TIM_TimeBaseInitStruct.TIM_Prescaler=72-1;//20ms
5     TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
6     //TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;//高级定时器使用
7     TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

1.4 初始化输出比较参数

1     TIM_OCInitTypeDef TIM_OCInitStruct;
2     TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;//PWM模式,模式1 向上计数时:CNT < CCR1 则输出有效电平,否则输出无效电平
3     TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//比较输出极性,设置有效电平为高电平还是低电平
4     TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能
5     TIM_OCInitStruct.TIM_Pulse = 0;//比较值,写CCRx,设置占空比(高电平/低电平)的比例
6     TIM_OC1Init(TIM2,&TIM_OCInitStruct);//CH1使用OC1

1.5 使能预装载寄存器

1   TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);

1.6 使能自动重装载的预装载寄存器允许位,使比较寄存器ARR立即生效,否则下个比较周期生效

1     TIM_ARRPreloadConfig(TIM2,ENABLE);

1.7 使能定时器

1     TIM_Cmd(TIM2,ENABLE);

1.8 改变占空比

1     TIM_SetCompare1(TIM2,500);//0.5ms

2.180℃舵机知识

  需要时间为20ms的时基,改变不同的占空比来改变转动的角度。

高电平时间 角度 占空比
0.5ms 0 2.5
1ms 45° 5
1.5ms 90° 7.5
2ms 135° 10
2.5ms 180° 12.5

3.MDK5的模拟示波器观察端口输出波形

3.1 小扳手修改“Debug”的一些参数

 3.2 打开调试界面,打开Logic Analyzer模拟示波器界面

 3.4 点击setup设置要观察的端口,输入PORTA.0表示PA0端口,会自动转换为PORTA&0x00000001形式,显示类型选择Bit位

 3.5 关闭设置界面,全速运行程序观察波形

posted @   稚终KINO  阅读(233)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示