定时中断中的APB1预分频系数?

2019-07-20 23:51发布

在定时器中断中,
#include "timer.h" 
#include "led.h" 
//通用定时器 3 中断初始化 
//这里时钟选择为 APB1 的 2 倍,而 APB1 为 36M 
//arr:自动重装值。 
//psc:时钟预分频数 
//这里使用的是定时器 3! 
void TIM3_Int_Init(u16 arr,u16 psc) 

        TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure; 
  NVIC_InitTypeDef NVIC_InitStructure; 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //①时钟 TIM3 使能 
           
//定时器 TIM3 初始化 
  TIM_TimeBaseStructure.TIM_Period = arr;        //设置自动重装载寄存器周期的值     
  TIM_TimeBaseStructure.TIM_Prescaler =psc;    //设置时钟频率除数的预分频值 
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割 

上面这一句话,APB1最大频率是36Mhz,这个在初始化的时候就已经设置了的,如果用库函数默认就是36Mhz,在main函数运行前就设置了,一般可以不管。
默认是36MHZ,那么现在是
 APB1 的 2 倍,这个去哪里设置这个APB1预分频系数。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
东方赤那
1楼-- · 2019-07-21 04:24
回复【3楼】安安耶_:
---------------------------------
 RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;       在SetSysClockTo72()  函数里
lycreturn
2楼-- · 2019-07-21 06:07
 精彩回答 2  元偷偷看……
安安耶_
3楼-- · 2019-07-21 09:18
回复【2楼】lycreturn:
---------------------------------
这个我知道,我现在APB1(*1/*2) -- CK_PSC(/n)--CK_INT ,我现在想知道前面APB1的预分频系统是哪里设置,哪个库函数,APB1预分频系数通过CFGR寄存器的PPRE1几个位来决定,但是原子代码没有只是一笔带过//这里时钟选择为 APB1 的 2 倍,而 APB1 为 36M ,这个我想知道是在哪里设置
东方赤那
4楼-- · 2019-07-21 10:44

就是在这里面
皮皮logo
5楼-- · 2019-07-21 16:35
回复【3楼】安安耶_:
---------------------------------
通过库函数可以找到,AHB时钟设置成72MHz,然后设置APB1预分频系数为2,这样APB1时钟为36MHz,因为APB1预分频系数为2,不是1,所以给TIM2~7的时钟为APB1时钟的2倍,就是72MHz啦
蓝野先生
6楼-- · 2019-07-21 21:12
 精彩回答 2  元偷偷看……

一周热门 更多>