#include "main.h" static uint32_t can_filter_id[9] = {0x18FED925, 0x18F00503, 0x18FDA589, 0x18FE419B, 0x18F00503, 0x18A70017, 0x18F40117, 0x18F101D0, 0x18FFD117}; static void bsp_initialization(void); int main(void) { /* 硬件初始化 */ bsp_initialization(); /* 应用程序初始化 */ app_init(); /* 开始任务调度 */ task_start_scheduler(); } /* 硬件初始化 */ static void bsp_initialization(void) { /* 设置偏移量 */ SCB->VTOR = FMC_ADDRESS_APP; /* 系统滴答器初始化 */ system_init(); /* CAN0 初始化, 波特率250 */ can_config(CAN0, 250); /* CAN0 设置过滤 (允许列表ID通过) */ can_set_filter_by_id(CAN0, can_filter_id, 9); /* 上位机 通讯串口 初始化 */ usart_config(HOST_USART_PERIPH, 115200, USART_PM_NONE); /* RS485 通讯串口 初始化 */ usart_config(RS485_USART_PERIPH, 19200, USART_PM_NONE); /* RS485使能控制脚 初始化, 默认接收 */ gpio_config(RS485_CL_PERIPH, RS485_CL_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* 频闪灯 控制引脚 初始化 */ gpio_config(LED_STROBE_PERIPH, LED_STROBE_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* 音量 Level 1 - 4 检测引脚 初始化 */ gpio_config(VOLUME_1_PERIPH, VOLUME_1_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); gpio_config(VOLUME_2_PERIPH, VOLUME_2_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); gpio_config(VOLUME_3_PERIPH, VOLUME_3_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); gpio_config(VOLUME_4_PERIPH, VOLUME_4_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); /* 前门 后门 左转弯 右转弯 倒车 检测引脚 初始化 */ gpio_interrupt_config(DOOR_FRONT_PERIPH, DOOR_FRONT_PIN, EXTI_TRIG_BOTH); gpio_interrupt_config(DOOR_BACK_PERIPH, DOOR_BACK_PIN, EXTI_TRIG_BOTH); gpio_interrupt_config(TURN_LEFT_PERIPH, TURN_LEFT_PIN, EXTI_TRIG_BOTH); gpio_interrupt_config(TURN_RIGHT_PERIPH, TURN_RIGHT_PIN, EXTI_TRIG_BOTH); gpio_interrupt_config(REVERSING_PERIPH, REVERSING_PIN, EXTI_TRIG_BOTH); /* 功放控制脚,默认开启 */ gpio_config(AMP_CTRL_PERIPH, AMP_CTRL_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, SET); /* DATA 控制脚 初始化 */ gpio_config(V58_DATA_PERIPH, V58_DATA_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* STATUS 控制脚 初始化 */ gpio_config(V58_STATUS_PERIPH, V58_STATUS_PIN, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, nullptr); iic_config(M62429_SDA_PERIPH, M62429_SDA_PIN, M62429_SCL_PERIPH, M62429_SCL_PIN); /* 激光投影设备 控制引脚 初始化 */ gpio_config(LP_FRONT_DOOR_PERIPH, LP_FRONT_DOOR_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); gpio_config(LP_BACK_DOOR_PERIPH, LP_BACK_DOOR_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); gpio_config(LP_CAR_REAR_PERIPH, LP_CAR_REAR_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* CAN指示灯 控制引脚 初始化 */ gpio_config(LED_CAN_PERIPH, LED_CAN_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* 485指示灯 控制引脚 初始化 */ gpio_config(LED_DIAODU_PERIPH, LED_DIAODU_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); /* 运行指示灯 控制引脚 初始化 */ gpio_config(LED_RUN_PERIPH, LED_RUN_PIN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, RESET); }