打印
[APM32F4]

【APM32F402R Micro-EVB开发板测评】+呼吸灯效果

[复制链接]
183|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinglixixi|  楼主 | 2025-7-22 23:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

利用PWM的调节功能可以实现LED的呼吸灯效果,为调整呼吸灯的快慢,可为其配置一个时间很短的延时函数。
该延时函数的内容为:
void Delay(void)
{
volatile uint32_t delay = 0x2ffff;
while(delay--);
}

为进行PWM调节,其初始化函数为:
void TMR_Config(void)
{
RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR5);
tmrBaseConfig.countMode = TMR_COUNTER_MODE_UP;
tmrBaseConfig.clockDivision = TMR_CLOCK_DIV_1;
tmrBaseConfig.period = 999;
tmrBaseConfig.division = 119;
tmrBaseConfig.repetitionCounter = 0;
TMR_ConfigTimeBase(TMR5, &tmrBaseConfig);
tmrOCConfig.mode = TMR_OC_MODE_PWM1;
tmrOCConfig.outputState = TMR_OC_STATE_ENABLE;
tmrOCConfig.outputNState = TMR_OC_NSTATE_DISABLE;
tmrOCConfig.polarity = TMR_OC_POLARITY_HIGH;
tmrOCConfig.nPolarity = TMR_OC_NPOLARITY_HIGH;
tmrOCConfig.idleState = TMR_OC_IDLE_STATE_RESET;
tmrOCConfig.nIdleState = TMR_OC_NIDLE_STATE_RESET;
tmrOCConfig.pulse = 0;
TMR_ConfigOC2(TMR5, &tmrOCConfig);
TMR_EnablePWMOutputs(TMR5);
TMR_Enable(TMR5);
}

对PWM输出引脚的配置函数为:
void TMR_GPIO_Config(void)
{
GPIO_Config_T gpioConfig;
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);
gpioConfig.speed = GPIO_SPEED_50MHz;
gpioConfig.mode = GPIO_MODE_AF_PP;
gpioConfig.pin = GPIO_PIN_1;
GPIO_Config(GPIOA, &gpioConfig);
}

经前面几个函数的配合,实现呼吸灯效果的主程序为:
int main(void)
{
uint8_t f=0;
BOARD_LED_Config(LED2);
TMR_GPIO_Config();
TMR_Config();
while (1)
{
if(f==0)
{
t=t+1;
if(t>100) f=1;
}
else
{
t=t-1;
if(t<1) f=0;
}
tmrOCConfig.pulse = t;
TMR_ConfigOC2(TMR5, &tmrOCConfig);
Delay();
}
}

经程序的编译和下载,则可在PA1引脚所连接的LED模块上见到所呈现的呼吸灯效果。

演示效果:




使用特权

评论回复
沙发
HeartbeatEcho| | 2025-7-23 10:36 | 只看该作者
一个timer控制PWM改变频率,一个timer输出变化的PWM的duty。
got it!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

508

主题

2911

帖子

39

粉丝