新聞中心

NEC V850 之 外部中斷

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

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

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


硬件資源:

LED端口:P94 P10

KEY端口:P04(INTP1)


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

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

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

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

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

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

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

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

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

下面是代碼:

來自ExtInt.c

#include "ExtInt.h"

void ExtInterrupt_Init(void)
{
PMC0_bit.no4 = 1 ; // 設(shè)置端口為第二功能模式
PFCE0_bit.no4 = 0 ; // 選擇第二功能為外部中斷
PFC0_bit.no4 = 0 ;
INTF0_bit.no4 = 1 ; // 設(shè)置使能下降沿
INTR0_bit.no4 = 0 ; // 設(shè)置禁止上升沿
PIC1 = 0x07 ; // 設(shè)置清中斷標(biāo)置,開啟外部中斷,并且優(yōu)先級設(shè)置為最低
PIF1 = 0 ; // 清中斷標(biāo)志
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中斷標(biāo)志
}

來自main.c

#include "main.h"

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

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

LED1 = 0 ;
LED2 = 1 ;

while(1);
}



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


關(guān)鍵詞: NECV850外部中

評論


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

關(guān)閉