main.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. 测试tim2定时器
  3. 说明:
  4. *1.系统主频为FRC/2.波形输出引脚:P11
  5. *3.定时模式, 16位定时器定时1ms,中断一次
  6. */
  7. #include <intrins.h>
  8. #include <REGtenxTM52F1386.h>
  9. #include "TM52F1386_bsp.h"
  10. #define FRC_HZ 18432000
  11. #define FRC_DIV 2
  12. #define CLK_US 1000 //1ms
  13. #define TIME2_RELOAD (unsigned int)(65536-(((FRC_HZ/FRC_DIV)/2/1000)*CLK_US/1000)) //精度更高
  14. /**
  15. ************************/
  16. //1:time2 16位自动重载定时器 中断方式
  17. /******************************************************************************************
  18. ** 函数名称: time2_T_init
  19. ** 函数描述: time2初始化函数
  20. ** 输入参数: 无
  21. ** 输出参数: 无
  22. *******************************************************************************************/
  23. void time2_T_init()
  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. ** 函数名称: main
  36. ** 函数描述: main函数
  37. ** 输入参数: 无
  38. ** 输出参数: 无
  39. *******************************************************************************************/
  40. void main(void)
  41. {
  42. bsp_clock_init(); //选择内部FRC/2为系统时钟
  43. time2_T_init();
  44. PORTIDX = PORT1;
  45. PINMOD10 = PINMOD10&0x0F | PIN_H_MODE_PP; //测试引脚:P1.1,设置为推挽输出
  46. EA=1;
  47. while(1)
  48. {
  49. bsp_delay_ms(100);
  50. }
  51. }
  52. /******************************************************************************************
  53. ** 函数名称: time2_irq
  54. ** 函数描述: time2中断处理函数
  55. ** 输入参数: 无
  56. ** 输出参数: 无
  57. *******************************************************************************************/
  58. void time2_irq() interrupt 5
  59. {
  60. if(TF2)
  61. {
  62. TF2=0; //除了用作串口的时基外,其他应用必须清零
  63. P1_1 = ~P1_1; //引脚翻转
  64. }
  65. }