用asp做網(wǎng)站span友情鏈接大全
1. 滴答定時(shí)器
杰發(fā)科技7801內(nèi)部有一個(gè)滴答定時(shí)器,該定時(shí)器是M0+核自帶的,因此可以直接用該定時(shí)器來(lái)獲取時(shí)間戳。
同樣,7803也可以使用該方式獲取時(shí)間戳。
2. 滴答定時(shí)器原理
SysTick是一個(gè)24位的遞減計(jì)數(shù)器,它從預(yù)設(shè)的重裝載值開(kāi)始,每經(jīng)過(guò)一個(gè)系統(tǒng)時(shí)鐘周期,計(jì)數(shù)值就減1。當(dāng)計(jì)數(shù)器的值遞減到0時(shí),如果SysTick中斷使能,處理器將產(chǎn)生一個(gè)SysTick異常(異常號(hào)通常為15),并跳轉(zhuǎn)到SysTick中斷服務(wù)例程(ISR)執(zhí)行相應(yīng)的中斷處理代碼。此時(shí),計(jì)數(shù)器會(huì)自動(dòng)從重裝載寄存器中重新加載初值,開(kāi)始新一輪的遞減計(jì)數(shù)。
3. 定時(shí)器配置
#include "ac780x.h"
#include "timer_sample.h"
#include <stdint.h>#include "core_cm0plus.h"void systick_init(void) {// 配置 SysTick 重裝載值為最大值SysTick->LOAD = 0xFFFFFF; // 24-bit 最大值// 配置寄存器SysTick->CTRL = 0x00010007;
}uint32_t tick_count[100];
unsigned char cou = 0;int main(void) {// 初始化 SysTicksystick_init();TIMER_Clock(); //1ms定時(shí)器初始化InitDelay();while (1) {if(g_timer0Count){g_timer0Count = 0;tick_count[cou] = SysTick->VAL;cou++;}}return 0;
}
4. 寄存器狀態(tài)
5. 注意
?注意7801自帶的Initdelay()也是使用systick
實(shí)測(cè)初始化delay不影響滴答計(jì)數(shù)
6. 結(jié)果
圖中的數(shù)值兩兩相減列出結(jié)果,48M主頻 1ms計(jì)數(shù)值正確