#ifndef _USER_CAN_H__ #define _USER_CAN_H__ #include #include #include "define.h" #ifdef __cplusplus extern "C" { #endif #define USER_CAN_INTERVAL 10 #define CAN_SDO_RX 0x600 #define CAN_SDO_TX 0x580 #define USER_CAN_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE) #define USER_CAN_RCC_ENABLE RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); #define CAN_TX_GPIO GPIOA #define CAN_TX_PIN GPIO_Pin_12 #define CAN_RX_GPIO GPIOA #define CAN_RX_PIN GPIO_Pin_11 #define CAN_TYPE CAN1 typedef enum { DIPSW_QUEUE_TIME = 0, CAN_QUEUE_SEND = 1, CAN_QUEUE_RECIEVE = 2, CAN_QUEUE_TIME = 3, }USER_CAN_QUEUE_TYPE; typedef struct{ uint8_t sendData[8]; uint8_t sendSize; CanRxMsg RxMessage; }user_can_work_s; typedef void (*vUser_can_recv_data_func)(uint8_t *data, uint8_t size); void vUser_can_init(void); void vUser_can_send_data(uint8_t *data, uint8_t size); void vUser_can_set_recv_data_func(vUser_can_recv_data_func func); void vUser_can_recv_data(CanRxMsg *RxMessage); void vUser_can_set_addr(uint8_t addr); extern tmosTaskID user_can_task_id; #ifdef __cplusplus } #endif #endif // ACTION_MOTOR_H__ /** @} */