定时器A是一个16位定时器,可以进行脉冲输出,测量外部输入的脉冲宽度和周期,并对外部事件进行计数。
每500 毫秒打印一次字母
/******************************************************** ***** ************************************************* ****** ********************* 函数名称: TMA0_Init* 描述: 该函数初始化TMA 模块。10MS* 参数: 无* 返回值: 无****** ********************************************** ****** ********************************************** ******** *************/void TMA0_Init(void){ CGC-PER1 |=CGC_PER1_TMAEN_Msk; /* 使能输入时钟供应*/TMA-TACR0=(uint8_t)~_01_TMA_COUNT_START; //停止计数INTC_DisableIRQ (TMA_IRQn);/* 禁用INTTMA 中断*/INTC_ClearPendingIRQ(TMA_IRQn);/* 清除INTTMA 中断标志*/TMA-TAMR0=_10_TMA_COUNT_SOURCE_FCLK8 | _00_TMA_MODE_TIMER; //fCLK/8 定时器模式TMA-TA0=0xEA60U;}void BaseTimeSystemInit( uint8_t enable_disable){ TMA0_Init(); if(enable_disable) { TMA0_Start(); } 其他{ TMA0_Stop(); } }void BaseTimeSystemScan(){ Time_10ms_count++; if(Time_10ms_count=TIME_CHECK_BOOT_10MS) { UART0_Send('a'); Time_10ms_count=0 ; }}中断回调函数
/******************************************************** ***** ************************************************* ****** ********************* 函数名称: tma0_interrupt* @brief tima0 中断服务程序* @param None* @return None***** ****** ********************************************** ****** ********************************************** ********* ********/void tma0_interrupt(void){ INTC_ClearPendingIRQ(TMA_IRQn); /* 清除INTTMA 中断标志*/if ((TMA-TACR0 _20_TMA_UNDERFLOW_OCCUR) !=0U) { TMA-TACR0=(uint8_t)~_20_TMA_UNDERFLOW_OCCUR ; BaseTimeSystemScan(); }}