赞
踩
模块:GM90舵机
平台:正点原子精英版 橙线接PC6,其余接VCC,GND
功能:实现舵机0~180度旋转
#include"timer.h"
//timer3 PC6 重装载值200,分频系数7199
//T=20ms,0.5~2.5ms对应0°~180(0,45,90,135,180)
//转动方式,例:TIM_SetCompare1(TIM3, 195);//0度
// TIM_SetCompare1(TIM3, 190);//45度
// 也可以用190到195中间的数表示0~45度内的角度
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);//使能 PC端口 时钟和 AFIO复用功能 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PC6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOC.6
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE); //开启定时器3的部分重映射 改变定时器3的 输出通道 引脚 。比如:通道1的输出引脚为PC6
//初始化定时器3
TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载
TIM_TimeBaseStructure.TIM_Prescaler=psc; //预分频系数
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //没多大关系
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
//初始化 输出比较 参数 输出比较:通过比较来进行输出
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; //pwm模式1:小于有效
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; //通道输出极性 TIM3_CCER寄存器的CC2E位 0:低电平有效 1:高电平有效
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //通道1输出使能
TIM_OC1Init(TIM3,&TIM_OCInitStructure);//定时器3通道2输出的初始化 CNT小于比较值CCR 通道1输出低电平
//使能通道1 输出比较 预装载值
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
//使能定时器3
TIM_Cmd(TIM3,ENABLE);
}
#ifndef __TIMER_H
#define __timer_h
#include"sys.h"
void TIM3_PWM_Init(u16 arr,u16 psc);
#endif
#include "sys.h"
#include "delay.h"
#include "timer.h"
int main(void)
{
delay_init();
TIM3_PWM_Init(199,7199);
while(1)
{
delay_ms(1000);
TIM_SetCompare1(TIM3, 195);//0度
delay_ms(1000);
TIM_SetCompare1(TIM3, 192);//28度
delay_ms(1000);
TIM_SetCompare1(TIM3, 190);//45度
delay_ms(1000);
TIM_SetCompare1(TIM3, 187);//72度
delay_ms(1000);
TIM_SetCompare1(TIM3, 185);//90度
delay_ms(1000);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。