色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430F5529的IO口管腳的中斷學(xué)習(xí)筆記

          MSP430F5529的IO口管腳的中斷學(xué)習(xí)筆記

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          非常簡單的一個程序,在F5529的開發(fā)板上用按鍵的IO中斷控制LED的亮滅:
          #include
          int main(void)
          {
          WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
          P1DIR |= BIT0; //將LED1對應(yīng)的IO口P1.0設(shè)置為輸出
          P1OUT &= ~BIT0; //初始化該燈設(shè)置為滅
          P1DIR &= ~BIT7; //將按鍵1對應(yīng)的IO口P1.7設(shè)置為輸入
          P1IFG &= ~BIT7; //初始化清空中斷標志位
          P1IE |= BIT7; //P1.7中斷使能
          P1IES |= BIT7; //下降沿產(chǎn)生中斷
          P1OUT |= BIT7; //P1.7設(shè)置為上拉電阻:OUT = 1; REN = 1;
          P1REN |= BIT7;
          __enable_interrupt();
          while(1);
          }
          #pragma vector = PORT1_VECTOR //固定格式,聲明中斷向量地址,不能變
          __interrupt void LED(void) //函數(shù)名,可以任意定義
          {
          int i;
          switch(__even_in_range(P1IV,18))
          {
          case 0x10:
          for (i = 0; i < 12000; i++);
          if ((P1IN & BIT7) == 0) //注意位運算的優(yōu)先級?。?!非常重要
          P1OUT ^= BIT0;
          break;
          default:
          break;
          }
          }
          經(jīng)驗總結(jié):

          1.按鍵需要延時消抖

          本文引用地址:http://cafeforensic.com/article/201611/317589.htm

          2. 標志位需要手動清零 (此處不完全正確,還有問題需要考慮)

          3. 中斷程序格式:

          #pragma vector = PORT2_VECTOR //固定格式,聲明中斷向量地址,不能變

          __interrupt void fuck430(void) //函數(shù)名,可以任意定義

          {

          switch(__even_in_range(P2IV,18))

          {

          case 0x06:

          break;

          default:

          break;

          }

          }

          4. 主程序中要開總中斷,然后有循環(huán)

          5. 位運算的優(yōu)先級很低,注意加括號

          6. 按鍵的上拉電阻,OUT、REN、IES

          一上午終于把IO中斷弄懂了。吸取位運算優(yōu)先級的教訓(xùn)。




          評論


          技術(shù)專區(qū)

          關(guān)閉