time2.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /***********************************************************************************************************
  2. 测试tim2定时器:
  3. 说明:
  4. *1.系统主频为FRC/2.波形输出引脚:P10
  5. *3.定时模式, 16位定时器定时1ms,中断一次
  6. ***********************************************************************************************************/
  7. #include <REGtenxTM52F1386.h>
  8. #include "TM52F1386_bsp.h"
  9. #include <intrins.h>
  10. #include "time2.h"
  11. #include "GLOBAL.h"
  12. #include "gpio_ctrl.h"
  13. #define FRC_HZ 18432000
  14. #define FRC_DIV 2
  15. #define CLK_US 1000 // 1ms
  16. #define TIME2_RELOAD (unsigned int)(65536 - (((FRC_HZ / FRC_DIV) / 2 / 1000) * CLK_US / 1000)) // 精度更高
  17. /**********************************************************************************************************
  18. **函数名称 :tim2_init
  19. **函数描述 :定时器初始化
  20. **输 入 :None
  21. **输 出 :None
  22. **********************************************************************************************************/
  23. void tim2_init(void)
  24. {
  25. CT2N = 0; // 定时器模式
  26. CPRL2N = 0; // 重载模式
  27. TH2 = (TIME2_RELOAD) / 256;
  28. TL2 = (TIME2_RELOAD) % 256;
  29. RCP2H = (TIME2_RELOAD) / 256;
  30. RCP2L = (TIME2_RELOAD) % 256;
  31. TR2 = 1;
  32. ET2 = 1;
  33. }
  34. /******************************************************************************************
  35. ** 函数名称: time2_irq
  36. ** 函数描述: time2中断处理函数
  37. ** 输入参数: 无
  38. ** 输出参数: 无
  39. *******************************************************************************************/
  40. void time2_irq() interrupt 5
  41. {
  42. int i=0;
  43. if (TF2)
  44. {
  45. TF2 = 0; // 除了用作串口的时基外,其他应用必须清零
  46. // key_led_ctl(); //
  47. if (++sysTickfor10ms >= 10) // 10ms
  48. {
  49. for(i=0;i<6;i++)
  50. {
  51. ledTimer[i].ticket++;//1ms控制按键背光灯,PWM基准周期1ms
  52. }
  53. sysTickfor10ms = 0;
  54. sys10msFlag = 1;
  55. tickcount++;
  56. switchState.buttonPressTime++; // 长按键计数器
  57. ledTimerAll.ticket++; // 背光闪烁用
  58. }
  59. }
  60. }