"); //-->
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护城河
HA5340/883高速精密单片采样保持放大器
三菱FX系列PLC教程 10 —— FX系列的工作原理及编程器件(二)
“给不出2000亿颗芯片?行,我自己来!”马斯克急了,正在憋一个“超级大招”
[求助]编写44b0x上的LCD实验程序,有没有什么特别注意的地方?已经郁闷了个把月了。
应用实例——如何解决双管反激变换器中的关断电压不均衡
AD585高速精密采样保持放大器
三菱FX系列PLC教程 8 —— FX系列的软件系统和编程语言
三菱FX系列PLC教程 11 —— FX系列的工作方式
台积电展望定制版HBM4E内存:N3P制程基础裸片集成内存控制器
各位大虾HAPPY NEW YEAR!发现一个新网站,大家快来看看!
AD585增益= 1时的有效采样保持电路
三菱FX系列PLC教程 9 —— FX系列的工作原理及编程器件(一)
80C51系列单片机仿真器选购指南 (第三版)
借助边缘侧AI与数字预失真提升5G能效
从太空到地面:Qorvo波束成形芯片助力卫星通信发展
51LPC系列单片机与双向晶闸管控制阻性和感性负载的全新过零检测方法
三菱FX系列PLC教程 7 —— FX系列的扩展单元
求助 Linux系统用GoAhead作WebServer
小弟出来贵宝地,请各位大哥多多关照,谢谢
各位大虾HAPPY NEW YEAR!发现一个新网站,大家快来看看!
每家零售企业都需要成为一家科技公司
数据裸奔16天浑然不知!OpenAI被“猪队友”坑惨,泄密只因一条短信?
51LPC系列单片机特殊功能寄存器定义库文件
深度解析电解直流电源如何驱动氢能时代
HA-5340的同相单位增益模式基本连接电路
AD585增益= 2时的HOLD有效采样保持电路
Arm Neoverse CSS V3驱动Microsoft Azure Cobalt 200
80C51系列开发平台产品选型指南
51LPC系列单片机与CD4094的接口原理及应用