主题中讨论的其他器件:MSP430WARE
您好!
我事先很抱歉、由于我在 CapTIvate 设计中心寻找为我的键盘生成代码、我尝试了解它的工作原理、但对于像我这样的偏执者来说似乎很困难。 因此、我再次构建了一个仅适用于一个引脚 P1.0的新代码、但其他引脚不响应。 现在、请让我说明为什么只有引脚 P1.0正常工作、 而所有其他引脚都不工作? 我查看了数据表,因为我以为可能错过了其他引脚的一些寄存器,但对我来说似乎是正确的
void pin_OSCi (void){
//********* 端口1 //
unsigned char i;
对于(i = 0;<NUM_SEN_P1; i++))
{
//******** Timer0_A3作为计数器 //
//配置 Timer0_A3
TA0CTL =tassel_0|ID_3|MC_2|TACLR; // TACLK (PinOsc 时钟源)=tassel_0、ID_0=输入分频器:0、MC_2=连续上升
TA0CCTL0 =CM_3|CCIS_2|CAP; //CM_3=正边沿、CCIS_2=GND、CAP=捕捉模式
//********* PIN_LOCATOR********* //
//配置端口1按钮的引脚振荡器
P1DIR &=~电极_P1[i]; //P2.3
P1SEL &=~电极_P1[i];
P1SEL2 |=电极_P1[i];
//******** 看门狗间隔 作为选通时间******** //
WDTCTL = WDT_MDLY_32; //WDT 由 fSMCLK 计时
//TA0CTL |= TACLR; //清除 Timer0_A3 TAR
IE1 |= WDTIE; //启用 WDTIE 位
BIS_SR (LPM0_Bits + GIE);//Enter LPM0和中断被启用
TA0CCTL0 ^= CCIS0; //创建 CCR0需求的软件捕获
MEAS_cnt[i]=TA0CCR0; //保存结果
WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器
P1SEL2 &=~电极_P1[i];
}
}
#pragma vector = WDT_vector //间隔计时器矢量位置
_interrupt void 间隔定时器(void)
{
P2OUT ^= BIT2;//切换 P1.0
//TA0CCTL0 ^= CCIS0; //创建 CCR0的软件捕获
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS); //从 LPM0中获取
}