专栏中心

EEPW首页 > 专栏 > IRQ中断实例分析(三)

IRQ中断实例分析(三)

发布人:xiajiashan 时间:2012-08-29 来源:工程师 发布文章

 

3. 向量&非向量IRQ实例程序

/****************************************************************************
* 文件名:main.c
* 功 能:有四个中断,UART0,UART1,I2C,SPI0,其中
* UART0,SPI0分配为向量IRQ
* UART1,I2C分配为非向量IRQ
* 说 明:
****************************************************************************/
#include "config.h"
#define UART1_IRQ 1 << 7
#define I2C_IRQ 1 << 9
/****************************************************************************
* 功 能:中断服务程序。
****************************************************************************/
void __irq IRQ_SPI0(void)
{
代码略
}
void __irq IRQ_UART0(void)
{
代码略
}

void __irq NoVector_ISR(void)
{
volatile uint32 tmp;
tmp = VICIRQStatus;
if( tmp & UART1_IRQ)
{
UART1中断处理代码略
}
if( tmp & I2C_IRQ)
{
I2C中断处理代码略
}
VICVectAddr = 0; // 向量中断结束
}
/****************************************************************************

【By 下家山 Q群 75303301 上海松江文汇路928号258室 松江大学城

上海索漫科技 http://www.xiajiashan.com 专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训】

****************************************************************************/
int main(void)
{
PINSEL0 = 0x55555555; // 配置管脚功能
/*I2C,SPI0,UART0,UART1相关初始化代码部分略 */
/* 中断部分设置*/
VICIntSelect = 0x00000000; // 所有中断通道设置为IRQ中断
VICDefVectAddr = (uint32)NoVector_ISR; // 设置非向量中断服务程序地址向量

VICVectAddr0 = (uint32)IRQ_UART0; // 设置uart0中断服务程序地址向量
VICVectAddr1 = (uint32)IRQ_SPI0; // 设置spi0中断服务程序地址向量
VICVectCntl0 = 0x00000026; // 6号中断源使能为向量IRQ并设置为最高优先级
VICVectCntl1 = 0x0000002A; // 10号中断源使能为向量IRQ并设置为次高优先级
VICIntEnable = 0x000006C0; /* 使能UART0,UART1,I2C,SPI0=>bit10,bit9,bit7和bit6=1*/

while(1) // 等待中断发生
{
代码略
}
return(0);
}



本文的一些截图来自philips lpc2136英文datasheet.

写于上海松江 下家山 有什么问题可与我联系:1209050967

上海索漫提供

http://www.xiajiashan.com
IRQ中断实例分析(一):向量IRQ实例程序


IRQ中断实例分析(二):非向量IRQ实例程序


IRQ中断实例分析(三):向量&非向量IRQ实例程序

 

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

趁硅谷过节“开大”!DeepSeek上线“奥数金牌”模型!填平谷歌OpenAI护城河

“给不出2000亿颗芯片?行,我自己来!”马斯克急了,正在憋一个“超级大招”

应用实例——如何解决双管反激变换器中的关断电压不均衡

三菱FX系列PLC教程 8 —— FX系列的软件系统和编程语言

台积电展望定制版HBM4E内存:N3P制程基础裸片集成内存控制器

80C51系列单片机仿真器选购指南 (第三版)

借助边缘侧AI与数字预失真提升5G能效

从太空到地面:Qorvo波束成形芯片助力卫星通信发展

51LPC系列单片机与双向晶闸管控制阻性和感性负载的全新过零检测方法

每家零售企业都需要成为一家科技公司

数据裸奔16天浑然不知!OpenAI被“猪队友”坑惨,泄密只因一条短信?

51LPC系列单片机特殊功能寄存器定义库文件

深度解析电解直流电源如何驱动氢能时代

Arm Neoverse CSS V3驱动Microsoft Azure Cobalt 200

80C51系列开发平台产品选型指南

51LPC系列单片机与CD4094的接口原理及应用

更多 培训课堂
更多 焦点
更多 视频

技术专区