瑞萨单片机论坛
直播中

jf_00744524

4年用户 11经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【RA-Eco-RA0E1-32PIN-V1.0开发板试用】pwm控制led呼吸灯

我们继续熟悉e2studio的工具配置生成代码,本部分介绍,通过芯片的SAU单元部分,使能PWM功能,来输出可变的占空比,来控制LED的亮案。
首先我们查看原理图
image.png

我们使用的P112这个引脚控制led,对应手册查看20脚的信息。
image.png

所以,我们稍后对软件的配置,就要使能这个TO03这个功能。硬件不需要我们实际连接,上电连接jlink即可。
软件部分:
e2studio工具配置流程,我们在stacks中新建new stack,选择如下几项,
image.png
这个slave部分,系统要求,必须至少添加一个。
image.png
然后进入属性配置,主要是设置PWM输出,周期,计数值,引脚。

配置如下:
image.png

image.png

然后我们生成工程文件。
呼吸灯的亮暗,实际就是间断性的改变占空比的数值,使得方波从0-100%的连续变化,输出电压从0-3.3V的变化,那么,我们可以根据系统提供的PWM相关函数可以找到改变占空比的函数,尝试引用。
image.png
我们引用上面两个函数到hal_entry中

status = R_TAU_PWM_Open(&g_timer0_ctrl, &g_timer0_cfg);

    R_BSP_SoftwareDelay(20, BSP_DELAY_UNITS_MILLISECONDS);

    status = R_TAU_PWM_Start(&g_timer0_ctrl);

//status = R_TAU_PWM_PeriodSet(&g_timer0_ctrl, 3200);



while(1)

    {

if(light == 1){

for(j = 0; j < 100 ; j++){

//g_timer0_ctrl.p_cfg->duty_cycle_counts = j * 100;

status = R_TAU_PWM_DutyCycleSet(&g_timer0_ctrl, j * 400, TAU_PWM_IO_PIN_CHANNEL_3);

            R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);

if(j == 99){

                light = 0;

            }

            }

       }else{

for(j = 100; j >0; j--){

status = R_TAU_PWM_DutyCycleSet(&g_timer0_ctrl, j * 400, TAU_PWM_IO_PIN_CHANNEL_3);

                       R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);

if(j == 1){

                           light = 1;

                       }

       }

这样,我们就连续的改变占空比的值,可以实现led的亮暗变化。

PWM_LED

更多回帖

发帖
×
20
完善资料,
赚取积分