打印

stm32f1xx TIM3 PWM输出频率不准?

[复制链接]
4878|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mgf006|  楼主 | 2012-4-25 18:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相利用PWM产生一个可调的 时钟 源,结果发现输出来的频率很不准,但测量MCO的频率是很准的。搞了半天也没弄明白。向大家求教:

程序如下:
void  ConfigTimer(void)
{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(  RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE); //AFIO时钟必须开启。
RCC_APB1PeriphClockCmd(  RCC_APB1Periph_TIM3,ENABLE);
/*  STM32 默认也 TIM3是在 PA6,PA7,PB0,PB1 脚,需要Remap到新的管脚上去。 */
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);

GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
        CP_1;
////TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Prescaler =0; //不再对时钟分频,时钟源是72MHZ
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//trig down
TIM_TimeBaseStructure.TIM_Period =9;//用来计数,控制输出频率. 想输出8MHZ,结果只有7.2M,感觉奇怪。
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
//
//Channel1 configuration
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputState_Disable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性设置
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse =4;//Tcp_ref; 设置占空比
TIM_OC2Init(TIM3,&TIM_OCInitStructure);
//TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); //这句写和不写效果一样。
        
//test PWM
TIM_CtrlPWMOutputs(TIM3, ENABLE);
TIM_Cmd(TIM3,ENABLE);
}
沙发
香水城| | 2012-4-25 18:51 | 只看该作者
72MHz / 10 = 7.2MHz

使用特权

评论回复
板凳
airwill| | 2012-4-25 19:36 | 只看该作者
TIM_TimeBaseStructure.TIM_Period =9;//用来计数,控制输出频率. 想输出8MHZ,结果只有7.2M,感觉奇怪。

呵呵, 9+1,  这倒也是个常容易被大意的错误.

使用特权

评论回复
地板
logokfu| | 2012-4-26 08:34 | 只看该作者
净开玩笑

使用特权

评论回复
5
mgf006|  楼主 | 2012-4-26 09:54 | 只看该作者
搞糊涂了,谢谢各位。
结贴!

使用特权

评论回复
6
na239152605| | 2012-4-26 23:07 | 只看该作者
学习了!我想用STM32的PWM控制小车,各位给点建议!!!谢了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:虚拟示波器+信号发生器+逻辑分析仪=EZDSO三合一虚拟仪器。http://www.dzmi.com 国产本土MCU http://www.sinomcu.com

26

主题

417

帖子

3

粉丝