舵机
这次使用PWM驱动舵机
1.简单说下舵机

2.FSP配置

我这里选择的是GTP1,引脚是109。因为舵机是20ms周期,所以频率选择50hz
时钟配置:

引脚配置:

生成代码,转到keil
3.keil5代码
1.PWM设置代码:
void GPT_PWM_SetDuty(uint8_t duty)
{
timer_info_t info;
R_GPT_InfoGet(&g_timer1_ctrl, &info);
uint32_t current_period_counts = info.period_counts;
uint32_t duty_cycle_counts = (uint32_t)(((uint64_t)current_period_counts * duty) / 100);
R_GPT_DutyCycleSet(&g_timer1_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCA);
}
2.主函数
void hal_entry(void)
{
#if BSP_TZ_SECURE_BUILD
R_BSP_NonSecureEnter();
#endif
uint8_t duty = 0;
uint8_t step = 0;
R_GPT_Open(&g_timer1_ctrl, &g_timer1_cfg);
R_GPT_Start(&g_timer1_ctrl);
while(1)
{
if (duty >= 25) {
step = -1;
} else if (duty <= 1) {
step = 1;
}
duty += step;
GPT_PWM_SetDuty(duty);
R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
}
}
注意:一定要有开始代码的函数,即:
R_GPT_Start(&g_timer1_ctrl);
|