?? sys_lpc2200.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: SYS_LPC2100.c
** Last modified Date: 2005-04-22
** Last Version:
** Description:
**
**------------------------------------------------------------------------------------------------------
** Created By: Lishan Zhou
** Created date: 2005-04-22
** Version:
** Description:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include "config.h"
/*******************************************************************************************************/
/* MagicARM2200板ISP1161A1(HOST)與LCP2100硬件連接 */
/* D0~15 -- P2.0~P0.15(D0~D15) */
/* INT1(OUT) -- P0.16(EINT0) */
/* A0~1(IN) -- P3.1~P3.2(A1-A2) */
/* CS(IN) -- F16V8C譯碼,地址為0x83400000 */
/* WR(IN) -- P3.27(WE) */
/* RD(IN) -- P1.1(OE) */
/* RSET(OUT) -- P1.25 */
/* WU(IN) -- P1.22 */
/* SUP(OUT) -- P1.21 */
/* 以下為使用GPIO控制ISP1160配置 */
/*******************************************************************************************************/
#define HC_COMMAND_ADDRESS 0x83400002 // ISP1160與CPU連接的地址(命令)
#define HC_DATA_ADDRESS 0x83400000 // ISP1160與CPU連接的地址(數(shù)據(jù))
#define HcRESET (1<<25)
#define HcWU (1<<22)
#define HcSUP (1<<21)
//*************************************************************************
// 函數(shù)名稱:Sys_Hc_Ini
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:硬件系統(tǒng)初始化,用戶在這里編寫與硬件相關(guān)的設(shè)置。
//*************************************************************************
void Sys_Hc_Ini(void)
{
PINSEL1 &= 0xfffffffc; // 配置P0.16為中斷(EINT0)
PINSEL1 |= 0x00000001;
PINSEL2 &= ~0x00000008; // 配置P1.16~P1.25為GPIO口
IO1DIR &= HcRESET+HcWU+HcSUP;
IO1DIR |= HcRESET+HcWU;
IO1SET = HcRESET+HcWU; // 初始化輸出引腳為高
/*** 在執(zhí)行ISP1160硬件復位之前,應初始化硬件配置 ***/
Sys_Hc_RESET(); // 總線復位
}
//*************************************************************************
// 函數(shù)名稱:outport
// 輸入?yún)?shù):addr,輸出的地址
// data,輸出的數(shù)據(jù)
// 輸出參數(shù):無
// 功能描述:向某地址寫數(shù)據(jù)
//*************************************************************************
void outcommand( unsigned short data)
{
* (volatile unsigned short *) HC_COMMAND_ADDRESS = data;
}
//*************************************************************************
// 函數(shù)名稱:outport
// 輸入?yún)?shù):addr,輸出的地址
// data,輸出的數(shù)據(jù)
// 輸出參數(shù):無
// 功能描述:向某地址寫數(shù)據(jù)
//*************************************************************************
void outdata( unsigned short data)
{
* (volatile unsigned short *) HC_DATA_ADDRESS = data;
}
//*************************************************************************
// 函數(shù)名稱:inport
// 輸入?yún)?shù):addr,讀取數(shù)據(jù)的地址
// 輸出參數(shù):data,返回的數(shù)據(jù)
// 功能描述:從指定地址讀回一個字
//*************************************************************************
unsigned short indata(void)
{
return *((volatile unsigned short*) HC_DATA_ADDRESS);
}
void Sys_WaitinMS(unsigned int time);
//*************************************************************************
// 函數(shù)名稱:Sys_Hc_RESET
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:ISP116x硬件復位
//*************************************************************************
void Sys_Hc_RESET(void)
{
IO1CLR = HcRESET;
Sys_WaitinMS(50);
IO1SET = HcRESET;
Sys_WaitinMS(2);
}
//*************************************************************************
// 函數(shù)名稱:Sys_Hc_SetWAKEUP
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:喚醒ISP116x
//*************************************************************************
void Sys_Hc_SetWAKEUP(void)
{
}
//*************************************************************************
// 函數(shù)名稱:Sys_Hc_GetSUSPEND
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:獲取ISP116x掛起狀態(tài)
//*************************************************************************
uint8 Sys_Hc_GetSUSPEND(void)
{
return 0;
}
//**************************************************************************
// 函數(shù)名稱:SYS_ISP1160_IintIni
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:LPC2200與ISP1160連接的中斷服務函數(shù)。
//**************************************************************************
void ISP1160_Exception(void)
{
isr_USB_Hc(); // 與ISP1160驅(qū)動接口的中斷處理函數(shù)
/* 以下與用戶硬件相關(guān) */
/* 根據(jù)實際連接的中斷引腳設(shè)置 */
EXTINT = 0x01; // EINT0
VICVectAddr = 0;
}
/***************************以上為用戶需修改的函數(shù)************************/
//*************************************************************************
// 函數(shù)名稱:Sys_WaitinUS
// 輸入?yún)?shù):time,等待時間
// 輸出參數(shù):無
// 功能描述:微秒延時,該延時只是操作系統(tǒng)起動前使用.
//*************************************************************************
void Sys_WaitinUS(unsigned int time)
{
unsigned int loop;
for(loop =time*30;loop>0 ;loop--)
{
continue;
}
}
//*************************************************************************
// 函數(shù)名稱:Sys_WaitinMS
// 輸入?yún)?shù):time,等待時間
// 輸出參數(shù):無
// 功能描述:毫秒延時,該延時只是操作系統(tǒng)起動前使用.
//*************************************************************************
void Sys_WaitinMS(unsigned int time)
{
unsigned int loop;
for(loop = time ; loop > 0 ;loop--)
{
Sys_WaitinUS(1000); //delay 1ms, CPU dependant, OS independant
}
}
//*************************************************************************
// 函數(shù)名稱:disable
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:禁止中斷
//*************************************************************************
void disable(void)
{
OS_ENTER_CRITICAL();
}
//*************************************************************************
// 函數(shù)名稱:disable
// 輸入?yún)?shù):無
// 輸出參數(shù):無
// 功能描述:使能中斷
//*************************************************************************
void enable(void)
{
OS_EXIT_CRITICAL();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -