#ifndef __COMMON_H #define __COMMON_H #include #include #include "stdint.h" #include #include "stdbool.h" #include "usart.h" #include "stm32f10x.h" #include "Common_Type.h" #include "kernel.h" #include "time.h" #include "misc.h" #pragma anon_unions #define GPIO_Type GPIO_TypeDef #undef NULL #define NULL ((void *)0) //#define TRUE 1 //#define FALSE 0 //CAN #define IOCTL_CMD_CAN_FILTER_ADD 1 //添加过滤器 #define IOCTL_CMD_CAN_FILTER_MASK_ADD 2 //添加过滤器掩码 #define IOCTL_CMD_CAN_FILTER_INIT 3 //初始化过滤器 #define IOCTL_CAN_SET_FILTER_ALL 4 //全接收模式 #define IOCTL_CAN_CLEAR_RXBUFF 5 //清除缓冲区 #define IOCTL_CAN_GET_NEXTMAILID 6 //获取下一封邮箱的CAN ID #define TASK_LOCK \ { \ __disable_irq(); #define TASK_UNLOCK \ __enable_irq(); \ } #define DISABLE_IRQ(IRQChannel) NVIC->ICER[IRQChannel >> 0x05] = (uint32_t)0x01 << (IRQChannel & (uint8_t)0x1F) #define ENABLE_IRQ(IRQChannel) NVIC->ISER[IRQChannel >> 0x05] = (uint32_t)0x01 << (IRQChannel & (uint8_t)0x1F) extern unsigned short int Get1MsTickVal(void); #define clock() Get1MsTickVal() extern void Delay_ms(uint16_t ms); #define sleep(ms) Delay_ms(ms) typedef enum { INSTANCE_CAN1 = 0, INSTANCE_CAN2 } can_instance; typedef struct { INT16U SlowRecoverCounter; /* 慢恢复时间, 单位1ms */ INT16U FastRecoverCounter; /* 快恢复时间, 单位1ms */ INT16U Threshold; /* 快恢复转到慢恢复阈值 */ INT16U DtcOccurCnt; /* 连续多少次产生Busoff DTC */ INT16U BusOffRecoverTime; /* Message received AND message sent on CAN successfully 连续时间 */ } tCanBusOffConfigTyp; typedef enum { st_BusNormal, st_BusOff } eBusOffStateType; typedef struct { INT8U Can1_BusOff_Flag; INT8U Can2_BusOff_Flag; } BusOff_t; extern BusOff_t x_BusOff; extern int h_can1; #endif