⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 是MSP430F2274的源代码
💻 C
字号:
#include "msp430x22x4.h"
//用定时器A的CCR2来捕获内部ACLK信号
//并对ACLK输入8分频
//定时器时钟源选择SMCLK=8MHZ
//则捕获一个完整的ACLK信号大约为(8M*8/32768)个SMCLK
//第一个CCR2的捕获值是不完整的ACLK周期
//应该将第二个CCR2的值减去第一个CCR2的值才是一个完整的ACLK周期
//执行程序观察R6是否为2048左右
//                 MSP430F2274
//             -----------------
//         /|\|              XIN|-  
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |             P1.0|-->LED
volatile unsigned int cap_value;          //存两次捕值之差
int main( void )
{
  volatile unsigned int first_value,second_value,n;
  WDTCTL=WDTPW+WDTHOLD;                   //关看门狗
  BCSCTL1 =CALBC1_8MHZ;                   //设定DCO为1MHZ
  DCOCTL =CALBC1_8MHZ;
  BCSCTL1 |=DIVA_3;                       //ACLK输入八分频
  do                                        //等待晶振稳定
  {
    IFG1 &=~OFIFG;
    for(n=5000;n>0;n--);
  }  while(OFIFG&IFG1);   
  TACCTL2=CM1+CCIS_1+CAP;                 //捕获模式,捕获上升沿,捕获内部ACLK
  TACTL=TASSEL_2+MC_2+TACLR;              //定时器时钟源为SMCLK,启动连续计数,清TAR
  TACCTL2 &=~CCIFG;                       //清CCR2的标志位  
  while(!(CCIFG&TACCTL2));                //查CCR2标志位
  first_value=TACCR2;                     //第一个捕获值存入first_value
  TACCTL2 &=~CCIFG;                       //清CCR2的标志位
  while(!(CCIFG&TACCTL2));                //查CCR2标志位
  second_value=TACCR2;                    //第二个捕获值存入second_value
  TACCTL2 &=~CCIFG;                       //清CCR2的标志位                      
  TACCTL2 &=~MC1;                         //关定时器A  
  cap_value=(second_value-first_value);   
  return 0;  
}

          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -