Timer.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:2k
源码类别:

uCOS

开发平台:

C/C++

  1. #include "config.h"
  2. U8 IntCnt;
  3. //#define OSTickISR() Timer0_ISR()
  4. /*********************************************************************************************************
  5. Timer_Isr()
  6. ********************************************************************************************************/
  7. void  Timer0_ISR(void)
  8. {
  9. rSRCPND =rSRCPND|( 1 << 10);
  10. rINTPND = rINTPND;
  11. IntCnt++;
  12. /*
  13. if(IntCnt%2)
  14. rGPBDAT = 0x07fe;
  15. else
  16. rGPBDAT = 0x0000;*/
  17. OSTimeTick();
  18. }
  19. /*********************************************************************************************************
  20. Initial Timer0 use for ucos time tick
  21. ********************************************************************************************************/
  22. void Timer0Init(void)
  23. {
  24. // 定时器设置
  25. rTCON = rTCON & (~0xf) ; // clear manual update bit, stop Timer0
  26. rTCFG0  &= 0xffffff00; // set Timer 0&1 prescaler 0
  27. rTCFG0 |= 15; //prescaler = 15+1
  28. rTCFG1  &= 0xfffffff0; // set Timer 0 MUX 1/4
  29. rTCFG1  |= 0x00000001; // set Timer 0 MUX 1/4
  30.     rTCNTB0 = (PCLK / (4 *15* OS_TICKS_PER_SEC)) - 1;
  31.  
  32.     
  33.     rTCON = rTCON & (~0xf) |0x02;              // updata 
  34. rTCON = rTCON & (~0xf) |0x09;  // star
  35.  }
  36. /*********************************************************************************************************
  37. system IsrInit
  38. ********************************************************************************************************/
  39. extern void OSTickISR(void);
  40. void ISRInit(void)
  41. {
  42. // 设置中断控制器
  43. rPRIORITY = 0x00000000; // 使用默认的固定的优先级
  44. rINTMOD = 0x00000000; // 所有中断均为IRQ中断
  45. pISR_TIMER0= (unsigned int) OSTickISR;
  46. rINTMSK &= ~(1<<10); // 打开TIMER0中断允许
  47. IntCnt=0;
  48.  }