📄 lowlevelinit.c
字号:
//*------------------------------------------------------------------------------------------------
//* 文件名 : LowLevelInit.c
//* 功能描述 : 底层硬件初始化程序
//* 作者 : 焦海波
//* 版本 : 0.1
//* 建立日期、时间 : 2007/02/24 09:55
//* 最近修改日期、时间 :
//* 修改原因 :
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 头文件 -----------------------------------------------
#include "/uCOS-II/ucos_ii.h"
#include "/at91sam7x256/include/AT91SAM7X256.h"
#include "/at91sam7x256/include/lib_AT91SAM7X256.h"
//*================================================================================================
//* 函 数 区
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函数名称 : vLowLevelInit
//* 功能描述 : 应用系统开始前的相关设置工作
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
#define END_ADDR_OF_VECTBL 0x40
#define IRQ_ADDR_IN_VECTBL (END_ADDR_OF_VECTBL - 8)
#define FIQ_ADDR_IN_VECTBL (END_ADDR_OF_VECTBL - 4)
void vLowLevelInit(void)
{
extern void IRQHandler(void);
extern void FIQHandler(void);
//* 在调试或者出现异常情况时需要重新装载程序,这时EMAC仍然处于收发状态,这有可能出现内存访问越界
//* 的问题,导致0x0处的内存被写入无效数据,所以这里必须禁止EMAC收发
AT91C_BASE_EMAC->EMAC_NCR = 0x00000000;
//* 禁止所有中断
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;
//* 如果调试时并没有结束中断程序运行就终止了,在这里必须结束一次
AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR | AT91C_BASE_EMAC->EMAC_RSR;
//* 修改异常向量表,重新调整IRQ、FIQ中断处理函数的入口地址
*((INT32U*)IRQ_ADDR_IN_VECTBL) = (INT32U)IRQHandler;
*((INT32U*)FIQ_ADDR_IN_VECTBL) = (INT32U)FIQHandler;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -