STM32
直播中

李芳

7年用户 1411经验值
私信 关注
[问答]

STM32L0使用延时函数使PWM波形移相,延时函数不起作用的原因?

使用的是STM32L0系列,准备使用延时函数使PWM波形移相,现在延时函数不起作用
delay.c函数如下:
//us
void delay_us(uint32_t nus)
{
uint32_t temp;
Systick->LOAD = 30*nus;
SysTick->VAL=0X00;
SysTick->CTRL=0X01;
do
{
  temp=SysTick->CTRL;
}while((temp 0x01)  (!(temp (1<<16))));
     SysTick->CTRL=0x00;
    SysTick->VAL =0X00;
}

main函数使用delay如下:
HAL_TIM_PWM_Start( htim2, TIM_CHANNEL_4);
delay_us(20);
HAL_TIM_PWM_Start( htim2, TIM_CHANNEL_2);
但是定时器2的2通道输出PWM波并没有发生延时变化,这是为什么?

回帖(1)

李继明

2024-3-21 14:24:40
首先,这个延时函数本身配置没问题的话肯定是可以有效运行的。

其次,你现在觉得不起作用,是基于2个TIMER输出通道没有产生带相移的
输出而得出的结论,只能说这个方式不可行,不能说这个延时函数本身没作用。

其实,目前你这个方式只能影响到起始输出那一刻,但没法影响到2个输出通道的相位。
举报

更多回帖

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