/********************************************************
*
* 北京四维卓信电子有限公司
* http://www.openadsp.com
*
* 【OpenADSP开源社区】
* http://www.openadsp.com/bbs/
*
********************************************************/
#include <cdefBF533.h>
#include <sys\exception.h>
#include "cpld.h"
EX_INTERRUPT_HANDLER(FlagA_ISR);
void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Init_Flags(void)
{
*pFIO_INEN = 0x0001;
*pFIO_DIR = 0x0000;
*pFIO_EDGE = 0x0001;
*pFIO_POLAR = 0x0001;
*pFIO_MASKA_D = 0x0001;
}
void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xffff5fff;
register_handler(ik_ivg12, FlagA_ISR);
*pSIC_IMASK = 0x00080000;
}
EX_INTERRUPT_HANDLER(FlagA_ISR)
{
unsigned char interrupt=0;
interrupt = (~*pINTERRUPT_DAT&0x7f);
if(interrupt&KEY_INT)
printf("The interrupt is keyboard!\n\r");
if(interrupt&TOUCH_INT)
printf("The interrupt is touch interrupt!\n\r");
if(interrupt&TOUCH_BUSY)
printf("The interrupt is touch busy!\n\r");
if(interrupt&LAN_IOWAIT)
printf("The interrupt is lan iowait!\n\r");
if(interrupt&LAN_INT)
printf("The interrupt is lan interrupt!\n\r");
if(interrupt&SD_INF)
printf("SDCard inserted\n\r");
if(interrupt&EXT_IO_INT)
printf("The interrupt is extend IO interrupt\n\r");
*pFIO_FLAG_C = 0x0001;
}
void main(void)
{
Set_PLL(16,4);
Init_EBIU();
ExtIO_Interrupt_Enable();
Interrupt_Enable();
Init_Flags();
Init_Interrupts();
while(1);
}
ADSP-BF533的例程源码17:中断
需积分: 0 54 浏览量
更新于2024-06-03
1
收藏 44KB ZIP 举报
在嵌入式系统开发中,中断是处理器与外部设备交互的关键机制,允许系统对实时事件做出快速响应。本文将深入探讨ADSP-BF533处理器的中断系统,结合提供的"ADSP-BF533的例程源码17:中断"进行详细解析。
ADSP-BF533是一款Blackfin系列的数字信号处理器(DSP),由Analog Devices公司生产,广泛应用于音频、视频处理和通信系统。其中断系统设计灵活,支持多种中断源,能有效处理复杂的实时任务。
1. **中断源**
ADSP-BF533有多个中断源,包括内部硬件中断(如定时器、串口、DMA等)和外部中断(如GPIO)。这些中断源可以通过编程配置为边沿触发或电平触发,以适应不同的应用需求。
2. **中断向量表**
每个中断都有一个对应的中断服务程序(ISR),在中断发生时执行。这些ISR的地址存储在中断向量表中,处理器在响应中断时会自动跳转到相应的ISR地址。
3. **中断优先级**
ADSP-BF533支持中断优先级管理,可以设置每个中断的优先级,确保高优先级的中断可以抢占低优先级中断的服务。
4. **中断使能与禁止**
在代码中,可以通过设置中断控制器寄存器来启用或禁止特定中断。这样可以在需要时开启中断服务,而在不需要时避免不必要的中断响应,提高系统的效率。
5. **中断处理流程**
- 中断请求:当外部设备或内部模块产生中断时,会向处理器发送中断请求。
- 中断处理:处理器检测到中断请求后,保存当前任务的上下文(如寄存器状态),然后转向中断向量表获取ISR地址。
- 中断服务:执行ISR,处理中断事件。
- 中断返回:ISR执行完毕后,恢复之前保存的上下文,并从ISR返回到被中断的任务继续执行。
6. **中断例程源码分析**
"bf53x_interrupt"文件夹中的源码可能包含了ADSP-BF533处理器如何初始化中断系统、配置中断源、处理中断事件以及ISR的实现。通过对这些源码的阅读和理解,开发者可以学习到如何在实际项目中有效地使用中断功能。
7. **调试技巧**
在开发过程中,为了确保中断正确工作,可能需要使用调试工具查看中断向量表、中断使能状态和中断计数器等。同时,利用断点和单步执行可以帮助定位中断问题。
理解并掌握ADSP-BF533的中断机制对于开发高效、可靠的嵌入式系统至关重要。通过深入研究提供的例程源码,开发者可以进一步了解中断系统的工作原理,并将其应用到实际项目中。

ADI_OP
- 粉丝: 6127
最新资源
- 这资料神了EXCELL.pdf
- 中国网络媒体及营销发展趋势PPT课件.ppt
- 施工企业信息化应用之路(简版).ppt
- 宏基笔记本BIOS设置图解分析解析.doc
- 教育课件导数的运算法则市名师优质课比赛一等奖市公开课获奖课件.pptx
- 校园网络监控建设方案资料.doc
- 机电一体化概述接口技术ppt课件.ppt
- 小区网络规划毕业论文.docx
- 工程项目管理课程设计说明书终结版样本.doc
- 软件需求工程:系统和上下文.pptx
- 网络视频监控NVR存储解决方案.doc
- 网络营销的实践与管理.pptx
- 现代领翔汽车网络营销策划书.doc
- 电子商务基础知识培训精选幻灯片.ppt
- 多采样率数字滤波器在软件无线电中的应用研究.doc
- 企业内部部门信息化需求调研表.doc