- #include "Register_Bit.h" //包含位定义文件
- #define TIMER1_DIV1 (uint8_t)1
- #define TIMER1_DIV5 (uint8_t)5
- #define TIMER1_DIV10 (uint8_t)10
- #define TIMER1_DIV12 (uint8_t)12
- #define TIMER1_DIV50 (uint8_t)50
- #define TIMER1_IEN_ENB TCSR1 |= (1<<29) //定时器中断使能
- #define TIMER1_IEN_DIS TCSR1 &= ~(1<<29) //定时器中断使能
- #define TIMER1_CNT_ENB TCSR1 |= (1<<30) //定时器计数使能
- #define TIMER1_CNT_DIS TCSR1 &= ~(1<<30) //定时器计数使能
- //*************************************
- // 函数名称:Init_timer0
- // 函数功能:TIMER0初始化
- // 入口参数:psc 分频系数 范围为1-255 Tcon 为计数个数
- // 出口参数:无
- //***************************************/
- void Init_Timer1(uint8_t psc,uint32_t Tcon) //SYSCLK =
- {
- /* Reset TMR1 IP 外设先复位再使能 */
- IPRSTC2 |= TMR1_RST;
- IPRSTC2 &= ~TMR1_RST;
- /* Enable Timer1 clock source */
- APBCLK |= TMR1_CLKEN;
- NVIC_ISER |= TMR1_INT; //开TIMER1中断
- // NVIC_IPR2 |= (0<<0) ; //设置中断优先级为0 ->最高优先级
- /* Select Timer1 clock source as external 12M */
- CLKSEL1 = (CLKSEL1 & (~TM1_CLK)) | TM1_12M_32K;
- /* Reset the timer/counter1, after set, this bit will be clear by H/W */
- TCSR1 |= CRST;
- /* Pre-Scaler */
- TCSR1 &= ~(0XFF) ;
- TCSR1 |= ((psc-1)<<0) ; //时钟分频
- TCSR1 |= (1<<16) ; //读取数据使能
- TCSR1 &= ~(1<<24) ; //计数模式使能位 --不使能
- TCSR1 |= (1<<27) ; //定时器设置为周期模式
- TISR1 |= (1<<0) ; //中断状态标志清0
- /* Timer1 interrupt enable */
- // TCSR1 |= TMR_IE;
- TCMPR1 = Tcon ; //计数个数
- TDR1 = 0 ; //计数器清0
- }
- //*************************************
- // 函数名称:Timer0_Cmd
- // 函数功能:TIMER0使能
- // 入口参数:使能参数
- // 出口参数:无
- //***************************************/
- void Timer1_Cmd(uint8_t en)
- {
- if(en == ENB)
- {
- TDR1 = 0 ; //计数器清0
- TIMER1_IEN_ENB ; //定时器中断使能
- TIMER1_CNT_ENB ; //定时器计数使能
- }
- else
- {
- TIMER1_IEN_DIS ; //定时器中断使能
- TIMER1_CNT_DIS ; //定时器计数使能
- }
- }
- //---实例应用-------
- //定时器1初始化设置
- Init_Timer1(TIMER0_DIV1,1500) ; //12M 共计125U
- Timer1_Cmd(ENB) ;
|