MSP430F5529的IO口管腳的中斷學(xué)習(xí)筆記
#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í)!?。》浅V匾?/div>
P1OUT ^= BIT0;
break;
default:
break;
}
}
經(jīng)驗(yàn)總結(jié):
1.按鍵需要延時(shí)消抖
本文引用地址:http://m.ptau.cn/article/201611/317589.htm2. 標(biāo)志位需要手動(dòng)清零 (此處不完全正確,還有問(wèn)題需要考慮)
3. 中斷程序格式:
#pragma vector = PORT2_VECTOR //固定格式,聲明中斷向量地址,不能變
__interrupt void fuck430(void) //函數(shù)名,可以任意定義
{
switch(__even_in_range(P2IV,18))
{
case 0x06:
…
break;
default:
break;
}
}
4. 主程序中要開(kāi)總中斷,然后有循環(huán)
5. 位運(yùn)算的優(yōu)先級(jí)很低,注意加括號(hào)
6. 按鍵的上拉電阻,OUT、REN、IES
一上午終于把IO中斷弄懂了。吸取位運(yùn)算優(yōu)先級(jí)的教訓(xùn)。
關(guān)鍵詞:
MSP430F5529IO口管腳中斷學(xué)
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論