您好,戴尔斯,
自从我开始阅读数据表、用户指南并浏览了 TI 的 CapacitiveTouch 示例以及一些网上 与此相关的代码示例后、我尝试使用引脚振荡器和看门狗计时器作为栅极计时器及其中断来编写03个按钮的代码。 但是、在代码进入中断并在寄存器 TACCR1上获取一些恒定数据的第一个阶段、我还测量了焊盘上振荡器的频率(无触控时为1.7Mhz、触摸时为700kHz)、 但是、现在我使用的最后一个代码是 WDTCTL |= WDT_MEAS_Setting; // WDT、SMCLK、间隔定时器、并且我的编译器转到(逐步运行它)名为 boot_special .c 的特定文件、并指向 if (_system_pre_init ()!= 0)_auto_init (); 我也注意到引脚 anymore.please 中没有任何问题、如果您能帮您弄清楚、那将会非常好。谢谢
/*主函数*/ #include "msp430g2955.h" #define NUM_SEN 3. //定义传感器数 #define LED_1 BIT2 // P1.0 LED 输出 //为传感器测量定义 WDT SMCLK 间隔*/ #define WDT_MEAS_Setting (DIV_SMCLK_512) #define DIV_SMCLK_512 (WDT_MDLY_0_5) // SMCLK/512 //用于感应 unsigned int meas _cnt [NUM_SEN]的全局变量; const unsigned char bote_P1[NUM_SEN]={BIT0、BIT3、BIT7}; void pin_osc_measure (void); void main (void) { unsigned int i、j、k; TCTL = WDWPW + WDTPW //停止看门狗定时器 BCSCTL1 = CALBC1_16MHz; //将 DCO 设置为16MHz DCOCTL = CALDCO_16MHz; //CPU 运行、MCLK 来自 DCO 源 //BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO BCSCTL2 |=SELM_0 + DIVM_3 + DIVS_3; //SELM_0-->MCLK 源来自 DCOCLK、DIVM_3 --> MCLK = DCO/8、DIVS_3 --> SMCLK = DCO/8。 IE1|= WDTIE; //启用 WDT 中断 // P2SEL = 0x00; //无 XTAL P2DIR |= BIT2; __bis_SR_register (GIE); //为 (;) {启用中断 对于(k=0;k<10;k++){ PIN_osc_measure(); //建立电容测量 对于(i = 0;i < NUM_SEN;i++) { if (meas _cnt[i]< 1000) { P2OUT &=~BIT2; } 其他 { 对于(j=0;j<3;j++) P2OUT ^= BIT2; //__delay_cycles (2000); } } } }} //结束主 void pin_osc_measure (void) { unsigned int i; TA0CTL = tassel_0+MC_2; // tassel_0=TACLK 由外部提供:、MC_2=连续启动模式、 TA0CCTL1 = CM_3+CCIS_2+CAP; // TA0CCTL1=CAPTURE/COMPARE 控制寄存器1;CM_3=Pos&Neg、CCIS_2=GND、Cap=捕捉模式:1、 /CCTL0 = CCIE; //timer intfut 不需要、因为我将 WDT 用于(i = 0;i