📄 bsp.c
字号:
/*
*********************************************************************************************************
* MICIRUM BOARD SUPPORT PACKAGE
*
* (c) Copyright 2003-2006; Micrium, Inc.; Weston, FL
*
* All rights reserved. Protected by international copyright laws.
* Knowledge of the source code may not be used to write a similar
* product. This file may only be used in accordance with a license
* and should not be redistributed in any way.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*
* BOARD SUPPORT PACKAGE
*
* ARM 1173JZF-S
*
* Filename : bsp.c
* Version : V1.00
* Programmer(s) : Jean J. Labrosse
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDES
*********************************************************************************************************
*/
#include <includes.h>
/*
*********************************************************************************************************
* #DEFINE CONSTANTS
*********************************************************************************************************
*/
#define LCD_PIXELS_PER_LINE 256
#define LCD_LINES_PER_PANEL 384
#define LCD_CLOCKS_PER_LINE 256
#define LCD_BYTES_PER_PIXEL 2
#define CPU_CLK_FREQ 400000 /* The CLK frequency, in Hz */
/*
*********************************************************************************************************
* MACROS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
typedef void (*BSP_PFNCT)(void);
/*
*********************************************************************************************************
* LOCAL VARIABLES
*********************************************************************************************************
*/
static BSP_PFNCT BSP_PICVectors[32];
static CPU_INT08U LCD_Buffer[LCD_PIXELS_PER_LINE * LCD_LINES_PER_PANEL * LCD_BYTES_PER_PIXEL];
static CPU_INT16U LCD_BGColor = 0xFFFF;
const CPU_INT08U LCD_Charset[][8] = {
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x4f,0x00,0x00 },// !
{ 0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00 },// "
{ 0x00,0x00,0x00,0x14,0x7f,0x14,0x7f,0x14 },// #
{ 0x00,0x00,0x00,0x24,0x2a,0x7f,0x2a,0x12 },// $
{ 0x00,0x00,0x00,0x23,0x13,0x08,0x64,0x62 },// %
{ 0x00,0x00,0x00,0x36,0x49,0x55,0x22,0x50 },// &
{ 0x00,0x00,0x00,0x00,0x05,0x03,0x00,0x00 },// '
{ 0x00,0x00,0x00,0x00,0x1c,0x22,0x41,0x00 },// (
{ 0x00,0x00,0x00,0x00,0x41,0x22,0x1c,0x00 },// )
{ 0x00,0x00,0x00,0x14,0x08,0x3e,0x08,0x14 },// *
{ 0x00,0x00,0x00,0x08,0x08,0x3e,0x08,0x08 },// +
{ 0x00,0x00,0x00,0x00,0x50,0x30,0x00,0x00 },// ,
{ 0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08 },// -
{ 0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00 },// .
{ 0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02 },// /
{ 0x00,0x00,0x00,0x3e,0x51,0x49,0x45,0x3e },// 0
{ 0x00,0x00,0x00,0x00,0x42,0x7f,0x40,0x00 },// 1
{ 0x00,0x00,0x00,0x42,0x61,0x51,0x49,0x46 },// 2
{ 0x00,0x00,0x00,0x21,0x41,0x45,0x4b,0x31 },// 3
{ 0x00,0x00,0x00,0x18,0x14,0x12,0x7f,0x10 },// 4
{ 0x00,0x00,0x00,0x27,0x45,0x45,0x45,0x39 },// 5
{ 0x00,0x00,0x00,0x3c,0x4a,0x49,0x49,0x30 },// 6
{ 0x00,0x00,0x00,0x01,0x71,0x09,0x05,0x03 },// 7
{ 0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36 },// 8
{ 0x00,0x00,0x00,0x06,0x49,0x49,0x29,0x1e },// 9
{ 0x00,0x00,0x00,0x00,0x36,0x36,0x00,0x00 },// :
{ 0x00,0x00,0x00,0x00,0x56,0x36,0x00,0x00 },// ;
{ 0x00,0x00,0x00,0x08,0x14,0x22,0x41,0x00 },// <
{ 0x00,0x00,0x00,0x14,0x14,0x14,0x14,0x14 },// =
{ 0x00,0x00,0x00,0x00,0x41,0x22,0x14,0x08 },// >
{ 0x00,0x00,0x00,0x02,0x01,0x51,0x09,0x06 },// ?
{ 0x00,0x00,0x00,0x32,0x49,0x79,0x41,0x3e },// @
{ 0x00,0x00,0x00,0x7e,0x11,0x11,0x11,0x7e },// A
{ 0x00,0x00,0x00,0x7f,0x49,0x49,0x49,0x36 },// B
{ 0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x22 },// C
{ 0x00,0x00,0x00,0x7f,0x41,0x41,0x22,0x1c },// D
{ 0x00,0x00,0x00,0x7f,0x49,0x49,0x49,0x41 },// E
{ 0x00,0x00,0x00,0x7f,0x09,0x09,0x09,0x01 },// F
{ 0x00,0x00,0x00,0x3e,0x41,0x49,0x49,0x7a },// G
{ 0x00,0x00,0x00,0x7f,0x08,0x08,0x08,0x7f },// H
{ 0x00,0x00,0x00,0x00,0x41,0x7f,0x41,0x00 },// I
{ 0x00,0x00,0x00,0x20,0x40,0x41,0x3f,0x01 },// J
{ 0x00,0x00,0x00,0x7f,0x08,0x14,0x22,0x41 },// K
{ 0x00,0x00,0x00,0x7f,0x40,0x40,0x40,0x40 },// L
{ 0x00,0x00,0x00,0x7f,0x02,0x0c,0x02,0x7f },// M
{ 0x00,0x00,0x00,0x7f,0x04,0x08,0x10,0x7f },// N
{ 0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e },// O
{ 0x00,0x00,0x00,0x7f,0x09,0x09,0x09,0x06 },// P
{ 0x00,0x00,0x00,0x3e,0x41,0x51,0x21,0x5e },// Q
{ 0x00,0x00,0x00,0x7f,0x09,0x19,0x29,0x46 },// R
{ 0x00,0x00,0x00,0x46,0x49,0x49,0x49,0x31 },// S
{ 0x00,0x00,0x00,0x01,0x01,0x7f,0x01,0x01 },// T
{ 0x00,0x00,0x00,0x3f,0x40,0x40,0x40,0x3f },// U
{ 0x00,0x00,0x00,0x1f,0x20,0x40,0x20,0x1f },// V
{ 0x00,0x00,0x00,0x3f,0x40,0x38,0x40,0x3f },// W
{ 0x00,0x00,0x00,0x63,0x14,0x08,0x14,0x63 },// X
{ 0x00,0x00,0x00,0x07,0x08,0x70,0x08,0x07 },// Y
{ 0x00,0x00,0x00,0x61,0x51,0x49,0x45,0x43 },// Z
{ 0x00,0x00,0x00,0x00,0x7f,0x41,0x41,0x00 },// [
{ 0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20 },// Backslash
{ 0x00,0x00,0x00,0x00,0x41,0x41,0x7f,0x00 },// ]
{ 0x00,0x00,0x00,0x04,0x02,0x01,0x02,0x04 },// ^
{ 0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40 },// _
{ 0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x00 },// `
{ 0x00,0x00,0x00,0x20,0x54,0x54,0x54,0x78 },// a
{ 0x00,0x00,0x00,0x7f,0x48,0x44,0x44,0x38 },// b
{ 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x20 },// c
{ 0x00,0x00,0x00,0x38,0x44,0x44,0x48,0x7f },// d
{ 0x00,0x00,0x00,0x38,0x54,0x54,0x54,0x18 },// e
{ 0x00,0x00,0x00,0x08,0x7e,0x09,0x01,0x02 },// f
{ 0x00,0x00,0x00,0x0c,0x52,0x52,0x52,0x3e },// g
{ 0x00,0x00,0x00,0x7f,0x08,0x04,0x04,0x78 },// h
{ 0x00,0x00,0x00,0x00,0x44,0x7d,0x40,0x00 },// i
{ 0x00,0x00,0x00,0x20,0x40,0x44,0x3d,0x00 },// j
{ 0x00,0x00,0x00,0x7f,0x10,0x28,0x44,0x00 },// k
{ 0x00,0x00,0x00,0x00,0x41,0x7f,0x40,0x00 },// l
{ 0x00,0x00,0x00,0x7c,0x04,0x18,0x04,0x78 },// m
{ 0x00,0x00,0x00,0x7c,0x08,0x04,0x04,0x78 },// n
{ 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x38 },// o
{ 0x00,0x00,0x00,0x7c,0x14,0x14,0x14,0x08 },// p
{ 0x00,0x00,0x00,0x08,0x14,0x14,0x18,0x7c },// q
{ 0x00,0x00,0x00,0x7c,0x08,0x04,0x04,0x08 },// r
{ 0x00,0x00,0x00,0x48,0x54,0x54,0x54,0x20 },// s
{ 0x00,0x00,0x00,0x04,0x3f,0x44,0x40,0x20 },// t
{ 0x00,0x00,0x00,0x3c,0x40,0x40,0x20,0x7c },// u
{ 0x00,0x00,0x00,0x1c,0x20,0x40,0x20,0x1c },// v
{ 0x00,0x00,0x00,0x3c,0x40,0x30,0x40,0x3c },// w
{ 0x00,0x00,0x00,0x44,0x28,0x10,0x28,0x44 },// x
{ 0x00,0x00,0x00,0x0c,0x50,0x50,0x50,0x3c },// y
{ 0x00,0x00,0x00,0x44,0x64,0x54,0x4c,0x44 },// z
{ 0x00,0x00,0x00,0x00,0x08,0x36,0x41,0x00 },// {
{ 0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00 },// |
{ 0x00,0x00,0x00,0x10,0x08,0x08,0x10,0x08 },// }
{ 0x00,0x00,0x00,0x78,0x46,0x41,0x46,0x78 }};// ~
/*
*********************************************************************************************************
* LOCAL TABLES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL FUNCITON PROTOTYPES
*********************************************************************************************************
*/
static void LCD_Init (void);
static void Tmr_TickInit (void);
/*
******************************************************************************************************************************
******************************************************************************************************************************
* GENERAL INTERFACE FUNCTIONS
******************************************************************************************************************************
******************************************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
* functions found in this module.
*
* Arguments : none
*
* Returns : none
*********************************************************************************************************
*/
void BSP_Init (void)
{
LCD_Init();
Tmr_TickInit();
}
/*
*********************************************************************************************************
* Get the CPU Clock Frequency
*
* Description: This function reads CPU registers to determine the CPU clock frequency of the chip.
*
* Argument(s): none
*
* Returns : Clock frequency in KHz.
*********************************************************************************************************
*/
CPU_INT32U BSP_CPU_ClkFreq (void)
{
return (CPU_CLK_FREQ);
}
/*
******************************************************************************************************************************
******************************************************************************************************************************
* PB & LED FUNCTIONS
******************************************************************************************************************************
******************************************************************************************************************************
*/
/*
*********************************************************************************************************
* GET 'PUSH BUTTON' STATUS
*
* Description : This function is used to get the status of any push button on the board.
*
* Arguments : push_button is the number of the push button to probe
* 1 probe the push button B1
* 2 probe the push button B2
*********************************************************************************************************
*/
CPU_BOOLEAN PB_GetStatus (CPU_INT08U pb)
{
CPU_BOOLEAN status;
switch (pb) {
case 1:
if (LED_SWITCHES & 0x00000001) {
return (DEF_TRUE);
}
break;
case 2:
if (LED_SWITCHES & 0x00000002) {
return (DEF_TRUE);
}
break;
case 3:
if (LED_SWITCHES & 0x00000004) {
return (DEF_TRUE);
}
break;
case 4:
if (LED_SWITCHES & 0x00000008) {
return (DEF_TRUE);
}
break;
default:
break;
}
return (DEF_FALSE);
}
/*
*********************************************************************************************************
* LED ON
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments : led is the number of the LED to control
* 0 indicates that you want ALL the LEDs to be ON
* 1 turns ON LED1 on the board
* .
* .
* 4 turns ON LED16 on the board
*********************************************************************************************************
*/
void LED_On (CPU_INT08U led)
{
switch (led) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -