📄 at91_timer.c
字号:
/* * at91_timer.c * * author: Kexin (kexin28@126.com) Tel:+8613714451195 * date: 2007-11-22 *///#include "at91.h"#include "at91_timer.h"#include "at91_aic.h"extern unsigned long svr[32];int at91_del_timer(unsigned char TimerNum){ register volatile struct at91_timers* tt=(struct at91_timers*)(AT91_TC_BASE); register volatile struct at91_timer_channel* tc = &tt->chans[TimerNum].ch; if(TimerNum>2) return -1; at91_mask_irq(TimerNum+4); tc->ccr= 0x02; tc->rc = 0; at91_release_irq(TimerNum+4); return 1; }int at91_set_timer(at91_timer_param param){ register volatile struct at91_timers* tt=(struct at91_timers*)(AT91_TC_BASE); register volatile struct at91_timer_channel* tc = &tt->chans[param.TimerNum].ch; unsigned long v; if(param.TimerNum>2 || param.CycleTime==0 || param.irq_svr==0) return -1; at91_request_irq(param.TimerNum+4,param.irq_svr); tt->bcr=0; switch(param.TimerNum) { case 0: v=tt->bmr&0xfc; v|=0x01; break; case 1: v=tt->bmr&0xf3; v|=0x04; break; case 2: v=tt->bmr&0xcf; v|=0x10; break; default: return -1; } tt->bmr=v; tc->ccr=2; tc->cmr=3 | (1<<14); tc->idr=~0ul; tc->rc=param.CycleTime; tc->ier=1<<4; tc->ccr=0x05; at91_mask_ack_irq(param.TimerNum+4); at91_unmask_irq(param.TimerNum+4); return 1; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -