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

📄 initsystem.c

📁 整个电路可分为两大部份
💻 C
字号:
//=============================================================
//  文件名称: InitSystem.c
//  实现功能: 对系统的初始化
//  完成日期:  2004,7,14
//==============================================================


#include <SPCE061A.h>

#define M_TIMERA_EN       0x0001//0x0031	//使能TimerA的配置,计数频率为96KHz
#define M_TIMERA_STOP	  0x0006//0x0036	//停止TimerA的配置,计数器停止工作

#define Data_Addr0  	(struct Robot_xx *)0xf600	//
#define Data_Addr1  	(struct Robot_xx *)0xf700	//

extern unsigned int uiIOB_20Hz_flag;
extern unsigned int uiEXT_EN_flag;		//外部中断使能标识位

extern unsigned int uiRS_ReciveFlag;
extern unsigned int uiMeasure_Index;	//当前测量的次数
extern unsigned int uiError_Counter;	//出错累加器

unsigned int uiMeasure_Num;				//况的测量次数
unsigned int uiMeasure_Data[50];		//测量的数据个数
unsigned int uiMeasure_Read_Index;		//测量结果查询索引号
//============================================================= 
// 函数名称:    InitSystem()
// 功能描述:	系统IO口、中断等进行初始化
// 语法格式:    void InitSystem(void)
// 入口参数:    无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================
extern unsigned int Flash_read(unsigned int adr);

void InitSystem(void)
{
	unsigned int iTest;		//设置的中间量
	//设置IOB口   IOB01口为20Hz(也许用16Hz)的输出    
	//IOB2 口为外部中断的输入,设置为带上拉的输入口。
	//在IOB口中IOB7为RX   IOB10为TX
	*P_IOB_Dir = 0x0401;
	*P_IOB_Attrib = 0x0481;
	iTest = 0x0005;
	*P_IOB_Data = iTest;
	
//	*P_SystemClock=0x0088;				//系统时钟设置为49.152MHz,并使晶振处于强振状态之下

	//设置串行口    9600   SystemClock:24.576MHz
	*P_UART_BaudScalarLow = 0x00;
	*P_UART_BaudScalarHigh = 0x05;
	*P_UART_Command1 = 0x80;			//使能接收中断
	*P_UART_Command2 = 0xc0;			//使能接收发送管脚
	
	//开时间基准中断,TMB1  16Hz
	iTest=0x0001;
	*P_TimeBase_Setup=iTest;
	//设置TimerB   选使其处于停止工作状态
	*P_TimerB_Data = 0x0000;
	*P_TimerB_Ctrl = M_TIMERA_STOP;
	
	iTest = 0x0008;						//先还使能所有的中断(除串行口中断外)0x2002
	*P_INT_Ctrl = iTest;				//开IRQ5的2Hz中断,用来清狗
	__asm("FIQ OFF");
	__asm("IRQ ON");
}

//============================================================= 
// 函数名称:    InitData()
// 功能描述:	部分全局数据的初始化
// 语法格式:    void InitData(void)
// 入口参数:    无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================
void InitData(void)
{
	unsigned int uiData_Pointer;
	unsigned int i;
	uiIOB_20Hz_flag = 0;				//初始化为零
	uiEXT_EN_flag = 0;
	uiRS_ReciveFlag = 0;
	uiError_Counter = 0;
	uiMeasure_Index = 0;
	
	//以下是系统数据的初始化,即存在Flash中的数据。
	uiData_Pointer = (unsigned int)Data_Addr1;
	if((Flash_read(uiData_Pointer)==0xaaaa)&&(Flash_read(uiData_Pointer+1)==0xbbbb))
	{//flash 中已存有数据 读取
		uiMeasure_Num = Flash_read(uiData_Pointer+2);			//读取以前存储的数据
		uiMeasure_Read_Index = uiMeasure_Num;
		uiData_Pointer = (unsigned int)Data_Addr0;				//指到数据存储区
		for(i=0;i<uiMeasure_Num;i++)
		{
			uiMeasure_Data[i] = Flash_read(uiData_Pointer+i);
		}
	}
	else
	{//若以前没有存有数据,则初始化为0
		uiMeasure_Num = 0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -