⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardware.h

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 H
字号:
/****************************************************************
**                                                              *
**  FILE         :  Hardware.H                                  *
**  COPYRIGHT    :  (c) 2001 .Xiamen Yaxon NetWork CO.LTD       *
**                                                              *
**                                                              *
**  By : CCH 2002.1.15                                          *
****************************************************************/
#ifndef	DEF_HARDWARE
#define	DEF_HARDWARE

#include "target.h"
#include "lib_at91m40800.h"
#include "system.h"

/*
********************************************************************************
*                  initialize all port config
********************************************************************************
*/
__inline  void InitAllPort(void)
{    
	*AT91C_PIO_IDR  = 0xFFFFFFFF;
	*AT91C_PIO_IFER = 0xFFFFFFFF;
}

/*
********************************************************************************
*                  initialize internal watch dog operation
********************************************************************************
*/
__inline void OpenIntWatchdog(void)
{
	AT91C_BASE_WD->WD_CMR = 0x373F;
	AT91C_BASE_WD->WD_OMR = 0x2343;
}

__inline void CloseIntWatchdog(void)
{
	AT91C_BASE_WD->WD_OMR = 0x2340;
}

__inline void ClearIntWatchdog(void)
{
	AT91C_BASE_WD->WD_CR  = 0xC071;
}

/*
********************************************************************************
*                  initialize external watch dog operation
********************************************************************************
*/
#define PIN_RUNFLAG			(AT91C_PIO_P0)

__inline void OpenExtWatchdog(void)
{
	*AT91C_PIO_PER  = PIN_RUNFLAG;
	*AT91C_PIO_OER  = PIN_RUNFLAG;
}

/*
********************************************************************************
*                  Initial watch dog and define toggle runflag
********************************************************************************
*/
__inline void InitWatchdog(void)
{
	OpenIntWatchdog();
	OpenExtWatchdog();
}

__inline void ToggleRunFlag(void)
{
	if(*AT91C_PIO_PDSR & PIN_RUNFLAG) 
	{
		*AT91C_PIO_CODR = PIN_RUNFLAG;
	}
	else 
	{
		*AT91C_PIO_SODR = PIN_RUNFLAG;
	}
}

/*
********************************************************************************
*                  define clear watch dog
********************************************************************************
*/
__inline void ClearWatchdog(void)
{
	ClearIntWatchdog();
	ToggleRunFlag();
}


/*
********************************************************************************
*                  define gps power control operation
********************************************************************************
*/
#define PORT_GPSSAVE          (AT91C_PIO_P1)

__inline void InitGpsSavePort(void)
{
    *AT91C_PIO_PER  = PORT_GPSSAVE;
    *AT91C_PIO_OER  = PORT_GPSSAVE;     
}

__inline void PowerdownGps(void)
{
    InitGpsSavePort();
    *AT91C_PIO_CODR = PORT_GPSSAVE;
}

__inline void PowerupGps(void)
{
    InitGpsSavePort();
    *AT91C_PIO_SODR = PORT_GPSSAVE;
}

/*
********************************************************************************
*                  define extint IRQ0,IRQ1,IRQ2
********************************************************************************
*/

#define PORT_IRQ0            (AT91C_PIO_P9)
#define PORT_IRQ1            (AT91C_PIO_P10)
#define PORT_IRQ2            (AT91C_PIO_P11)


__inline void  InitIRQ0Port(void)
{
     *AT91C_PIO_PDR = PORT_IRQ0;
}

__inline void  InitIRQ1Port(void)
{
     *AT91C_PIO_PDR = PORT_IRQ1;
}

__inline void  InitIRQ2Port(void)
{
     *AT91C_PIO_PDR = PORT_IRQ2;
}


/*
********************************************************************************
*                  define power amplifier speaker control operation
********************************************************************************
*/
#define PORT_SHUTDOWN               (AT91C_PIO_P2)


__inline void InitPowerAmplifierSelectPort(void)
{
    *AT91C_PIO_IDR = PORT_SHUTDOWN;
    *AT91C_PIO_PER = PORT_SHUTDOWN;
    *AT91C_PIO_OER = PORT_SHUTDOWN;
    *AT91C_PIO_CODR = PORT_SHUTDOWN;        
}

__inline void SelectPowerAmplifier_Speaker(void)
{

}

__inline void SelectPowerAmplifier_VoiceChip(void)
{
}

__inline void DeselectPowerAmplifier_All(void)
{
}

__inline void PowerUpPowerAmplifier(void)
{
    *AT91C_PIO_CODR = PORT_SHUTDOWN;                
}

__inline void PowerDownPowerAmplifier(void)
{
    *AT91C_PIO_SODR = PORT_SHUTDOWN;
}

/*
********************************************************************************
*                  define Recorder Input control operation
********************************************************************************
*/
__inline void InitRecSelectPort(void)
{
}

__inline void SelectRec_FreeMic(void)
{
}

__inline void SelectRec_FreeSpk(void)
{
}

__inline void SelectRec_HandMic(void)
{
}

__inline void SelectRec_HandSpk(void)
{
}

__inline void DisableSelectRec_All(void)
{
}

/*
********************************************************************************
*                  define output port
********************************************************************************
*/
#define PIN_LEDGREEN             (AT91C_PIO_P9)
#define PIN_LEDRED               (AT91C_PIO_P8)
#define PIN_X0                   (AT91C_PIO_P3)
#define PIN_X1                   (AT91C_PIO_P4)
#define PIN_X2                   (AT91C_PIO_P6)
#define PIN_X3                   (AT91C_PIO_P26)

/*
********************************************************************************
*                  init output port
********************************************************************************
*/

__inline void Init_PIN_LEDRED(void)
{
	*AT91C_PIO_PER  = PIN_LEDRED;
    *AT91C_PIO_OER  = PIN_LEDRED;
}

__inline void Init_PIN_LEDGREEN(void)
{
	*AT91C_PIO_PER  = PIN_LEDGREEN;
    *AT91C_PIO_OER  = PIN_LEDGREEN;
}

__inline void Init_PIN_AllX(void)
{
    *AT91C_PIO_PER  = PIN_X0|PIN_X1|PIN_X2|PIN_X3;
    *AT91C_PIO_OER  = PIN_X0|PIN_X1|PIN_X2|PIN_X3;
}


/*
********************************************************************************
*                  concrol output ports
********************************************************************************
*/
__inline void Pulldown_LEDRED(void)
{
    Init_PIN_LEDRED();
    *AT91C_PIO_CODR = PIN_LEDRED;
}

__inline void Pullup_LEDRED(void)
{
    Init_PIN_LEDRED();
    *AT91C_PIO_SODR = PIN_LEDRED;
}

__inline void Pulldown_LEDGREEN(void)
{
    Init_PIN_LEDGREEN();
    *AT91C_PIO_CODR = PIN_LEDGREEN;
}

__inline void Pullup_LEDGREEN(void)
{

    Init_PIN_LEDGREEN();
    *AT91C_PIO_SODR = PIN_LEDGREEN;
}

__inline void Pulldown_AllX(void)
{
    Init_PIN_AllX();
    *AT91C_PIO_CODR = PIN_X0|PIN_X1|PIN_X2|PIN_X3;
}
__inline void Pullup_AllX(void)
{
    Init_PIN_AllX();
    *AT91C_PIO_SODR = PIN_X0|PIN_X1|PIN_X2|PIN_X3;  
}


/*
********************************************************************************
*                  define input ports
********************************************************************************
*/

#define PORT_RECCON             (AT91C_PIO_P5)
#define PORT_Y0                 (AT91C_PIO_P13)
#define PORT_Y1                 (AT91C_PIO_P16)
#define PORT_Y2                 (AT91C_PIO_P20)
#define PORT_Y3                 (AT91C_PIO_P25)

/*
********************************************************************************
*                  initialize input ports
********************************************************************************
*/


__inline void InitPort_RECCON(void)
{
    *AT91C_PIO_PER = PORT_RECCON;
 	*AT91C_PIO_ODR = PORT_RECCON;  
}

__inline void InitPort_Y0(void)
{
    *AT91C_PIO_PER = PORT_Y0;
 	*AT91C_PIO_ODR = PORT_Y0;  
}

__inline void InitPort_Y1(void)
{
    *AT91C_PIO_PER = PORT_Y1;
 	*AT91C_PIO_ODR = PORT_Y1;  
}

__inline void InitPort_Y2(void)
{
    *AT91C_PIO_PER = PORT_Y2;
 	*AT91C_PIO_ODR = PORT_Y2;  
}

__inline void InitPort_Y3(void)
{
    *AT91C_PIO_PER = PORT_Y3;
 	*AT91C_PIO_ODR = PORT_Y3;
}
__inline void InitPort_AllY(void)
{
    *AT91C_PIO_PER = PORT_Y0 | PORT_Y1 | PORT_Y2|PORT_Y3;
    *AT91C_PIO_ODR = PORT_Y0 | PORT_Y1 | PORT_Y2|PORT_Y3;
}
/*
********************************************************************************
*                  read input ports
********************************************************************************
*/

__inline BOOLEAN ReadPort_RECCON(void)
{
     if (*AT91C_PIO_PDSR & PORT_RECCON) return FALSE;
    else return TRUE;
}

__inline INT32U  ReadPort_AllY(void)
{
    return (*AT91C_PIO_PDSR & (PORT_Y0 | PORT_Y1 | PORT_Y2|PORT_Y3));
}
  
/*
********************************************************************************
*                  DEFINE SPI PIN
********************************************************************************
*/


#define PIN_SCLK                (AT91C_PIO_P19)
#define PIN_MOSI                (AT91C_PIO_P18)
#define PIN_MISO               	(AT91C_PIO_P17)
#define PIN_NSS                 (AT91C_PIO_P27)


__inline void Init_PIN_SCLK(void)
{
    *AT91C_PIO_PER = PIN_SCLK; 
    *AT91C_PIO_OER = PIN_SCLK;
}

