你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

cc1110 tim1 定时时间设置 ?

[复制链接]
hpdell 提问时间:2014-10-3 12:29 /
 
大侠们好,最近在捣鼓 cc1110 这个无线的芯片,
            使用外部 26MHz 晶振
            
            
            设置 time 1 定时器的定时时间 总是不对,不知道是哪里出错了,请大侠们指点指点 ?
            代码如下:
            
            
            我的定时时间的计算方法: 26MHz/128  = 203.125KHz, 1/203.125KHz = 5uS;   
            那么1ms 就是 1000/5us = 200次,所以TIM1_VAL 这个设置为200,
            #define TIM1_VAL    ( 200 )      //
            
            #define TIMER1_INIT()             \
              do{                             \
                  T1CTL     =  0x00;          \
                  T1CCTL0   =  0x00;          \
                  T1CCTL1   =  0x00;          \
                  T1CCTL2   =  0x00;          \
                  TIMIF    &=  ~0x40;         \
              }while(0)
            
            
            //#define TIMER1_RUN(value)  (T1CTL = (value) ? T1CTL |= 0x02 : T1CTL & ~0x03)    //比较计数
            #define TIMER1_RUN(value)  (T1CTL = (value) ? T1CTL |= 0x01 : T1CTL & ~0x03)      //自动装载
            
            #define TIMER1_ENABLE_OVERFLOW_INT(val)  \
              (TIMIF = (val) ? TIMIF | 0x40 : TIMIF & ~0x40)
            
            
            void TIME1_Init(void);
            
            
            
            
            
            void TIME1_Init(void)
            {
              TIMER1_INIT();
                    
                    T1CTL |= 0x0C;                          //128分频,设置为模模式  0000 1100
              T1CC0L = (u8)TIM1_VAL;            //溢出值低8位
              T1CC0H = (u8)(TIM1_VAL >> 8);     //溢出值高8位
            
              TIMER1_ENABLE_OVERFLOW_INT(TRUE);     //定时器 T1 溢出中断使能
              INT_ENABLE(INUM_T1, INT_ON);          //定时器 T1 中断使能
              EA = INT_ON;                          //全局中断使能
              TIMER1_RUN(TRUE);                     //启动定时器
            }
            
            
            
            #pragma  vector = T1_VECTOR
            __interrupt void Timer1_ISR(void)    //1ms中断,实际不止1ms,貌似有几百ms了 ?????????????????????
            {
                  TempFlag = !TempFlag;                   //改变闪烁标志
            
            
            }
            
            
            void main()
            {
            TIME1_Init();
            
                  while(1)
                  {
                       if(TempFlag)
                      {
                         RLED = !RLED;
                         TempFlag = 0;
                        }
            
            
                  }
            }
收藏 评论0 发布时间:2014-10-3 12:29

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版