新闻  |   论坛  |   博客  |   在线研讨会
IRQ中断实例分析(三)
xiajiashan | 2012-08-29 10:42:59    阅读:1079   发布文章

 

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

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
02年接触ARM和ucos,开发过有线和无线图像报警器,IPCamera,人脸识别系统,OCR识别系统,指纹识别系统,05年开始从事Linux及Rtems下WiFi,camera,Ethernet等驱动开发工作,专做嵌入式linux培训,致力于把我十年来的研发经验传授给每一个学员,招人的可以找我,ximenpiaoxue4016@sina.com
推荐文章
最近访客