你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32C031评测】4.PWM与LED的呼吸灯

[复制链接]
jundao721 发布时间:2024-3-22 20:09

本次实现目标还是使用板卡自带的LED灯。如图1所示:

4-1.JPG

图1

阅读Datasheet上可以看到,PA5是可以复用TIM1的Channel1通道的,这样在Cubemx中就容易配置了。开始在CubeMx配置引脚参数和定时器参数,如图2所示:

4-2.JPG

本次配置为频率10KHz。呼吸灯的原理就是按一定数值修改PWM的占空比,这样就能实现呼吸灯的效果,主函数中修改代码如下:



void PWM_Chang(uint16_t pwm)
{
     TIM_OC_InitTypeDef sConfigOC = {0};

     HAL_TIM_PWM_Stop(&htim1 ,TIM_CHANNEL_1);
     sConfigOC.OCMode = TIM_OCMODE_PWM1;
   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
   sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
   sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;

    sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
        sConfigOC.Pulse =(uint32_t) 200*pwm/100;
        HAL_TIM_PWM_ConfigChannel(&htim1 , &sConfigOC, TIM_CHANNEL_1);
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
        HAL_Delay(10);
} 

在while中修改一下,如下:

if(flag == 0)
     {
         Value+=1;
         HAL_Delay(20);
         PWM_Chang(Value);
         if(Value>=0x20)
             flag =1;
     }
     if(flag==1)
     {
         Value -=1;
         HAL_Delay(20);
         PWM_Chang(Value);
         if(Value<=1)
             flag=0;
     }

修改好以后,Debug,可以看到呼吸灯的效果,如图3所示:

4-3.gif

图3

收藏 评论0 发布时间:2024-3-22 20:09

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版