您的位置 首页 分销

NEC V850 之 外部中止

编译环境:IARForV8503.81+MiniCube2硬件平台:NECV850ES/FG3D70F3630(D70F3377A)硬件资源:LED端口:P94P10KEY端口:P0…

编译环境:IAR For V850 3.81 + MiniCube2

硬件渠道:NEC V850ES/FG3 D70F3630 (D70F3377A)


硬件资源:

LED端口:P94 P10

KEY端口:P04(INTP1)


在运用V850的外部中止的时分有下面几个过程:

第一步:设置端口形式寄存器为第二功用形式(PMCn = 1);

第二步:设置第二功用形式挑选,挑选相应的第二功用(PFCEn,PFCn);

第三步:设置外部触发条件,上升沿触发,下降沿触发,上升和下降沿都触发(INTFn,INTPn);

第四步:设置中止操控寄存器,包含中止标识位,中止使能位,中止优先级(xxICn);

第五步:清中止标志位(xxIFn);

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

第七步:开大局中止(__EI());

第八步:编写中止服务函数,而且在中止函数里清相应的标志位。

下面是代码:

来自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 ; // 设置清中止标置,敞开外部中止,而且优先级设置为最低
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 ; // 封闭看门狗定时器,进入体系先关看门狗定时器,避免体系进入反常

__DI(); // 关大局中止
GPIO_PortInit(); // 初始化通用IO口
ExtInterrupt_Init(); // 初始化外部中止口
__EI(); // 开大局中止

LED1 = 0 ;
LED2 = 1 ;

while(1);
}



调试的时分留意两个当地,初始化后要敞开大局中止;第二个就是在中止服务函数里对相应的标识位进行清零。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/252128.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部