初级会员

- 积分
- 164
- 金钱
- 164
- 注册时间
- 2019-8-19
- 在线时间
- 47 小时
|
20金钱
本帖最后由 zryblog 于 2019-11-8 17:10 编辑
先上代码
- tim_tbinit.TIM_ClockDivision = TIM_CKD_DIV1;
- tim_tbinit.TIM_CounterMode = TIM_CounterMode_Up;
- tim_tbinit.TIM_Period = 0xffff; //预设
- tim_tbinit.TIM_Prescaler = 71; //1Mhz
- //tim_tbinit.TIM_RepetitionCounter =
- TIM_TimeBaseInit(TIM,&tim_tbinit);
复制代码
- u16 temp_arr=(u32)1000000/frequency-1;
-
- TIM_SetCounter(TIM,0);
- TIM_SetAutoreload(TIM,temp_arr);
- TIM_SetCompare1(TIM,(temp_arr>>1));
- TIM_Cmd(TIM,ENABLE);
复制代码
上面第一段是tim3的初始化代码,分频一兆.
下面是设置PWM频率的代码,ferquency是频率.
现在问题出在实际输出的频率,比计算的频率高点
比如设置12.8Khz 实际是12.81Khz
6.4Khz 实际是6.41Khz6.42Khz
这是为什么 ? 是不是我程序的设计上有问题?
|
|