#include "main.h" #include "task_hal.h" #include "SWM341.h" // Device header #include "CH392CMD.H" #include "udpGroup_proc.h" #include "can.h" #define GPIO_LED GPIOD #define PORT_LED PIN9 void InitSysTick(uint32_t tick_per_s) { SysTick_Config(SystemCoreClock/tick_per_s); } void TaskBlinLed(struct pt *pt1 ) { static int i = 0; i++; i=i%10; if(i==0) { GPIO_ClrBit(GPIO_LED,PORT_LED); //printf("%d \r\n",i); } else { GPIO_SetBit(GPIO_LED,PORT_LED); //printf("%d \r\n",i); } } //typedef struct //{ // uint32_t id; //消息ID // uint8_t format; //帧格式:CAN_FRAME_STD、CAN_FRAME_EXT // uint8_t remote; //消息是否为远程帧 // uint8_t size; //接收到的数据个数 // uint8_t data[8]; //接收到的数据 //} CAN_RXMessage; void sendHeartbeatCANMsg() { #ifdef CAN2NET_ZK // 发送zk心跳CAN消息 CAN_RXMessage heartbeatMsg; heartbeatMsg.id = 0x0B010040; heartbeatMsg.format = CAN_FRAME_EXT; heartbeatMsg.size = 1; heartbeatMsg.data[0] = 0x06; CAN_GenericSendMsg(CAN0, heartbeatMsg); #else // 发送上位机心跳CAN消息 CAN_RXMessage heartbeatMsg; heartbeatMsg.id = 0x0B010030; heartbeatMsg.format = CAN_FRAME_EXT; heartbeatMsg.size = 1; heartbeatMsg.data[0] = 0x06; CAN_GenericSendMsg(CAN0, heartbeatMsg); #endif //CAN2NET_ZK } uint32_t tick = 0; void TaskSendData(struct pt *pt1 ) { if(tick++%10==0) { #ifdef CAN2NET_ZK CheckCANReceivedMsgsSendUDP(); //CAN接口收到数据,则触发UDP发送功能,使用状态机模型,处理各类数据发送状态 #else checkHeartbeatTimeout(); CheckCANReceivedMsgsSendUDP(); //CAN接口收到数据,则触发UDP发送功能,使用状态机模型,处理各类数据发送状态 #endif //CAN2NET_ZK } if(tick%50 == 0){ sendHeartbeatCANMsg(); } } void InitLEDPort(void) { GPIO_Init(GPIO_LED,PORT_LED,1,0,0,0); } //回调接口 func SYSTICK_CALLBACK; void SysTick_Handler(void) { if(SYSTICK_CALLBACK!=NULL) SYSTICK_CALLBACK(); } void SetSYSTickCallBack(func pFunc) { SYSTICK_CALLBACK = pFunc; } void TaskWDT(struct pt *pt1 ) { WDT_Feed(WDT); } enum eResetReason checkRstReason(void) { enum eResetReason reason = eRST_POR; int32_t RSTSR = SYS->RSTSR ; if(RSTSR&0x01) { reason = eRST_POR; } else if(RSTSR&0x02) { reason = eRST_WDG; } return reason; }