12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /***********************************************************************************************************
- 测试tim2定时器:
- 说明:
- *1.系统主频为FRC/2.波形输出引脚:P10
- *3.定时模式, 16位定时器定时1ms,中断一次
- ***********************************************************************************************************/
- #include <REGtenxTM52F1386.h>
- #include "TM52F1386_bsp.h"
- #include <intrins.h>
- #include "time2.h"
- #include "GLOBAL.h"
- #include "gpio_ctrl.h"
- #define FRC_HZ 18432000
- #define FRC_DIV 2
- #define CLK_US 1000 // 1ms
- #define TIME2_RELOAD (unsigned int)(65536 - (((FRC_HZ / FRC_DIV) / 2 / 1000) * CLK_US / 1000)) // 精度更高
- /**********************************************************************************************************
- **函数名称 :tim2_init
- **函数描述 :定时器初始化
- **输 入 :None
- **输 出 :None
- **********************************************************************************************************/
- void tim2_init(void)
- {
- CT2N = 0; // 定时器模式
- CPRL2N = 0; // 重载模式
- TH2 = (TIME2_RELOAD) / 256;
- TL2 = (TIME2_RELOAD) % 256;
- RCP2H = (TIME2_RELOAD) / 256;
- RCP2L = (TIME2_RELOAD) % 256;
- TR2 = 1;
- ET2 = 1;
- }
- /******************************************************************************************
- ** 函数名称: time2_irq
- ** 函数描述: time2中断处理函数
- ** 输入参数: 无
- ** 输出参数: 无
- *******************************************************************************************/
- void time2_irq() interrupt 5
- {
- int i=0;
- if (TF2)
- {
- TF2 = 0; // 除了用作串口的时基外,其他应用必须清零
-
- // key_led_ctl(); //
- if (++sysTickfor10ms >= 10) // 10ms
- {
- for(i=0;i<6;i++)
- {
- ledTimer[i].ticket++;//1ms控制按键背光灯,PWM基准周期1ms
- }
- sysTickfor10ms = 0;
- sys10msFlag = 1;
- tickcount++;
- switchState.buttonPressTime++; // 长按键计数器
- ledTimerAll.ticket++; // 背光闪烁用
- }
- }
- }
|