新聞中心

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

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

作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
非常簡(jiǎn)單的一個(gè)程序,在F5529的開發(fā)板上用按鍵的IO中斷控制LED的亮滅:
#include
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= BIT0; //將LED1對(duì)應(yīng)的IO口P1.0設(shè)置為輸出
P1OUT &= ~BIT0; //初始化該燈設(shè)置為滅
P1DIR &= ~BIT7; //將按鍵1對(duì)應(yīng)的IO口P1.7設(shè)置為輸入
P1IFG &= ~BIT7; //初始化清空中斷標(biāo)志位
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ùn)算的優(yōu)先級(jí)!??!非常重要
P1OUT ^= BIT0;
break;
default:
break;
}
}
經(jīng)驗(yàn)總結(jié):

1.按鍵需要延時(shí)消抖

本文引用地址:http://butianyuan.cn/article/201611/317589.htm

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

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ùn)算的優(yōu)先級(jí)很低,注意加括號(hào)

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

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




評(píng)論


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

關(guān)閉