【实现功能】
使led1实现亮度的变化,实现呼吸灯的效果。
【简介】
RA6E1是通过GPT-Timer-PWM来实现pwm输出。
【实现步骤】
1、新建空白工程,添加一个gpt_pwm_pwm到工程里面。
image.png
2、配置属性如下:
image.png
3、生成工程后,打开hal_entry.c输入初始化gpt_timer,配置重载值,在主循环里编写修改占空比的值,这样就实现了pwm呼吸灯的效果:
/*******************************************************************************************************************//**
* main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
* is called by main() when no RTOS is used.
**********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    uint16_t cycleValue;
    fsp_err_t err = FSP_SUCCESS;
    err = R_GPT_Open(&g_timer_pwm_ctrl, &g_timer_pwm_cfg);
    assert(FSP_SUCCESS == err);
    err = R_GPT_Start(&g_timer_pwm_ctrl);
    err = R_GPT_PeriodSet(&g_timer_pwm_ctrl, 5000);
    assert(FSP_SUCCESS == err);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功
    err = R_GPT_DutyCycleSet(&g_timer_pwm_ctrl, 1250, GPT_IO_PIN_GTIOCB);
    assert(FSP_SUCCESS == err);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功
    err = R_GPT_Reset(&g_timer_pwm_ctrl);
    assert(FSP_SUCCESS == err);
    R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功
    while(1)
    {
        for(cycleValue=0; cycleValue<5000; cycleValue+=50)
        {
            R_GPT_DutyCycleSet(&g_timer_pwm_ctrl, cycleValue, GPT_IO_PIN_GTIOCB);
            R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功
        }
    }
}