显示占空比
RA4M2-SENSOR开发板具有PWM定时器,可实现不同占空比的脉冲调节功能。
要完成这件事,先要用RASC来生成一个KEIL工程,然后再在KEIL中添加相应的代码即可。
为使用PWM调节功能,需找到"GTIOC2B",将其设置为"P102",见图1所示。

图1 引脚设置
然后,在栈内加入PWM,见图2所示。

图2 添加PWM
再按图3所示进行参数设置,在完成设置后,点击“Generate Project Content”按钮,即可生成KEIL项目。

图3 参数设置
打开所生成的工程,添加设置占空比的函数,其内容为:
void GPT_PWM_SetDuty(uint8_t duty)
{
timer_info_t info;
R_GPT_InfoGet(&g_timer2_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_timer2_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB);
}
在配以串口通信功能的情况下,实现呼吸灯效果的主程序为:
void hal_entry(void)
{
uint8_t duty = 0;
uint8_t direction = 0;
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
R_GPT_Open(&g_timer2_ctrl, &g_timer2_cfg);
R_GPT_Start(&g_timer2_ctrl);
printf("RA4M2-SENSOR test : \\r\\n");
while(1)
{
if(duty==100)
direction = 1;
if(duty == 0)
direction = 0;
if(direction)
duty-=10;
else
duty+=10;
GPT_PWM_SetDuty(duty);
printf("duty: %d \\r\\n",duty);
R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MILLISECONDS);
}
}
经程序的编译和下载,其测试效果如图4和图5所示,说明功能有效。

图4 测试效果

图5 显示效果
在添加OLED屏的情况下,其显示效果如图6所示。

图6 显示占空比
演示视频:
呼吸灯
|