电路图如图4-6所示:
图4-6 显示电路原理图
5). 输出控制及报警指示电路
输出控制电路采用12V直流继电器对外电路进行控制,通过控制继电器的吸合时间来实现对温度的控制,继电器是与强电控制电路(大电流、高电压)联系在一起,会对应用系统产生严重干扰,使系统不能正常工作。为了消除干扰,在微机接口与继电器之间分别加了光耦,使系统主机部分的地与强电控制电路的地隔开。
当温度超限或者系统出现致命错误时,系统会发出报警指示且实现在LCD上显示。(原理图略)
4.2 系统的移植
移植是指使一个实时操作系统能够在某个微处理器平台上运行。每个实时嵌入式操作系统都支持很多种处理器,为了使其在具体的硬件平台上工作,必须根据具体的硬件平台完成移植工作。为了便于用户的使用,嵌入式操作系统生产商一般提供一些通用的板级支持包(Board Support Package,BSP)(有的称为硬件抽象层(Hardware Abstract Layer, HAL)),用户只需选择与自己相近的BSP进行修改,可以很容易完成移植工作。
μC/OS-II没有提供BSP,需要用户独立完成此工作。由于在设计时已经充分考虑了可移植性,移植工作并不太复杂,要根据具体硬件平台,对文件OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM进行合理的修改。
要使其正常运行, 处理器首先需满足以下要求:
处理器的C编译器能产生可重入代码;
用C语言就可以打开和关闭中断;
处理器支持中断,并且能够产生定时中断(通常在10Hz至100Hz之间);
处理器支持能够容纳一定数量数据(可能是几千字节)的硬件堆栈;
处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈或内存中的指令。
针对本文档文档中选用的SM5964微处理器和开发工具Keil C51 7.0,进行移植时,重点考虑函数的重入和任务栈的结构及大小的确定。对三个文件进行的修改如下。
1). 设置OS_CPU.H 中与处理器和编译器相关的代码
/* 与编译器相关数据类型 */
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; //无符号8位数
typedef signed char INT8S; //有符号8位数
typedef unsigned int INT16U; //无符号16位数
typedef signed int INT16S; //有符号16位数
typedef unsigned long INT32U; //无符号32位数
typedef signed long INT32S; //有符号32位数
typedef float FP32; //单精度浮点数
typedef double FP64; //双精度浮点数
typedef unsigned char OS_STK; //栈单元宽度为8比特
/ * 处理器相关代码 (大模式) */
#define OS_ENTER_CRITICAL() EA=0 //关中断
#define OS_EXIT_CRITICAL() EA=1 //开中断
#define OS_STK_GROWTH 0 //堆栈从下往上增长 1=向下,
//0=向上
#define OS_TASK_SW() OSCtxSw() /*因为微处理器没有软中断指令,所以用程序调用代替*/
2).在OS_CPU_C.C中用C语言编写6个与操作系统相关的函数
在此文件中主要是完成任务初始化函数OSTaskStkInit ( )的编写,每个任务在创建时,要初始化自己的任务堆栈,任务堆栈的结构类似系统发生一次中断后的堆栈结构,在进行任务切换时,它要用来存储与本任务相关的所有信息。其它5个函数需要声明,因在此用不到, 没有实际内容。如果需要使用可以进行编程。
void&nbs
首页 上一页 8 9 10 11 12 13 14 下一页 尾页 11/20/20
嵌入式系统在多点温度控制中的应用(十一)由毕业论文网(www.huoyuandh.com)会员上传。