?? sys_lpc2100.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"
/*******************************************************************************************************/
/* ISP1160MB PACK板ISP1160與LCP2100硬件連接 */
/* D0~7 -- P0.16~P0.23 */
/* D8~15 -- P2.16~P1.23 */
/* INT1 -- P0.15(EINT2) */
/* A0~1 -- P0.8(A1-GND) */
/* CS -- GND */
/* WR -- P0.13 */
/* RD -- P0.12 */
/* RSET -- P0.10 */
/* WU -- 不使用 */
/* SUP -- 不使用 */
/* 以下為使用GPIO控制ISP1160配置 */
/*******************************************************************************************************/
#define BUS_RD (1<<12)
#define BUS_WR (1<<13)
#define BUS_DATAL (0xFF<<16)
#define BUS_DATAH (0xFF<<16)
#define BUS_DATA (BUS_DATAH|BUS_DATAL)
#define BUS_A1 (1<<8)
#define HcRESET (1<<10)
//*************************************************************************
// 函數名稱:Sys_Hc_Ini
// 輸入參數:無
// 輸出參數:無
// 功能描述:硬件系統初始化,用戶在這里編寫與硬件相關的設置。
//*************************************************************************
void Sys_Hc_Ini(void)
{
PINSEL0 &= ~((3<<10*2)|(3U<<8*2)|(3<<12*2)|(3<<13*2)|(3U<<15*2)); // 先配置P0.0~P0.15所有相關引腳(P0.8、P0.10、P0.12、P0.13、P0.15)為GPIO口
PINSEL0 |= 2U<<15*2;
IO0DIR &= ~(HcRESET+BUS_A1+BUS_WR+BUS_RD+BUS_DATAL); // 先配置P0.0~P0.15所有相關引腳(P0.10、P0.12、P0.13、P0.15)為輸入
IO0DIR |= HcRESET+BUS_A1+BUS_WR+BUS_RD; // 配置相關輸出引腳
PINSEL1 &= 0xffff0000; // 配置P0.16~P0.23為GPIO口
IO0DIR &= ~BUS_DATAL; // 配置P1.16~P1.23為輸入
PINSEL2 = 0x00000004; // 配置P1.16~P1.25為GPIO口
IO1DIR &= ~BUS_DATAH; // 配置P1.16~P1.23為輸入
IO0CLR = HcRESET+BUS_A1+BUS_WR+BUS_RD; // 初始化輸出引腳為高
IO0SET = HcRESET+BUS_A1+BUS_WR+BUS_RD; // 初始化輸出引腳為高
/*** 在執行ISP1160硬件復位之前,應初始化硬件配置 ***/
Sys_Hc_RESET(); // 總線復位
}
//*************************************************************************
// 函數名稱:outcommand
// 輸入參數:data,輸出的數據
// 輸出參數:無
// 功能描述:寫命令寄存器
//*************************************************************************
void outcommand( unsigned short data)
{
IO0SET = BUS_A1; // 設置地址
IO0DIR |= BUS_DATAL; // 使能低8位數據輸出
IO1DIR |= BUS_DATAH; // 使能高8位數據輸出
IO0CLR = BUS_DATAL; // 清零低8位數據
IO1CLR = BUS_DATAH; // 清零高8位數據
IO0SET = BUS_DATAL & (data<<16); // 輸出低8位數據
IO1SET = BUS_DATAH & (data<<8); // 輸出高8位數據
IO0CLR = BUS_WR; // 寫信號使能
IO0SET = BUS_WR;
}
//*************************************************************************
// 函數名稱:outdata
// 輸入參數:data,輸出的數據
// 輸出參數:無
// 功能描述:寫數據寄存器
//*************************************************************************
void outdata( unsigned short data)
{
IO0CLR = BUS_A1; // 設置地址
IO0DIR |= BUS_DATAL; // 使能低8位數據輸出
IO1DIR |= BUS_DATAH; // 使能高8位數據輸出
IO0CLR = BUS_DATAL; // 清零低8位數據
IO1CLR = BUS_DATAH; // 清零高8位數據
IO0SET = BUS_DATAL & (data<<16); // 輸出低8位數據
IO1SET = BUS_DATAH & (data<<8); // 輸出高8位數據
IO0CLR = BUS_WR; // 寫信號使能
IO0SET = BUS_WR;
}
//*************************************************************************
// 函數名稱:indata
// 輸入參數:無
// 輸出參數:data,返回的數據
// 功能描述:讀入數據
//*************************************************************************
unsigned short indata(void)
{
uint16 data16;
IO0CLR = BUS_A1; // 地址使能
IO0DIR &= ~BUS_DATAL; // 使能數據低8位輸入
IO1DIR &= ~BUS_DATAH; // 使能數據高8位輸入
IO0CLR = BUS_RD; // 寫信號使能
data16 = (IO0PIN&BUS_DATAL)>>16;
data16 |= (IO1PIN&BUS_DATAH)>>8;
IO0SET = BUS_RD;
return data16;
}
void Sys_WaitinMS(unsigned int time);
//*************************************************************************
// 函數名稱:Sys_Hc_RESET
// 輸入參數:無
// 輸出參數:無
// 功能描述:ISP116x硬件復位
//*************************************************************************
void Sys_Hc_RESET(void)
{
IO0CLR = HcRESET;
Sys_WaitinMS(50);
IO0SET = HcRESET;
Sys_WaitinMS(2);
}
//*************************************************************************
// 函數名稱:Sys_Hc_SetWAKEUP
// 輸入參數:無
// 輸出參數:無
// 功能描述:喚醒ISP116x
//*************************************************************************
void Sys_Hc_SetWAKEUP(void)
{
}
//*************************************************************************
// 函數名稱:Sys_Hc_GetSUSPEND
// 輸入參數:無
// 輸出參數:無
// 功能描述:獲取ISP116x掛起狀態
//*************************************************************************
uint8 Sys_Hc_GetSUSPEND(void)
{
return 0;
}
//**************************************************************************
// 函數名稱:SYS_ISP1160_IintIni
// 輸入參數:無
// 輸出參數:無
// 功能描述:LPC2200與ISP1160連接的中斷服務函數。
//**************************************************************************
void ISP1160_Exception(void)
{
isr_USB_Hc(); // 與ISP1160驅動接口的中斷處理函數
/* 以下與用戶硬件相關 */
/* 根據實際連接的中斷引腳設置 */
EXTINT = 0x04; // EINT2
VICVectAddr = 0;
}
/***************************以上為用戶需修改的函數************************/
//*************************************************************************
// 函數名稱:Sys_WaitinUS
// 輸入參數:time,等待時間
// 輸出參數:無
// 功能描述:微秒延時,該延時只是操作系統起動前使用.
//*************************************************************************
void Sys_WaitinUS(unsigned int time)
{
unsigned int loop;
for(loop =time*30;loop>0 ;loop--)
{
continue;
}
}
//*************************************************************************
// 函數名稱:Sys_WaitinMS
// 輸入參數:time,等待時間
// 輸出參數:無
// 功能描述:毫秒延時,該延時只是操作系統起動前使用.
//*************************************************************************
void Sys_WaitinMS(unsigned int time)
{
unsigned int loop;
for(loop = time ; loop > 0 ;loop--)
{
Sys_WaitinUS(1000); //delay 1ms, CPU dependant, OS independant
}
}
//*************************************************************************
// 函數名稱:disable
// 輸入參數:無
// 輸出參數:無
// 功能描述:禁止中斷
//*************************************************************************
void disable(void)
{
OS_ENTER_CRITICAL();
}
//*************************************************************************
// 函數名稱:disable
// 輸入參數:無
// 輸出參數:無
// 功能描述:使能中斷
//*************************************************************************
void enable(void)
{
OS_EXIT_CRITICAL();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -