CC2540关于定时器模模模式的设置

来源:互联网 发布:java获取自己程序路径 编辑:程序博客网 时间:2024/04/30 12:32
直接上代码,代码有详解
/*    本程序为定时器3倒计数模式中断方式    关于定时器总结:    模式为自由模式时,只需要常规设置寄存器即可;    模式为模模模式时,正/倒计数模式时,只需要添加设置T3CCTL0寄存器为比较模式即可    模式为倒计数模式时,由于倒计数到0x00时,硬件会关闭定时器,如果想要连续使用,一定在中断或则溢出标记中重新打开定时器!*/#include <ioCC2540.h>#define LED1 P1_0int count = 0;void init_led(){   P1SEL &= ~(1 << 0);//set p1_0 as generic io   P1DIR |= (1 << 0); //set P1_0 as output   LED1 = 0x0; //set led1 off   }void init_clock32MHZ(){  CLKCONCMD &= ~(1 << 6);//set source system clcok 32MHZ  while(CLKCONSTA & 0x40);//wait source system clcok stable  CLKCONCMD &= ~((1 << 6) | (1 << 2 ) | (1 << 1) | (1 << 0));//设置主时钟为32MHZ  while(CLKCONSTA & 0x1);//wait main clcok stable  CLKCONCMD |= (6 << 3);//set TICKSPD = 500KHZ  //TICKSPD default = 16MHZ}void init_timer3(){  //使用模模式,倒计数,正倒计数时,必须设置这个寄存器为比较模式  T3CCTL0 |= (1 << 2);    T3CTL |= (7 << 5) | (1 << 3) | 1;//TICKSPD/128,enable inter, XXmode  T3CC0 = 125; //  IEN1 |= (1 << 3); //enable T3IE  T3CTL |= (1 << 4); //start Timer3  IEN0 |= (1 << 7);//enable EA}#pragma vector=T3_VECTOR__interrupt void t3_isr(){   IRCON &= ~(1 << 3);//clear inter flag    //T3CTL |= (1 << 4); //start Timer3,如果使用倒计数模式  count++;  if(count > 64){//2s    LED1 = 0x1;    count = 0;  }  if(count > 32){//1s    LED1 = 0x0;   }}void main(){  init_led();  init_clock32MHZ();  init_timer3();    while(1);}

0 0
原创粉丝点击