LPC1768怎么设置中断(IRQEnable ();)怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LPC1768怎么设置中断(IRQEnable ();)怎么写相关的知识,希望对你有一定的参考价值。


/*EXTMODE、EXTPOLAR 这两个寄存器一个管理选择电平触发还是边沿触

发,一个选择上升沿和下降沿或者高低电平触发。

在外部中断配置中我们还需要在PINSEL4 中将相应的管脚配置成外

部中断模式。*/

主程序如下:   keil MDK

#include "lpc17xx.h"

void EINT0_IRQHandler () //外部中断0 中断函数

LPC_SC->EXTINT|=1; //清零标志位

LPC_GPIO2->FIOPIN=0x000000fe; //LED 显示

void EINT1_IRQHandler ()

LPC_SC->EXTINT|=2;

LPC_GPIO2->FIOPIN=0x000000fd;

void EINT2_IRQHandler ()

LPC_SC->EXTINT|=4;

LPC_GPIO2->FIOPIN=0x000000fb;


void ext_init(void) //外部中断初始化

LPC_PINCON->PINSEL4=0x01500000; //配置管脚,选择外部中断功能

LPC_SC->EXTMODE=0x07; //配置成脉冲触发

LPC_SC->EXTPOLAR=0x00; //配置成下降沿触发

NVIC_EnableIRQ(EINT0_IRQn); //使能外部中断0

NVIC_EnableIRQ(EINT1_IRQn);

NVIC_EnableIRQ(EINT2_IRQn);

LPC_SC->EXTINT=7; //所有使用的外部中断标准位清零

int main(void)

SystemInit(); //系统初始化

ext_init(); //中断初始化

LPC_GPIO2->FIODIR=0x000000ff; //端口方向配置

LPC_GPIO2->FIOPIN=0x000000ff; //端口电平配置

while(1);

参考技术A lpc是什么呀呀追问

NXP的LPC1768 ARM Cortex M3单片机

ARM7LPC2138做串口中断实验的时候,发送中断一直进不去。接收中断一切正常,代码改了n遍了,求解释啊

代码如下,看哪里错了,或者有没有调试成功的发送中断程序啊,麻烦发下,谢谢了
void delay(uint z)

uint i,j;
for(i=1000;i>0;i--)
for(j=z;j>0;j--);

__irq void uart0()

uint dat;
dat=U0IIR; //读取U0IIR,清除中断
VICVectAddr=0; //中断结束

void uart0_init()

PINSEL0=0x05;
U0LCR=0x83; //设置波特率。DALB置一
U0DLL=0x5a; //设置波特率9600,Fosc/4*5=Fpclk,初值=Fpclk/16/bauad
U0DLM=0x00;
U0LCR=0x03; //设置八位数据,无奇偶校验
U0IER=0x02; //使能THRE中断
U0FCR=0x05;

int main(void)

//uint i;
uart0_init();
U0THR=0X0F;
VICIntSelect=0; //选择IRQ中断
VICIntEnable=(1<<6); //使能UART0中断
VICVectAddr0=(uint)uart0; //设置中断地址
VICVectCntl0=0x26; //最高优先级
while(1)

U0THR=0x0a;
delay(8);
//U0FCR=0X05;

参考技术A U0IER=0x02; //使能THRE中断
这句没使能接收中断吧,接收中断正常吗?

首先要知道,串口0只有一个中断入口,中断发生后,需要对中断标识寄存器进行判断以确定中断类型再进行相应处理。

如:
__irq void uart0()

if((U0IIR&0x0F)==0x02)
发送数据; //发送中断
if((U0IIR&0x0F)==0x04)
接收数据; //接收中断
.
.
.

VICVectAddr=0; //中断结束


另外,实时性要求不是特别高的情况下,一般发送用查询方式即可。

/*
*********************************************************************************************************
** 函数名称 :IRQ_UART0()
** 函数功能 :串口0接收中断服务程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void __irq IRQ_UART0 (void)

uint8 i;

if ((U0IIR & 0x0F) == 0x04)
rcv_new = 1; // 设置接收到新的数据标志
for (i=0; i<8; i++)

rcv_buf[i] = U0RBR; // 读取FIFO的数据,并清除中断

VICVectAddr = 0x00; // 中断处理结束


/*
*********************************************************************************************************
** 函数名称 :UART0_SendByte()
** 函数功能 :向串口0发送1字节数据
** 入口参数 :dat 要发送的数据
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendByte (uint8 dat)

U0THR = dat; // 要发送的数据


/*
*********************************************************************************************************
** 函数名称 :UART0_SendBuf()
** 函数功能 :向串口发送8字节数据
** 入口参数 :dat 要发送的数据
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendBuf (void)

uint8 i;

for (i=0; i<8; i++)
UART0_SendByte(rcv_buf[i]);
while ((U0LSR & 0x20) == 0); // 等待数据发送完毕
追问

接收中断正常呢,呵呵,现在不玩arm7了,在学arm9的应用层了、、

参考技术B 接收中断可以进去就可以了,

发送数据没有必要非要进中断处理!!

以上是关于LPC1768怎么设置中断(IRQEnable ();)怎么写的主要内容,如果未能解决你的问题,请参考以下文章

用LPC1768+DP83848实现网口通信,DP83848的PHY ADDRESS和ID是怎么确定的?

为 mbed LPC1768 arm-none-eabi-g++ 构建 protobuf-c、libprotobuf-c

LPC1768/1769之CAN控制器概述

LPC 1768 上的 IAP

我需要帮助构建lpc1768的openvibe源代码

LPC1768系统时钟配置-CPU时钟频率96MHz