📄 system.h.bak
字号:
// Function prototypes for core system functions in system.c
#ifndef __SYSTEM_H
#define __SYSTEM_H
#include "stdint.h"
#include "malloc.h"
#include "s3c44b0x.h"
#include "font.h"
#include "ff.h"
#include "bitmap.h"
#define aHandlerSWI swi_handler_address
#define aHandlerIRQ irq_handler_address
#define aHandlerFIQ fiq_handler_address
extern void *HandlerUndef; //; 0x04
extern void *aHandlerSWI; //; 0x08
extern void *HandlerPabort; //; 0x0c
extern void *HandlerDabort; //; 0x10
extern void *aHandlerIRQ; //; 0x18
extern void *aHandlerFIQ; //; 0x1c
extern void *HandlerEINT0; //; 0x20
extern void *HandlerEINT1;
extern void *HandlerEINT2;
extern void *HandlerEINT3;
extern void *HandlerEINT4567;
extern void *HandlerTICK; //; 0x34
extern void *HandlerZDMA0; //; 0x40
extern void *HandlerZDMA1;
extern void *HandlerBDMA0;
extern void *HandlerBDMA1;
extern void *HandlerWDT;
extern void *HandlerUERR01; //; 0x54
extern void *HandlerTIMER0; //; 0x60
extern void *HandlerTIMER1;
extern void *HandlerTIMER2;
extern void *HandlerTIMER3;
extern void *HandlerTIMER4;
extern void *HandlerTIMER5; //; 0x74
extern void *HandlerURXD0; //; 0x80
extern void *HandlerURXD1;
extern void *HandlerIIC;
extern void *HandlerSIO;
extern void *HandlerUTXD0;
extern void *HandlerUTXD1; //; 0x94
extern void *HandlerRTC; //; 0xa0
extern void *HandlerADC; //; 0xb4
/*===========================================================*/
/*----- System -----*/
void wCPUInit();
void wDelayMs(u32 delay);
void wDelayCycles(u32 delay);
/*===========================================================*/
/*----- Interrupts -----*/
//Interrupts
#define portIntADC 0
#define portIntRTC 1
#define portIntUTXD1 2
#define portIntUTXD0 3
#define portIntSIO 4
#define portIntIIC 5
#define portIntURXD1 6
#define portIntURXD0 7
#define portIntTIMER5 8
#define portIntTIMER4 9
#define portIntTIMER3 10
#define portIntTIMER2 11
#define portIntTIMER1 12
#define portIntTIMER0 13
#define portIntUERR01 14
#define portIntWDT 15
#define portIntBDMA1 16
#define portIntBDMA0 17
#define portIntZDMA1 18
#define portIntZDMA0 19
#define portIntTICK 20
#define portIntEINT4567 21
#define portIntEINT3 22
#define portIntEINT2 23
#define portIntEINT1 24
#define portIntEINT0 25
#define portIntSWI 26
#define portIntIRQ 27
#define portIntFIQ 28
//--------------------
/* Initializes interrupt controller*/
void wInterruptInit();
/* Initializes interrupt handler */
void wInterruptHandlerInit (u32 uxInterrupt, void *vFunction);
/* Enables specified interrupt*/
#define dwInterruptEnable(uxInterrupt) \
{ \
*intmsk &= ~(1<<uxInterrupt); \
}
/* Disables specified interrupt*/
#define dwInterruptDisable (uxInterrupt) \
{ \
*intmsk &= (1<<uxInterrupt); \
}
/* Clears interrupt flag */
#define dwInterruptClear(uxInterrupt) \
{ \
*i_ispc &= ~(1<<uxInterrupt); \
}
/*===========================================================*/
/*----- Timers -----*/
typedef i32 xTPortHardware;
#define portNoHW (-1)
#define portTimer0 0
#define portTimer1 1
#define portTimer2 2
#define portTimer3 3
#define portTimer4 4
#define portTimer5 5
void wTimersInit (u32 ulPrescaler01, u32 ulPrescaler23, u32 ulPrescaler45, u32 ulDeadzone);
void wTimerConf (xTPortHardware xTimer, u32 ulSource, u32 ulCount, u32 ulCompare);
void wTimerRun (xTPortHardware xTimer, u32 uxSettings);
void wTimerStop (xTPortHardware xTimer);
/*===========================================================*/
/*----- DMA -----*/
#define portZDMA0 0
#define portZDMA1 1
#define portBDMA0 2
#define portBDMA1 3
typedef i32 xTDMAStatus;
#define portDMAStatusUnknown (-1)
#define portDMAStatusReady 0
#define portDMAStatusTransfer 1
#define portDMAStatusEnded 2
xTPortHardware wZDMARun (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
xTDMAStatus wDMAInspect (xTPortHardware xDMA, u32 *uCurrSrc, u32 *uCurrDest, u32 *uCurrCnt);
xTPortHardware wBDMA0Run (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
xTPortHardware wBDMA1Run (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
void wDMAStop (xTPortHardware xDMA);
/*===========================================================*/
/*----- Inter-IC Sound (IIS) -----*/
void wIISInit();
i32 wIISDMATransferInit (u32 *pvBufferAddress, u32 ulBufferSize, u32 uxSettings);
u32 wIISBufferStatusInspect();
void wIISDMATransferStop ();
/*===========================================================*/
/*----- Inter-IC Connect (IIC) -----*/
void wIICInit(u32 uxSettings, void *pvInterrupt);
void wIICWrite (u08 usAddress, u08 usData);
void wIICRead (u08 usAddress, u08 *usData);
/*===========================================================*/
/*----- LCD Controller -----*/
/* Returns pointer to framebuffer start */
void *wFramebufferStart();
/* Initializes LCD controller */
void wLCDInit();
/* Sets framebuffer start */
void wSetFramebufferStart(u32 *addr);
void wLCDBitmapInit(xTBitmap *pxBitmap);
void wFontInit(xTFont *pxFont);
/*===========================================================*/
/*----- MACROS -----*/
#ifndef sbi
#define sbi(x,y) x|=(1 << (y))
#endif
#ifndef cbi
#define cbi(x,y) x&=~(1 << (y))
#endif
#ifndef tstb
#define tstb(x,y) (x & (1 << (y)) ? 1 : 0)
#endif
#ifndef toggle
#define toggle(x,y) x^=(1 << (y))
#endif
#ifndef BIT
#define BIT(x) (1 << (x))
#endif
#define dwConfigReg(vReg, ulValue, ulPos, ulLength) \
{ \
*(vReg) &= ~( (0xFFFFFFFF >> (32-ulLength)) << ulPos); \
*(vReg) |= (ulValue << ulPos)&( (0xFFFFFFFF >> (32-ulLength)) << ulPos); \
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -