?? os_cpu.h
字號:
/* os_cpu.h
*
* Motorola Coldfire MCF5307 port to MicroC/OS-II
*
* Ross Berteig
* Cheshire Engineering Corp
* 650 Sierra Madre Villa, Suite 201
* Pasadena CA 91107
* +1-626-351-5493 +1-626-351-8645 FAX
* Ross@CheshireEng.com, www.CheshireEng.com
*
* Copyright (C) 1998 Cheshire Engineering Corporation.
* Based on a port to uCOS version 1.x by David Fiddes.
* Portions Copyright (C) 1997 David Fiddes, D.J.Fiddes@hw.ac.uk
* Anything that no longer works is probably not his fault.
*/
#ifndef __OS_CPU_H__
#define __OS_CPU_H__
/*
* Declare data types and structures generic to the
* ColdFire from a source file distributed by Motorola.
*/
#include "mcf5307.h"
/*
* Constants
*/
#ifndef FALSE
#define FALSE 0
#define TRUE 1
#endif
#ifdef OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT extern
#endif
/*
* Data Types
*/
typedef unsigned char BOOLEAN; /* True or False */
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
typedef signed char INT8S; /* Signed 8 bit quantity */
typedef unsigned short INT16U; /* Unsigned 16 bit quantity */
typedef signed short INT16S; /* Signed 16 bit quantity */
typedef unsigned long INT32U; /* Unsigned 32 bit quantity */
typedef signed long INT32S; /* Signed 32 bit quantity */
typedef float FP32; /* Single precision floating point */
typedef double FP64; /* Double precision floating point */
typedef unsigned long OS_STK; /* Each stack entry is 32-bit wide */
#define OS_STK_GROWTH 1 /* The stack grows from high to low memory */
/*
* Backward compatibility types for uCOS 1.x
*/
#define far /**/
#define near /**/
#define OS_FAR /**/
#define OS_NEAR /**/
#define BYTE INT8S
#define UBYTE INT8U
#define WORD INT16S
#define UWORD INT16U
#define LONG INT32S
#define ULONG INT32U
#define OS_STK_TYPE OS_STK
/*
* Macros
*/
#ifdef USING_GNU_TOOLS
/* GNU */
# ifndef BADMOVESR
# define OS_ENTER_CRITICAL() asm volatile (" move.w #0x2700,%sr ");
# define OS_EXIT_CRITICAL() asm volatile (" move.w #0x2000,%sr ");
# else
# define OS_ENTER_CRITICAL() asm volatile (" .long 0x46fc2700 ");
# define OS_EXIT_CRITICAL() asm volatile (" .long 0x46fc2000 ");
# endif
# define OS_TASK_SW() asm volatile (" trap #14 ");
# define OS_IDLE_LOOP() asm volatile (" stop #0x2000 ");
#endif
#ifdef __DCC__
/* Diab */
# define OS_TASK_SW() asm (" trap #14 ");
# define OS_IDLE_LOOP() asm (" stop #0x2000 ");
asm INT16U CPUSetSR(INT16U value)
{
% con value;
move.w sr,d0 ; get the current SR
move.w value,d1 ; value is constant
move.w d1,sr ; put in SR
% reg value;
move.w sr,d0 ; get the current SR
move.w value,d1 ; value in register
move.w d1,sr ; put in SR
% mem value;
move.w sr,d0 ; get the current SR
move.w value,d1 ; value in memory
move.w d1,sr ; put in SR
}
#if !defined(OS_CPU_FAST_CRITICAL) && !defined(OS_CPU_CAREFUL_CRITICAL)
#info "Defaulting to OS_CPU_FAST_CRITICAL."
#define OS_CPU_FAST_CRITICAL
#endif
#ifdef OS_CPU_FAST_CRITICAL
#define OS_ENTER_CRITICAL() asm (" move.w #0x2700,sr ");
#define OS_EXIT_CRITICAL() asm (" move.w #0x2000,sr ");
#endif
#ifdef OS_CPU_CAREFUL_CRITICAL
OS_CPU_EXT int CPURecentSR;
#define OS_ENTER_CRITICAL() do { CPURecentSR = CPUSetSR(0x2700); } while(0)
#define OS_EXIT_CRITICAL() do { CPUSetSR(CPURecentSR); } while(0)
#endif
#endif
extern void CPUFormatError(void);
#endif /*__OS_CPU_H__*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -