Fork Me on GitHub

源码开放学ARM

LASO - Learn ARM with Source Open

首页         目录索引         资料下载         代码下载         联系作者        
下载PDF打印版本

定时器驱动代码实现

// init Timer
// step 0: setup clock TCFG0+TCFG1
// step 1: TCNTBn <- init value
// setp 2: Set the manual update bit 
// 		and clear only manual update bit
//		enable auto-reload bit
// step 3: Set the start bit 
// step 4: Enable interrupt

while (1)
{
	// polling TCNTO0, putint_hex()
	
	// polling TINT_CSTAT bit[5] == 1 ?
		beep();	
}

// init VIC 
Timer0 SRC = bit[21] belong to VIC0

Timer0 中断传递相关寄存器
VIC0(IRQ/FIQ)STATUS	标识中断是否通过(IRQ/FIQ)
VIC0INTSELECT		选择IRQ还是FIQ: bit21
VIC0INTENABLE		使能中断通过: bit21
VIC0RAWINTR			通过Timer0之后的情况 bit21
---------------------
TINT_CSTAT			中断(MSK) Enable bit [0]
TINT_CSTAT			中断(PND) Status bit [5]
TCNTB0				触发方式 1 sec interrupt
	(TCFG0 + TCFG1) clock init
-GPD0CON			管脚复用 TOUT0 

上一节 | 目录索引 | 下一节

blog comments powered by Disqus