stm32时钟知悉及系统定时器和延时剖析,求解!

2019-07-21 02:28发布

目前手上用的是stm32f103,就是所谓的mini板。学习过程中仔细看stm32发现还是有很多问题点,需要注意的,希望原子及各位道友支解下:1:stm32f103芯片是自带除了HSI外还有HSE(意思是外部高速晶振,但还是会纠结)吗?还是说HSE是正点板子上的。

2:stm32 HSI明确表示为8MHZ,HSE支持4-16MHZ晶振,而mini板HSE具体使用的是多少?手册什么的没有看到说,程序及配置倒是有说8MHZ.不知道是不是。
3:根据图片1stm32代码配置打开了HSE和PLL时钟输出,HSE为8MH然后2倍频,PLL为16MHZ,最大也就16MHZ,寄存器,注释,手册对照都没错,AHB是1分频,AHB这边是16MHZ,HCLK也是16MHZ,cortex System time 是2MHZ啊,这个应该就是系统定时器时钟来源啊。但后面delay_init(72);就搞不懂了,最大72MHZ,现在是16MHZ怎么来个72,这个变量是什么,delay初始化如图片2          SysTick->CTRL&=~(1<<2);                                        //SYSTICKê1ó&#195;ía2&#191;ê±&#214;ó&#212;′         

        fac_us=SYSCLK/8;                                                //2&#187;&#194;&#219;ê&#199;·&#241;ê1ó&#195;OS,fac_us&#182;&#188;Dèòaê1ó&#195;,第一句好说使能时钟来源,第二个应该s是HCLK/8,怎么变成变量/8.搞不懂。求解。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
ZTO13
2019-07-21 15:47
但是延时函数里面的72我就不懂了,是根据实际时钟频率来吗?还有它的算法我不是很懂,我一般算时间是按1MHZ等于1us来算的,之前算其它单片机定时器时间这样算,它这个   fac_ms=(u16)fac_us*1000;         得到9000Mhz是什么,不是要时间吗?为什么直接用频率,还有它的延时跟死循环有什么区别?看不出来,不就是独占的一个定时器来更精准的延时吗?但里面不还是有while循环吗?在一定时间里不还是卡在里面吗?

一周热门 更多>