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

📄 system.~h

📁 An complete pmp solution for mattel juicebox player. Using crossworks for arm.
💻 ~H
字号:
// 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"

extern void *HandlerUndef; //; 0x04
extern void *HandlerSWI; //; 0x08
extern void *HandlerPabort; //; 0x0c
extern void *HandlerDabort; //; 0x10
extern void *HandlerIRQ; //; 0x18
extern void *HandlerFIQ; //; 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
//--------------------
/* 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);                           \
}

/*===========================================================*/
/*-----             Inter-IC Sound (IIS)                -----*/
void wIISInit();


/*===========================================================*/
/*-----                 LCD Controller                  -----*/

/* Returns pointer to framebuffer start */
void *wFramebufferStart();
/* Initializes LCD controller */
void wLCDInit();
/* Sets pixel (x;y) in framebuffer to color */
void wSetPixel(u32 x, u32 y, u08 color);
/* Clears LCD to black */
void wClearLCD();
/* Draws char c at (x;y) using fonts in font.h */
void wDrawChar(u08 c, u32 x, u32 y, u08 color);
/* Draws string */
void wDrawString(u08* s, u32 x, u32 y, u08 color);
/* Draws string of length */
void wDrawStringL(u08* s, u32 x, u32 y, u32 length, u08 color);
/* Fills a rextangle with color */
void wFloodFill(u32 x1, u32 y1, u32 x2, u32 y2,  u08 color);
/* Sets framebuffer start */
void wSetFramebufferStart(u32 *addr);
//----------
/* Draws 32 bit integer s in hex format*/
void wDrawHex32 (u32 s, u32 x, u32 y, u08 color);
/* Draws 8 bit integer s in hex format*/
void wDrawHex8 (u08 s, u32 x, u32 y, u08 color);
/* Draws integer s using format c*/
void draw_number (u32 s, u32 c, u32 x, u32 y, u08 color);

/*===========================================================*/
/*-----                    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 VICVectAddr    VICAddress
#define VICVectCntl4 VICVectPriority4

#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 + -