PWM输出
周期由自动重装载寄存器ARR寄存器来决定的,捕获/比较寄存器CCRx来决定占空比!!!
工作过程描述:首先假设输出为向上计数,且设置CC1P位为0高电平有效,当设置为模式1,即计数器CNT的数值小于捕获比较寄存器CCR1的值时,电平输出高电平,CNT数值大于CCR1时输出低电平,使能CC1E,最后就输出相应电平信号。
bsp_pwm_out.c文件
bsp_pwm_out.h文件
main.c文件
void PWM_OUT_POWDER_CONTROL(void)
{
u16 ledOpvmval = 0;
u8 dir =1;
while(1)//实现比较值从0-300递增,到300后从300-0递减,循环
{
delay(10);
if(dir)
ledOpvmval++;//dir==1 ledOpwmval递增
else
ledOpvmval--;//dir==0 ledOpwmval递减
if(ledOpvmval >300)
dir = 0; //ledOpvmval到达300后,方向为递减
if(ledOpvmval==0)
dir = 1; //ledOpvmval递减到0后,方向改为递增
TIM_SetCompare1(TIM14,ledOpvmval);
}
}
int main()
{
TIM14_PWM_Init(500-1,84-1);//84M/84=1MHZ的计数频率,重载值500,所以PWM频率为1M/500=2KHZ,
while(1)
{
PWM_OUT_POWDER_CONTROL();
}
}