主题 : S3C2440定时器4延时程序 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 78282
精华: 0
发帖: 39
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 78 分
注册时间: 2012-09-18
最后登录: 2018-06-23
楼主  发表于: 2013-01-27 19:12

 S3C2440定时器4延时程序

下面是我写的一个MINI2440上的一个定时器4延时程序。US级别的延时。但是发现延时时间是乱的。麻烦高手帮我分析下!!!
void BSP_DelayUsInitial (void)
{
       TCFG0 &= ~(0xFF<<8) ;
       TCFG0 |= 33<<8 ; //TCFG0  8到15决定time2 time3 time4的 第一级分频值。 第一级分频系数为34
       TCFG1 &= ~(0xf0000) ;
       TCFG1 |= 0x00<<16 ; //    第二级分频系数为2
                    

}

BSP_DelayUs(u32 DelayUsTime )
{

      TCNTB4 = DelayUsTime  ;//PCLK 为68M. 计算定时器计数频率=PCLK/(TCFG0+1)*TCFG1 =1M
     TCON |=  (1 << 21)  ; //先手动加载  TCNTBO
     TCON &=~(1<<22);  
     TCON &=~(1<<21);
     TCON |= (1<<20); //启动定时器 不更新 TCNTB4  不自动重载  
     while(TCNTO4>=1);  
     TCON  &= ~(1<<20);   //关闭定时器

    
  
}