1、TIMER1使用到相关函数配置
/*函数名:Init_Timer1
*功能:产生指定占空比PWM波,ad_now_value/ad_value = xx%
*入口参数:
ad_value:10位ADC采集到的电压值,最大值1023
ad_now_value:当前采集到的电压值
*函数返回:无
*/
void Init_Timer1(u16 ad_value,u16 ad_now_value)
{
GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST); //输出推拉,低电平,10MHz
TIM1_DeInit();
TIM1_TimeBaseInit(0x0F, TIM1_COUNTERMODE_UP, ad_value, 0x00);//
TIM1_OC4Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, ad_now_value, TIM1_OCPOLARITY_LOW, TIM1_OCIDLESTATE_RESET);//50%占空比
TIM1_CCxCmd(TIM1_CHANNEL_4, ENABLE);
TIM1_OC4PreloadConfig(ENABLE);
TIM1_CtrlPWMOutputs(ENABLE);
TIM1_Cmd(ENABLE);
}
2、主函数使用
int main()
{
Init_Timer1(1000,500);//初始化后会产生50%的占空比
while(1)
{
/*使用该条语句会产生70%的占空比*/
TIM1_SetCompare4(700);
}
}