📄 hardware.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 + -