STM32
直播中

陈思伊

7年用户 195经验值
私信 关注
[问答]

SysTick时钟是指外部8M时钟还是PLL倍频后的系统时钟?

Systick->CTRL|=0xfffffffb;//设置外部时钟作为SysTick时钟
这个是把外部时钟设置为SysTick时钟,我想问一下,这里的外部时钟是指外部8M时钟还是PLL倍频后的系统时钟??

回帖(17)

林秀玲

2020-6-18 12:38:32
是外部的时钟源,有可能是4-16M,
举报

阎锐

2020-6-18 12:53:09
delay_init(72);     //延时初始化
这是原子哥例程里的,那他这里为什么设置这么大?
void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
fac_us=SYSCLK/8;    
fac_ms=(u16)fac_us*1000;
}
按照原子哥的例程,如果设置这么大,那么fac_us就为9,
delay_ms(300);
那这里就延时9×1000×300=2700000个SysTick时钟周期了,根据设置,为外部时钟源,时钟为8M,根据SysTick为时钟源的1/8,也就是,外部时钟8个周期SysTick才反映一次,也就是说8M外部晶振能使SysTick每减一精确到us,这里设置了2700000个SysTick周期,换算一下就是2700000/1000/1000=2.7s
int main(void)
{  
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
LED_Init();   //初始化与LED连接的硬件接口
while(1)
{
LED0=0;
LED1=1;
delay_ms(300);
LED0=1;
LED1=0;
delay_ms(300);

}
根据例程1,每2.7秒灯变动一次,实际上测试灯闪动得相当快,所以按照道理来说,SysTick选择外部时钟是指内核时钟外面的时钟,也就是很系统时钟,但我有一点迷糊,所以上来发问。
举报

袁沁茹

2020-6-18 13:11:05
PLL后的.严格的说,是PLL后的8分频.
举报

h1654155275.5809

2020-6-18 13:30:29
回复【4楼】发烧友:
-------------------------------
嗯嗯,刚玩通了倍频,纠正一下参考手册上说的,SysTick->CTRL的第二位置1是选择系统时钟的8分频作为SysTick时钟。
另外想问一下,这个STM32内部Flash的寿命能刷多少次的说?话实有一点怕刷挂了,毕竟芯片只有一个,更换这种芯片需要的那个“发动机”我还没有呢(这个“发动机(风枪)”市面比较贵),想当月玩51,刷了1000次芯片挂了,想起也有一点寒。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分