阿波罗开发板使用STM32F767 TIM14时钟源问题

2019-07-18 17:34发布

最近在使用正点原子的阿波罗开发板tiM14的PWM输出实验  要求输出30Hz的。对比手册,TIM14挂在APB1上,APB时钟为54MHz,可实际使用中发现TIM14的时钟源输出的是432MHz,查看代码,只有在系统时钟初始化时将PLL设为432MHz,代码如下:
GPIO_InitTypeDef GPIO_Initure;
TIM_HandleTypeDef  TIM14_Handle;
TIM_OC_InitTypeDef TIM14_CH1Handle;       
__HAL_RCC_GPIOF_CLK_ENABLE();               
__HAL_RCC_TIM14_CLK_ENABLE();                                                               
       
GPIO_Initure.Pin=GPIO_PIN_9;                             //PF9  Ï½µÑØ´¥·¢£¬ÉÏÀ­
GPIO_Initure.Mode=GPIO_MODE_AF_PP;     //¸´ÓÃÍÆÍì
GPIO_Initure.Pull=GPIO_PULLUP;                                //ÉÏÀ­
GPIO_Initure.Alternate = GPIO_AF9_TIM14;
HAL_GPIO_Init(GPIOF,&GPIO_Initure);
                 
//base sconfig
TIM14_Handle.Instance = TIM14;
TIM14_Handle.Init.Period = 100;
TIM14_Handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4;
TIM14_Handle.Init.Prescaler = (36000 - 1);
TIM14_Handle.Init.CounterMode = TIM_COUNTERMODE_UP;
TIM14_Handle.Init.RepetitionCounter = 0;  //ÂíÉϸüÐÂARR
HAL_TIM_Base_Init(&TIM14_Handle);
               
//OC config
TIM14_CH1Handle.OCMode=TIM_OCMODE_PWM1;
TIM14_CH1Handle.Pulse = 50;
TIM14_CH1Handle.OCPolarity=TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&TIM14_Handle,&TIM14_CH1Handle,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&TIM14_Handle,TIM_CHANNEL_1);


432M/4/36000 = 3KHz  
计数100   刚好30Hz   示波器测量也是30Hz
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
快乐一天天
1楼-- · 2019-07-20 07:15
本帖最后由 morphlings2014 于 2018-2-2 17:38 编辑

TIM14的时钟是挂在APB1的time clock上面的,如下图是216MHZ

如下是我配置的TIM14为1K,和示波器捕获的值是一样的。
工程
ctwewer
2楼-- · 2019-07-20 10:51
对呀,不是楼主说的432MHZ
csw_ying
3楼-- · 2019-07-20 14:14
 精彩回答 2  元偷偷看……
wtefewrws
4楼-- · 2019-07-20 17:42
duzh20016 发表于 2019-5-8 22:57
C:%userssoyoaDesktop微信截图_20180201160954.png

432MHz  是VCO的频率,手册上PLLQ范围为2-15顺便看了下HAL库里面的写法  也没有提到有2的限制,可能是cube的限制吧

即使超频工作也达不到你说的主频432M,外设时钟频率经过我们的配置才产生出相应的PWM波的,但这个主频不一样的
vywyefswer
5楼-- · 2019-07-20 22:19
这个你得去看下时钟树了,这样才能了解定时器的分频等操作

一周热门 更多>