[DemoCode下载] 唐MINI51 TIMER1初始化设置及应用

[复制链接]
 楼主| 天灵灵地灵灵 发表于 2016-7-31 22:36 | 显示全部楼层 |阅读模式
  1. #include "Register_Bit.h"   //包含位定义文件   

  2. #define     TIMER1_DIV1             (uint8_t)1  
  3. #define     TIMER1_DIV5             (uint8_t)5  
  4. #define     TIMER1_DIV10            (uint8_t)10  
  5. #define     TIMER1_DIV12            (uint8_t)12  
  6. #define     TIMER1_DIV50            (uint8_t)50  

  7. #define     TIMER1_IEN_ENB      TCSR1 |= (1<<29)   //定时器中断使能  
  8. #define     TIMER1_IEN_DIS      TCSR1 &= ~(1<<29)   //定时器中断使能  

  9. #define     TIMER1_CNT_ENB      TCSR1 |= (1<<30)   //定时器计数使能   
  10. #define     TIMER1_CNT_DIS      TCSR1 &= ~(1<<30)   //定时器计数使能   

  11. //*************************************  
  12. // 函数名称:Init_timer0  
  13. // 函数功能:TIMER0初始化  
  14. // 入口参数:psc 分频系数 范围为1-255 Tcon 为计数个数  
  15. // 出口参数:无  
  16. //***************************************/  
  17. void Init_Timer1(uint8_t psc,uint32_t Tcon) //SYSCLK =   
  18. {  
  19.     /* Reset TMR1 IP  外设先复位再使能 */  
  20.     IPRSTC2 |= TMR1_RST;  
  21.     IPRSTC2 &= ~TMR1_RST;   

  22.     /* Enable Timer1 clock source */  
  23.     APBCLK |= TMR1_CLKEN;         

  24.     NVIC_ISER |= TMR1_INT;  //开TIMER1中断  
  25. //  NVIC_IPR2 |= (0<<0) ; //设置中断优先级为0 ->最高优先级  

  26.     /* Select Timer1 clock source as external 12M */   
  27.     CLKSEL1 = (CLKSEL1 & (~TM1_CLK)) | TM1_12M_32K;      

  28.     /* Reset the timer/counter1, after set, this bit will be clear by H/W */         
  29.     TCSR1 |= CRST;     

  30.     /* Pre-Scaler */  
  31.     TCSR1 &= ~(0XFF) ;  
  32.     TCSR1  |= ((psc-1)<<0) ;  //时钟分频     

  33.     TCSR1 |= (1<<16) ;  //读取数据使能  
  34.     TCSR1 &= ~(1<<24) ; //计数模式使能位 --不使能  
  35.     TCSR1 |= (1<<27) ;  //定时器设置为周期模式  

  36.     TISR1 |= (1<<0) ; //中断状态标志清0  

  37.     /* Timer1 interrupt enable */  
  38. //    TCSR1 |= TMR_IE;  

  39.     TCMPR1 = Tcon ;  //计数个数  

  40.     TDR1 = 0 ;  //计数器清0      

  41. }  
  42. //*************************************  
  43. // 函数名称:Timer0_Cmd  
  44. // 函数功能:TIMER0使能  
  45. // 入口参数:使能参数  
  46. // 出口参数:无  
  47. //***************************************/  
  48. void  Timer1_Cmd(uint8_t en)  
  49. {  

  50.     if(en == ENB)  
  51.     {  
  52.         TDR1 = 0 ;  //计数器清0  
  53.         TIMER1_IEN_ENB ;  //定时器中断使能  
  54.         TIMER1_CNT_ENB ;  //定时器计数使能   
  55.     }  
  56.     else  
  57.     {  
  58.         TIMER1_IEN_DIS ;  //定时器中断使能  
  59.         TIMER1_CNT_DIS ;  //定时器计数使能      
  60.     }  

  61. }  

  62. //---实例应用-------  
  63.     //定时器1初始化设置  
  64.     Init_Timer1(TIMER0_DIV1,1500) ; //12M 共计125U  
  65.     Timer1_Cmd(ENB) ;  


yiyigirl2014 发表于 2018-8-13 20:32 | 显示全部楼层
学习了,多谢分享,回头再看看结构图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

182

主题

3469

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部

182

主题

3469

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部