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; 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
| void ConfigurePWM(){ SysCtlPWMClockSet(SYSCTL_PWMDIV_64); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1); GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2); GPIOPinConfigure(GPIO_PF2_M1PWM6); PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, 15625); PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6, 390); PWMOutputState(PWM1_BASE, PWM_OUT_6_BIT, true); 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 ; }
|