16位:COUNTFLAG位表示如果自最后一次讀取計數器計數為0,返回1,就是如果24位計數器減到0了,那么此位被寫1,反之為0。
2位 CLKSOURCE: 時鐘選擇位,如果選擇0表示AHB分頻后的時鐘8分頻后作為SYSTICK的時鐘,如果=1,表示直接把AHB分頻后的時鐘作為SYSTICK的時鐘,這里看中文文檔時差點被他搞混了,他只說了個內核時鐘,和外部參考時鐘,初學者知道個屁啊,所謂辭藻華麗,實際上初學者根本不理解,所以要參考E文文檔的。
0: AHB/8所謂的參考時鐘
1: Processor clock (AHB)所謂的內核時鐘
1位 TICKINT: SysTick的異常請求啟用
0: Counting down to zero does not assert the SysTick exception request
1: Counting down to zero to asserts the SysTick exception request.
0表示如果計數到0,那么不發出異常請求
1表示如果計數到1,那么發出異常請求
注意:如果選擇0,那么可以用軟件查詢COUNTFLAG位來判斷是否計數到0,
0位 ENABLE: 使能SYSTICK計數器
0表示不使能滴答(sysytick),
1表示使能滴答(systick)
2.
SysTick 24位計數值得加載寄存器(STK_LOAD)
Bits 31:24為保留位必須=0
Bits 23:0:加載計數器的值,一共24位,
當計數器計數值為0,且開啟時就會自動加載這個寄存器里的24位數值,知道減到0,然后又加載,一次循環,如果你不關閉的話。
重載值可在0x00000001-0x00FFFFFF范圍的任何值。起始值
0是可能的,但沒有任何效果,因為SysTick異常請求和COUNTFLAG是
從1數到0時激活。
作為一個連拍式(multi-shot)定時器,它每N+1 個時鐘脈沖就觸發一次,周而
復始,此處N 為1 到0x00FFFFFF 之間的任意值。所以,如果每100 個時鐘脈沖就請求一次
時鐘中斷(tick interrupt),那么必須向RELOAD 載入99。
如果每次時鐘中斷后都寫入一個新值,
那么可以看作單拍(single shot)模式,因而必須寫入實際的倒計數值。例如,如果在400 個時
鐘脈沖后想請求一個時鐘中斷(tick),那么必須向RELOAD 寫入400。
以上就不在閑言了。
3.
SysTick當前值寄存器(STK_VAL)
Bits 31:24 必須為0,保留位
Bits 23:0 CURRENT[23:0]: 當前計數器的值
就是讀取24位計數器的當前值
4.
SysTick校驗值寄存器(STK_CALIB)
Bit 31 NOREF: 參考時鐘 標志
讀為零。表示一個單獨提供參考時鐘。這個頻率
時鐘HCLK/ 8。=AHB/8
Bit 30 SKEW: SKEW 標志
讀為1時。 1 MS不精確定時校準值是不知道,因為TENMS
不知道。作為一個軟件的實時時鐘,這會影響SysTick的適用性
Bits 23:0 TENMS[23:0]: 校準值
讀為9000。 SysTick的柜臺上最大的HCLK/ 8運行時,表示校準值
作為外部時鐘。對于72 MHz的HCLK時鐘,SysTick的期限為1ms。
如果不知道校準信息,計算所需的校準值
處理器的時鐘或外部時鐘頻率