比较模式输出不同相位的PWM 如何改变占空比
我通过比较的翻转模式,输出了不同相位的PWM靠的的CNT=CCR1,然后怎么改占空比呢?因为在翻转的时候会产生一个中断,我准备在中断里改 但是没能成功中断里是这么写的
void TIM4_IRQHandler(void)
{
//
if(TIM_GetITStatus(TIM4,TIM_IT_CC1)!=RESET)
{
// printf("½øÈëÖжÏ1\n");
if(temp==0)
{
TIM4->CCR1=7200;
temp=1;
}
else
{
TIM4->CCR1=2400;
temp=0;
}
}
我也看了下网上他们说不能预装载 不然CCR1是不会变得 于是我有将预装载屏蔽了但是还是不能成功https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=345073&size=300x300&key=d8a0a7c771ffc728&nocache=yes&type=fixnone
求教想输出不同相位 还能改变占空比的PWM 的正确方式 有这方面相关的例程吗?求给一份感谢了
CCR1可以直接改的啊 TIM_SetCompare1(TIM4, TIMCompare1);
就如同我在中断里的程序那样,,不知道那有问题,改了输出的波形和理论的不一样 先在中断打个断点,看看程序进中断了吗?还有楼主可以吧你输出的有相位差的波形截个图发上来吗?让大家开开眼界 中断是进了的,我那个printf就是在检测的 进了中断会给串口发送字符https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=345074&size=300x300&key=5241b10a8be006a1&nocache=yes&type=fixnone 因为溢出也会产生一个中断 我就将中断还是多加了一个标志位,结果输出波形更诡异了
:o:o:o:o:o:o void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)
{
i++;
if(i>=200)
{
i=0;
TIM3->SR&=~(1<<0);
}
else
{
TIM3->CCR1=sine;
TIM3->CCR2=sine;
//TIM1->SR&=~(1<<1);
TIM3->SR&=~(1<<0);
}
}
}
这个试试,我的没有问题
页:
[1]
2