#include "msp_Time1.h" #define D_TIMER_COUNT(t,clk,timeInUs) (U16)(65536- 1.0 * (clk) / 1000 * (1.0 * timeInUs / 1000) / t) _TS_timer1 ts_timer1; #if 0 void L0_timer1_Init_7ms(void) //7毫秒@11.0592MHz { AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0xCD; //设置定时初值 TH1 = 0xE6; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init_5ms(void) //5毫秒@11.0592MHz {//0x7F示波器测试大约40ms,led闪烁 肉眼可见 AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x00; //设置定时初值 TH1 = 0xEE; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init_1ms(void) //1毫秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0xCD; //设置定时初值 TH1 = 0xD4; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void L0_timer1_Init(void) //600微秒@11.0592MHz { U16 val = D_TIMER_COUNT(1,D_sys_MainFre,TYPE_JIFFIES_600US); AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 //TL1 = 0x14; //设置定时初值 //TH1 = 0xE6; //设置定时初值 TL1 = val; //设置定时初值 TH1 = val >>8; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } //0x7F示波器测试大约40ms,led闪烁 肉眼可见 void L0_timer1_reset(void) { U16 val = D_TIMER_COUNT(1,D_sys_MainFre,TYPE_JIFFIES_600US); TR1 = 0; //TL1 = 0x14; //设置定时初值 //TH1 = 0xE6; //设置定时初值 TL1 = val; //设置定时初值 TH1 = val >>8; //设置定时初值 TR1 = 1; TF1 = 0; } void L0_timer1_start() //600微秒@11.0592MHz { #if 0 AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x14; //设置定时初值 TH1 = 0xE6; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc #else U16 val = D_TIMER_COUNT(1,D_sys_MainFre,TYPE_JIFFIES_600US); AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 //TL1 = 0xCD; //设置定时初始值 //TH1 = 0xD4; //设置定时初始值 TL1 = val; //设置定时初值 TH1 = val >>8; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc #endif } void L0_timer1_restart() //600微秒@11.0592MHz { U16 val = D_TIMER_COUNT(1,D_sys_MainFre,TYPE_JIFFIES_600US); TR1 = 0; //先关闭,否则会重复中断,起不到resetart效果 #if 1 AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 //TL1 = 0x14; //设置定时初值 //TH1 = 0xE6; //设置定时初值 TL1 = val; //设置定时初值 TH1 = val >>8; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc #else AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0xCD; //设置定时初始值 TH1 = 0xD4; //设置定时初始值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc #endif } void L0_timer1_stop2222(void) { TR1 = 0; TF1 = 0; } void L0_timer1_init6666(void) //TYPE_JIFFIES_25MS@11.0592MHz { U16 val = D_TIMER_COUNT(1,D_sys_MainFre,TYPE_JIFFIES_25MS); TR1 = 0; //先关闭,否则会重复中断,起不到resetart效果 AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 //TL1 = 0x14; //设置定时初值 //TH1 = 0xE6; //设置定时初值 TL1 = val; //设置定时初值 TH1 = val >>8; //设置定时初值 TF1 = 0; //清除TF1标志 TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } #endif void L0_timer1_init(void) ///void Timer1Init(void) //20毫秒@22.1184MHz { AUXR &= 0xBF; //定时器时钟12T模式 TMOD &= 0x0F; //设置定时器模式 TL1 = 0x00; //设置定时初始值 TH1 = 0x70; //设置定时初始值 TF1 = 0; //清除TF1标志 // TR1 = 1; //定时器1开始计时 ET1 = 1; //add by cc } void timer1_isrHanddle(void) interrupt 3//// D_SERVE_TIMER1 { TF1 = 0; //清除TF1标志 D_motor1_BI_rev(); #if 0 Ts_uart_rev_ *p = &s_uart0_rec; #define D_s_modbus_min 4 //modbus协议的最小长度 if((p->head == 1) && (p->num >= D_s_modbus_min)) { //LED1 ^= 1; p->head = 0; #ifdef D_use_crc crc16qq(p->crc,p->buf,p->num - 2); ////fixme 20220311 ///crc16qq(p->crc,p->buf,p->num - 2); //校验CRC #endif // crc16(p->crc,p->buf,p->num - 2); //校验CRC if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1]) { p->ok = 1; LED0 ^= 1; } p->debugok = 1; } L0_timer1_stop(); #endif /// L2_callback_uart0_free(); // ts_timer1.callback(); } /******************************END*********************************/