这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 瑞萨RA0单片机连载之八——PWM实现呼吸灯

共2条 1/1 1 跳转至

瑞萨RA0单片机连载之八——PWM实现呼吸灯

助工
2024-06-02 13:40:38     打赏

RA0E1拥有16bit的定时器。定时器支持PWM输出功能。这一节我将展示如何配置并实现呼吸灯的效果。

在前面工程基础之上打开RASC配置工具,新建一个r_tau_pwm的stack,并激活pwm

image.png

开发板板载的LED1为P103,所以在Pwm的属性中配置通道数为5,并设置TIO5,其详细配置属性如下图:

image.png

然后重新生成工程代码,打开工程,添加修改占空比与初始化代码如下:

/** 自定义函数:设置PWM占空比
    @param duty 占空比范围:0~100 %
*/
void TAU_PWM_SetDuty(uint8_t duty)
{
    timer_info_t info;
    uint32_t current_period_counts;
    uint32_t duty_cycle_counts;

    if (duty > 100)
        duty = 100; //限制占空比范围:0~100

    /* 获得TAU的信息 */
    R_TAU_PWM_InfoGet(&g_timer0_ctrl, &info);

    /* 获得计时器一个周期需要的计数次数 */
    current_period_counts = info.period_counts;

    /* 根据占空比和一个周期的计数次数计算 */
    duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * duty) / 100);

    /* 设置占空比(设置从通道输出占空比) */
    R_TAU_PWM_DutyCycleSet(&g_timer0_ctrl, duty_cycle_counts, TAU_PWM_IO_PIN_CHANNEL_5);

}

void TAU_PWM_Init(void)
{
    /* 初始化 TAU 模块 */
    R_TAU_PWM_Open(&g_timer0_ctrl, &g_timer0_cfg);

    /* 启动 TAU_GPT 定时器 */
    R_TAU_PWM_Start(&g_timer0_ctrl);

    /* 重新设置占空比为 80% */
    TAU_PWM_SetDuty(80);
}

【测试】

在主循环中添加测试代码如下,:

        for(dutys=0;dutys<95;++dutys)
        {

            R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS);
            TAU_PWM_SetDuty(dutys);

            dutys++;

        }

下载程序后就可以看到LED1程现在的呼吸灯效果。

附工程源码:

PWM.zip





关键词: 刘工爱评测之瑞萨RA0单片机     PWM    

助工
2024-10-03 17:31:45     打赏
2楼

谢谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]