论坛大神
- 积分
- 3505
- 金钱
- 3505
- 注册时间
- 2014-8-4
- 在线时间
- 696 小时
|
楼主 |
发表于 2016-4-22 23:01:01
|
显示全部楼层
[No.02]-----定时计数器之时钟
以STM32F103为例,配置系统时钟72Mhz。
高级定时器1和8的时钟来自APB2,通用定时器TIMx的时钟从APB1倍频来的,时钟树如下
图中标出,如果APB1的时钟分频数设置为1则频率不变,否则通用定时器TIMx的时钟是APB1时钟的2倍。
根据寄存器版系统时钟初始化函数
[mw_shl_code=c,true]//系统时钟初始化函数
//pll:选择的倍频数,从2开始,最大值为16
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR|=0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2; //抵消2个单位(因为是从2开始的,设置0就是2)
RCC->CFGR|=PLL<<18; //设置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
FLASH->ACR|=0x32; //FLASH 2个延时周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
} [/mw_shl_code]
APB1时钟为36Mhz且分频设置为2,所以最终高级定时器与通用定时器的时钟频率都是一样的,为72Mhz。
|
|