sg90

smallcracker 2021-02-24 00:00:00
Categories: Tags:

Tiva tm4c123g平台实现

接线:

上线黄色为PWM输入信号;中线橙色接入电源正极;bai下线棕色接入电源负极。

版本一:使用延时函数实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int angle;
void rotate(){
int cnt=0,door=50;
//定义接入sg90舵机信号线的引脚
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
for(;;){
door=angle*10/9+50;
cnt++;
if(cnt>2000)cnt=0;
if(cnt==0)GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2),UARTprintf("%d\n",angle);
if(cnt==door)GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0);
ROM_SysCtlDelay (clock/ 300000);
}
}

版本二:使用PWM实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//首先配置PWM
void ConfigurePWM(){
//系统时钟是50Mhz 这里进行64分频 得到7812500hzPWM频率
SysCtlPWMClockSet(SYSCTL_PWMDIV_64);
//选择使用的引脚
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);
GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2);
//配置信号分配
GPIOPinConfigure(GPIO_PF2_M1PWM6);
//配置PWM发生器
PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
//配置周期 表示50hz
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, 15625);
//配置占空比
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6, 390);
//使能PWM模块1输出
PWMOutputState(PWM1_BASE, PWM_OUT_6_BIT, true);
//使能PWM发生器
PWMGenEnable(PWM1_BASE, PWM_GEN_3);
}
//然后是旋转函数
int angle;
void rotate(){
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6, 625*angle/72+15625/40);
PWMGenEnable(PWM1_BASE, PWM_GEN_3);
return ;
}