關於STM32的SysTick定時器的時鐘選擇問題

今天想自己用寄存器編程寫一個用systick定時器的延時函數,寫完後做實驗發現我要延時1s,但是卻延時了8s。這個問題讓我糾結了半天。實際上也不是什麼大問題,就是Systick的時鐘選擇錯誤罷了

如圖所示,供Systick使用有兩個時鐘源,一個是經過8分頻的時鐘,一個是位經分頻的時鐘。


    從《CM3權威指南》中可以看到,Systick的時鐘源選擇是通過控制systick控制與狀態寄存器的CLKSOURCE位來確定的。 置0則是選擇8分頻的時鐘,置1則是未分頻的時鐘。

void Systick_init()
{
	SysTick->CTRL |= (1<<2);//STCLK
	//SysTick->CTRL &= ~(1<<2);//FCLK
	SysTick->CTRL |= 1<<1;
	SysTick->LOAD = SysTick_Freq/1000000 -1;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章