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