对定时器的计算和频率的获取有些不太理解

2019-07-14 16:36发布

不好意思,各位,初学STM32,对于定时器的计算和频率的获取有些不太理解

我想稍微可以略精确的控制定时器的时间,
网上看到公式

tica, sans-serif, 脣脦脤氓">f=(72M/(TIM_Prescaler+1)*(1+TIM_Period)) ;

不好意思,各位,初学STM32,对于定时器的计算和频率的获取有些不太理解

我想稍微可以略精确的控制定时器的时间,
网上看到公式

f=(72M/(TIM_Prescaler+1)*(1+TIM_Period)) ;


void MY_TIMERINIT(int arr,int psc)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
        NVIC_InitTypeDef  NVIC_InitStruct;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
        TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInitStruct.TIM_Period = arr;
        TIM_TimeBaseInitStruct.TIM_Prescaler = psc;
        TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStruct);
        TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
        TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
        NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1 ;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_Init(&NVIC_InitStruct);
}
arr = 9999;
psc = 7199;
打印的非常快
我看到代码里有
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
        TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;

看上去是APB1总线得到时钟,分频是1,看上去好像是APB1过来多少,那时钟频率就是多少。

我看到手册里的图



APB1的时钟好像是AHB分频来的,AHB的时钟代码哪里可以看到呢?

不是很理解。。。

问的比较基础,,,我也查过一些资料

麻烦各位了  谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
我是卖报的小男孩
1楼-- · 2019-07-15 21:09
huazhe 发表于 2018-10-25 20:18

还有配图,非常给力!非常感谢
脑洞大赛11
2楼-- · 2019-07-15 22:42
 精彩回答 2  元偷偷看……
TOPCB
3楼-- · 2019-07-15 23:11
看手册RCC这一章,里面描述了各个模块使用的频率,还有就是看框图。
huazhe
4楼-- · 2019-07-16 04:01
每个芯片手册都有个 CLOCK TREE的,那里说的很清楚了。
我是卖报的小男孩
5楼-- · 2019-07-16 04:31
TOPCB 发表于 2018-10-25 21:12
看手册RCC这一章,里面描述了各个模块使用的频率,还有就是看框图。

谢谢!!

框图看过了,不过有些地方,麻烦斑竹君了。

APB1是由AHB给的,AHB最高是72,APB1最高是36

我程序中直接就用了
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
那请问AHB是多少呢?在程序哪儿可以看到配置的呢?
TOPCB
6楼-- · 2019-07-16 05:19
AHB的频率在时钟配置那看。请问用的是标准库还是HAL?

一周热门 更多>