专栏中心

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实例程序

 

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

关键词:

相关推荐

TechInsights 拆解:小米红米 Note 14 5G

HT48RA0A 8位OTP载波遥控单片机数据手册 V1.70 (英)

如何构建有弹性的半导体供应链

ADS5281 社区视频

视频 2010-03-11

Omdia:2025年第三季度,显示玻璃营收创历史新高,达2700亿日元

TechInsights 拆解:三星 Galaxy S25 Ultra

消费电子 2025-11-10

如何设计一套指令集(ISA):从契约到实现的工程方法

嵌入式系统 2025-11-10

应用 V.I 晶片驱动LED I - 恒流示范

视频 2010-02-26

全球AI机器人产业在哪些方面可以协作共赢

15W 无滤波器 D 类音频放大器 TPA3110D2

TechInsights 拆解:华为 Pura X

消费电子 2025-11-10

让 AI “少渴一点”:揭示并应对模型的隐性用水足迹

应用 V.I 晶片驱动LED II - 大功率 LED 阵列

视频 2010-02-26

使用 p-GaN 屏蔽提高开关速度

SRAM 冷不了:利用电源域分离窃取片上机密

嵌入式系统 2025-11-10

ADS1115: 工业级最小尺寸16位 ADC

视频 2010-03-11
更多 培训课堂
更多 焦点
更多 视频

技术专区