// ============================================================================= // 函数功能:看门狗模块的初始化 // 输入参数: // 输出参数: // 返回值 :1成功 0失败 // 说明 :创建看门狗硬件对应的软看门狗。注册看门狗异常信息解析器 // ============================================================================= ptu32_t ModuleInstall_Wdt(ptu32_t para) { bool_t result_bool; u16 evttid; g_ptWdtPool = M_Malloc(gc_u32CfgWdtLimit * sizeof(tagWdt),0); if(g_ptWdtPool == NULL) return 0; ptWdtPool = Mb_CreatePool(g_ptWdtPool,gc_u32CfgWdtLimit,sizeof(tagWdt),0,0,"wdt pool"); //init the queue ptWdtHead = NULL; ptWdtTail = NULL; ptWdtHard = NULL; //create the msg box for the api to snd msg to the wdt service task ptWdtMsgBox = MsgQ_Create(CN_WDTMSG_LIMIT,sizeof(tagWdtMsg),CN_MSGQ_TYPE_FIFO); //create the main service evttid = Djy_EvttRegist(EN_CORRELATIVE,CN_PRIO_WDT,0,0,Wdt_Service, NULL,0x1000,"wdt service"); if(evttid == CN_EVTT_ID_INVALID) return 0; if( Djy_EventPop(evttid,NULL,0,0,0,0) == CN_EVENT_ID_INVALID) { printk("WDT MODULE:POP SERVICE FAILED!\n\r"); Djy_EvttUnregist(evttid); return 0; } //create the soft wdt match the hard wdt struct tagWdtHalChipInfo hardpara; result_bool = WdtHal_GetChipPara(&hardpara); if(true == result_bool)//存在硬件看门狗,则创建硬件看门狗 { fnWdtHardFeed = hardpara.wdtchip_feed; ptWdtHard = Wdt_Create(hardpara.wdtchip_name,\ hardpara.wdtchip_cycle,\ __Wdt_HardWdtYipHook,\ EN_EXP_DEAL_IGNORE, NULL); } //todo:此处有警告 extern bool_t Exp_RegisterThrowinfoDecoder(fnExp_ThrowinfoDecoderModule decoder,const char *name); if(false ==Exp_RegisterThrowinfoDecoder(__Wdt_WdtExpInfoDecoder,\ CN_WDT_EXPDECODERNAME)) { printk("WDT MODULE: Register Wdt Exp Decoder Failed!\n\r"); } printk("WDT MODULE:Init end ...\n\r"); return 1; }
//----初始化CAN配置参数--------------------------------------------------------- //功能: 初始化CAN配置参数 //参数: pCanPara,CAN控制器配置参数结构体指针 //返回: 成功初始化则返回true,否则则返回false. //----------------------------------------------------------------------------- bool_t CAN_Main(void) { uint16_t evtt; uint8_t i; bool_t ret; CanFilterConfPara *pFilterConfPara; pFilterConfPara=malloc(sizeof(CanFilterConfPara)); if(pFilterConfPara==NULL) { printf("Can Init failed.\r\n"); return false; } pFilterConfPara->FilterNumber=0; pFilterConfPara->FilterMode=CAN_FILTERMODE_IDMASK; pFilterConfPara->FilterScale=CAN_FILTERSCALE_32BIT; pFilterConfPara->FilterIdHigh=0x0000; pFilterConfPara->FilterIdLow=0x0000; pFilterConfPara->FilterMaskIdHigh=0x0000; pFilterConfPara->FilterMaskIdLow=0x0000; pFilterConfPara->FilterFIFOAssignment=0; pFilterConfPara->FilterActivation=1; pFilterConfPara->BankNumber=14; for(i=0;i<CN_CAN_NUM;i++) { ret=CAN_Hard_Init(i,125,pFilterConfPara); if(!ret) { printf("Can Init failed.\r\n"); return false; } } CAN_Shell_Module_Install(); evtt = Djy_EvttRegist(EN_CORRELATIVE,CN_PRIO_RRS,0,0,__Can_Monitor, CAN_MonitorStack,sizeof(CAN_MonitorStack),"CAN Monitor function"); if(evtt!=CN_EVTT_ID_INVALID) { Djy_EventPop(evtt,NULL,0,NULL,0,0); } else { Djy_EvttUnregist(evtt); } printf("CAN install OK.\r\n"); return true; }