新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > NEC V850 之 外部中斷

NEC V850 之 外部中斷

作者: 時間:2016-12-03 來源:網(wǎng)絡 收藏
編譯環(huán)境:IAR For V850 3.81 + MiniCube2

硬件平臺:NEC V850ES/FG3 D70F3630 (D70F3377A)

本文引用地址:http://m.butianyuan.cn/article/201612/325098.htm


硬件資源:

LED端口:P94 P10

KEY端口:P04(INTP1)


在使用V850的外部中斷的時候有下面幾個步驟:

第一步:設置端口模式寄存器為第二功能模式(PMCn = 1);

第二步:設置第二功能模式選擇,選擇相應的第二功能(PFCEn,PFCn);

第三步:設置外部觸發(fā)條件,上升沿觸發(fā),下降沿觸發(fā),上升和下降沿都觸發(fā)(INTFn,INTPn);

第四步:設置中斷控制寄存器,包括中斷標識位,中斷使能位,中斷優(yōu)先級(xxICn);

第五步:清中斷標志位(xxIFn);

第六步:使能中斷位(xxMKn);

第七步:開全局中斷(__EI());

第八步:編寫中斷服務函數(shù),并且在中斷函數(shù)里清相應的標志位。

下面是代碼:

來自ExtInt.c

#include "ExtInt.h"

void ExtInterrupt_Init(void)
{
PMC0_bit.no4 = 1 ; // 設置端口為第二功能模式
PFCE0_bit.no4 = 0 ; // 選擇第二功能為外部中斷
PFC0_bit.no4 = 0 ;
INTF0_bit.no4 = 1 ; // 設置使能下降沿
INTR0_bit.no4 = 0 ; // 設置禁止上升沿
PIC1 = 0x07 ; // 設置清中斷標置,開啟外部中斷,并且優(yōu)先級設置為最低
PIF1 = 0 ; // 清中斷標志
PMK1 = 0 ; // 開外部中斷1屏蔽位
}

#pragma vector = INTP1_vector
__interrupt void MD_INTP1(void)
{
P9L_bit.no4 = ~P9L_bit.no4 ;
P1_bit.no0 = ~P1_bit.no0 ;
PIF1 = 0; // 清外部中斷1中斷標志
}

來自main.c

#include "main.h"

void main(void)
{
WDTM2 = 0x1F ; // 關閉看門狗定時器,進入系統(tǒng)先關看門狗定時器,防止系統(tǒng)進入異常

__DI(); // 關全局中斷
GPIO_PortInit(); // 初始化通用IO口
ExtInterrupt_Init(); // 初始化外部中斷口
__EI(); // 開全局中斷

LED1 = 0 ;
LED2 = 1 ;

while(1);
}



調試的時候注意兩個地方,初始化后要開啟全局中斷;第二個就是在中斷服務函數(shù)里對相應的標識位進行清零。


關鍵詞: NECV850外部中

評論


技術專區(qū)

關閉