__inline void Init_PIN_MOSI(void)
{
    *AT91C_PIO_PER = PIN_MOSI;
    *AT91C_PIO_ODR = PIN_MOSI; 
}

__inline void Init_PIN_MISO(void)
{
    *AT91C_PIO_PER = PIN_MISO;
    *AT91C_PIO_OER = PIN_MISO;
}

__inline void Init_PIN_NSS(void)
{
    *AT91C_PIO_PER = PIN_NSS;
    *AT91C_PIO_OER = PIN_NSS;
}

__inline void SET_PIN_SCLK(void)
{
    *AT91C_PIO_SODR = PIN_SCLK;
}

__inline void CLEAR_PIN_SCLK(void)
{
    *AT91C_PIO_CODR = PIN_SCLK;
}

__inline void SET_PIN_MISO(void)
{
    *AT91C_PIO_SODR = PIN_MISO;
}

__inline void CLEAR_PIN_MISO(void)
{
    *AT91C_PIO_CODR = PIN_MISO;
}

__inline void SET_PIN_NSS(void)
{
    *AT91C_PIO_SODR = PIN_NSS;
}

__inline void CLEAR_PIN_NSS(void)
{
    *AT91C_PIO_CODR = PIN_NSS;
}

__inline BOOLEAN Read_PIN_MOSI(void)
{
    if (*AT91C_PIO_PDSR & PIN_MOSI) return TRUE;
    else return FALSE;
}
/*
********************************************************************************
*                  DEFINE NK1628 CONTROL PIN
********************************************************************************
*/

#define  PIN_NK_STB    (AT91C_PIO_P23)
#define  PIN_NK_CLK    (AT91C_PIO_P12)
#define  PIN_NK_DIN    (AT91C_PIO_P7) 

__inline void Init_PIN_NK_STB(void)
{
    *AT91C_PIO_PER = PIN_NK_STB; 
    *AT91C_PIO_OER = PIN_NK_STB;
}
  
__inline void Init_PIN_NK_CLK(void)
{
    *AT91C_PIO_PER = PIN_NK_CLK; 
    *AT91C_PIO_OER = PIN_NK_CLK;
}

__inline void Init_PIN_NK_DIN(void)
{
    *AT91C_PIO_PER = PIN_NK_DIN; 
    *AT91C_PIO_OER = PIN_NK_DIN;
}

__inline void SET_PIN_NK_STB(void)
{
    *AT91C_PIO_SODR = PIN_NK_STB;
}

__inline void CLEAR_PIN_NK_STB(void)
{
    *AT91C_PIO_CODR = PIN_NK_STB;
}

__inline void SET_PIN_NK_CLK(void)
{
    *AT91C_PIO_SODR = PIN_NK_CLK;
}

__inline void CLEAR_PIN_NK_CLK(void)
{
    *AT91C_PIO_CODR = PIN_NK_CLK;
}

__inline void SET_PIN_NK_DIN(void)
{
    *AT91C_PIO_SODR = PIN_NK_DIN;
}

__inline void CLEAR_PIN_NK_DIN(void)
{
    *AT91C_PIO_CODR = PIN_NK_DIN;
}

/*
********************************************************************************
*                  DEFINE CAT5112 CONTROL PIN
********************************************************************************
*/
#define  PIN_CAT_CS    (AT91C_PIO_P29)
#define  PIN_CAT_INC   (AT91C_PIO_P30)
#define  PIN_CAT_UD    (AT91C_PIO_P31)

__inline void Init_PIN_CAT_CS(void)
{
    *AT91C_PIO_PER = PIN_CAT_CS; 
    *AT91C_PIO_OER = PIN_CAT_CS;
}

__inline void Init_PIN_CAT_INC(void)
{
    *AT91C_PIO_PER = PIN_CAT_INC; 
    *AT91C_PIO_OER = PIN_CAT_INC;
}
__inline void Init_PIN_CAT_UD(void)
{
    *AT91C_PIO_PER = PIN_CAT_UD; 
    *AT91C_PIO_OER = PIN_CAT_UD;
}

__inline void SET_PIN_CAT_CS(void)
{
    Init_PIN_CAT_CS();
    *AT91C_PIO_SODR = PIN_CAT_CS;
}

__inline void CLEAR_PIN_CAT_CS(void)
{
    Init_PIN_CAT_CS();
    *AT91C_PIO_CODR = PIN_CAT_CS;
}

__inline void SET_PIN_CAT_INC(void)
{
    Init_PIN_CAT_INC();
    *AT91C_PIO_SODR = PIN_CAT_INC;
}

__inline void CLEAR_PIN_CAT_INC(void)
{
    Init_PIN_CAT_INC();
    *AT91C_PIO_CODR = PIN_CAT_INC;
}

__inline void SET_PIN_CAT_UD(void)
{
    Init_PIN_CAT_UD();
    *AT91C_PIO_SODR = PIN_CAT_UD;
}

__inline void CLEAR_PIN_CAT_UD(void)
{
    Init_PIN_CAT_UD();
    *AT91C_PIO_CODR = PIN_CAT_UD;
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -