int32_t main( void ) { int16_t Temp16S; uint16_t i; // 板上器件初始化 BIOS_Init( ); DS18B20_1_Read( &Temp16S ); // 读18B20, 跳过 0x0550 DS18B20_2_Read( &Temp16S ); DS18B20_3_Read( &Temp16S ); Initialize7705( ); // 初始化通信缓冲区 for ( i = 0; i < 40u; ++i ) { usRegHoldingBuf[i] = 0u; usRegInputBuf[i] = 0u; } for ( i = 0; i < (( 40u + 7 ) / 8 ); ++i ) { ucRegCoilsBuf[i] = 0u; ucRegDiscBuf[i] = 0u; } // Set_BitN( ucRegDiscBuf, 1 ); // 大气压力 存在 Set_BitN( ucRegDiscBuf, 2 ); // 环境温度 存在 Set_BitN( ucRegDiscBuf, 3 ); // 电机温度 存在 // Set_BitN( ucRegDiscBuf, 5 ); // 恒温箱 存在 Set_BitN( ucRegDiscBuf, 8 ); // 加热器 存在 Set_BitN( ucRegDiscBuf, 10 ); // 大气泵 存在 Set_BitN( ucRegDiscBuf, 15 ); // 粉尘泵 本组信号 存在 Set_BitN( ucRegDiscBuf, 16 ); // 计前压力 有效 Set_BitN( ucRegDiscBuf, 17 ); // 计前温度 有效 Set_BitN( ucRegDiscBuf, 20 ); // 日均A 本组信号 存在 Set_BitN( ucRegDiscBuf, 21 ); // 计前压力 有效 Set_BitN( ucRegDiscBuf, 22 ); // 计前温度 有效 Set_BitN( ucRegDiscBuf, 25 ); // 日均B 本组信号 存在 Set_BitN( ucRegDiscBuf, 26 ); // 计前压力 有效 Set_BitN( ucRegDiscBuf, 27 ); // 计前温度 有效 // 初始化MODBUS协议栈 MODBUS_Init( 1 ); // 看门狗配置 // InitWDT(); for(;;) { // 活动计数器,表示系统工作正常。 ++usRegInputBuf[0]; Update_CH0( ); Update_CH1( ); // 看门狗控制 // ClearWDT(); } }
/* 配置系统的顺序 CPU 内部、底层硬件 外部接口 外部硬件(按键、显示) 读取外部配置数据 传感器系统(RTC 时钟) 操作系统 任务 驻留任务(如:传感器读取、恒温箱温控、掉电时间记录) 采样任务 监控任务 */ __task int32_t main( void ) { BIOS_Init(); beep(); RTOS_Init(); // 尽早执行 ConfigureLoad(); // 先确定仪器型号 CalibrateLoad(); // 读传感器前执行, 远程存储器中的参数,应等通讯初始化后再读。 SampleSetLoad(); // 恢复采样前执行 Display_Init(); DisplaySetGrayVolt( Configure.DisplayGray * 0.022f ); DisplaySetLight( Configure.DisplayLight ); DisplaySetTimeout( Configure.TimeoutLight ); Keyboard_Init(); // 配置完背光超时时间后再初始化 RTC_Init(); // 为避免启动过程中时钟失败造成的假死现象,放在显示初始化之后 SD_Init(); // SD卡读写初始化,放在开关机存取之前 PowerLog_Init(); // 开关机存取,时间初始化之后 SENSOR_Local_Init(); delay( 1000u ); //配合下位机初始化 <注意!要进行下位机测试来确定参数!>300 Animation(); // 开机动画 delay( 1600u ); ShowEdition(); // 确定型号之后,显示初始化之后 delay( 1400u ); SENSOR_Remote_Init(); // modbus通信初始化 delay( 100u ); HCBox_Init(); delay( 100u ); Sampler_BootResume(); // 时间配置完成之后,设置参数读入之后。 delay( 100u ); SamplerTypeSelect(); delay( 100u ); for(;;) { menu_Main(); // 转主菜单 } }
/* 配置系统的顺序 CPU 内部、底层硬件 外部接口 外部硬件(按键、显示) 读取外部配置数据 传感器系统(RTC 时钟) 操作系统 任务 驻留任务(如:传感器读取、恒温箱温控、掉电时间记录) 采样任务 监控任务 */ __task int32_t main( void ) { BIOS_Init(); beep(); RTOS_Init(); // 尽早执行 EditionSelsct(); ConfigureLoad(); // 先确定仪器型号 CalibrateLoad(); // 读传感器前执行, 远程存储器中的参数,应等通讯初始化后再读。 SampleSetLoad(); // 恢复采样前执行 Display_Init(); DisplaySetGrayVolt( Configure.DisplayGray * 0.01f ); DisplaySetLight( Configure.DisplayLight ); DisplaySetTimeout( Configure.TimeoutLight ); Keyboard_Init(); // 配置完背光超时时间后再初始化。 ShowEdition(); // 版本显示 确定型号之后,显示初始化之后 SENSOR_Local_Init(); // 本地传感器读取以及液晶灰度调节 RTC_Init(); // 为避免启动过程中时钟失败造成的假死现象,放在显示初始化之后 SD_Init(); // SD卡读写初始化,放在开关机存取之前 delay( 500u ); PowerLog_Init(); // 开关机存取,时间和SD卡初始化之后 delay( 2000u ); // 配合下位机初始化 SENSOR_Remote_Init(); // modbus通信初始化 HCBox_Init(); delay( 500u ); Sampler_BootResume(); // 时间配置完成之后,设置参数读入之后。 delay( 1500u ); SamplerSelect = Q_ALL; // 初始化当前采样器为不合理的值,进行一次切换,切换到第一个合理的值。 SamplerTypeSwitch(); for(;;) { menu_Main(); // 转主菜单 } }
void vDos_Init(void) { hideWinTill = GetTickCount()+2500; // Auto hidden till first keyboard check, parachute at 2.5 secs LOG_MSG("vDos version: %s", vDosVersion); #ifndef WITHIRQ1 // Wil have been called earlier in starup if WITHIRQ1 is defined vDos_LoadConfig(); #endif GUI_StartUp(); IO_Init(); PAGING_Init(); MEM_Init(); CALLBACK_Init(); PIC_Init(); PROGRAMS_Init(); TIMER_Init(); // CMOS_Init(); VGA_Init(); CPU_Init(); KEYBOARD_Init(); BIOS_Init(); INT10_Init(); MOUSE_Init(); SERIAL_Init(); PARALLEL_Init(); printTimeout = ConfGetBool("timeout"); DOS_Init(); XMS_Init(); EMS_Init(); if (errorMess[0]) MessageBox(NULL, errorMess+1, "vDos: CONFIG.TXT has unresolved items", MB_OK|MB_ICONWARNING); SHELL_Init(); // Start up main machine }