AVS/GD32F103C8T6/App/main.c

84 lines
3.3 KiB
C

#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);
}