ARM9基础教程lessen2—定时器
► S3C2440定时器操作

► S3C2440定时器初始化
- void Timer0_init()
- {
TCFG0 = 119; //配置定时器0,1的预分频值 TCFG1 = 0x03; //配置定时器0分频值 TCNTB0 = 3125; //计数缓存寄存器 TCMPB0 = 0; //比较缓存寄存器 TCON |= (1<<1); //手动更新位且配置反相器位(开/关)(手动更行位将TCNTBn和TCMPBn的值分别给TCNTn和TCMPn寄存器) TCON = 0x09; //定时器使能并自动重载 - }
- void
DelayMS(U32 dly) - {
U32 time_val; rTCFG0 = 3; //配置定时器0,1的预分频值 rTCFG1 = 0<<4; //配置定时器1分频值 time_val = PCLK/ (3+1) / 2 / 1000 - 1; // 1ms = PCLK / prescaler / divider / 1000 rTCNTB1 = time_val; //计数缓存寄存器 rTCMPB1 = time_val>>1; // 50% rTCON &= ~(0xf<<8); //手动更新位且配置反相器位(开/关) rTCON |= 0xb<<8; //定时器使能并自动重载 rTCON &= ~(2<<8); //clear manual update bit while(dly--) { while(rTCNTO1>=time_val>>1); while(rTCNTO1 >1); } - }
- void Main(void)
- {
//----------------添加自己的代码------------------- rGPACON &= ~(1<<16); while (1) { rGPADAT |= (1<<16); DelayMS(1000); rGPADAT &= ~(1<<16); DelayMS(500); } - }
评论