| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- #include "system_init.h"
- #include "common.h"
- #include "can_data_handle.h"
- #include "usart_data_handle.h"
- #include "main_task.h"
- #include "main.h"
- #include "soft_can.h"
- #include "common.h"
- #include "soft_flash.h"
- #include "soft_can.h"
- #include "soft_version.h"
- #include "config.h"
- /**
- * @file thread_can_handle
- * @brief 初始化处理can线程
- * @param none
- * @details
- * @author Zhang Sir
- **/
- static struct rt_thread can_task;
- static rt_uint8_t can_task_stack[5120];
- void thread_can_handle()
- {
- rt_err_t result;
- result = rt_thread_init(&can_task,
- "cantask",
- thread_can_task_entry,
- RT_NULL,
- &can_task_stack[0],
- sizeof(can_task_stack),
- RT_THREAD_PRIORITY_MAX - 28,
- 100);
- if (result == RT_EOK)
- rt_thread_startup(&can_task);
- }
- /**
- * @file thread_usart_handle
- * @brief 初始化处理串口线程
- * @param none
- * @details
- * @author Zhang Sir
- **/
- static struct rt_thread usart_task;
- static rt_uint8_t usart_task_stack[5120];
- void thread_usart_handle()
- {
- rt_err_t result;
- result = rt_thread_init(&usart_task,
- "usarttask",
- thread_usart_task_entry,
- RT_NULL,
- &usart_task_stack[0],
- sizeof(usart_task_stack),
- RT_THREAD_PRIORITY_MAX - 28,
- 100);
- if (result == RT_EOK)
- rt_thread_startup(&usart_task);
- }
- /**
- * @file thread_task_handle
- * @brief 初始化处理主任务线程
- * @param none
- * @details
- * @author Zhang Sir
- **/
- static struct rt_thread main_task;
- static rt_uint8_t main_task_stack[5120];
- void thread_task_handle()
- {
- rt_err_t result;
- result = rt_thread_init(&main_task,
- "maintask",
- thread_main_task_handle,
- RT_NULL,
- &main_task_stack[0],
- sizeof(main_task_stack),
- RT_THREAD_PRIORITY_MAX - 27,
- 100);
- if (result == RT_EOK)
- rt_thread_startup(&main_task);
- }
- /**
- * @file creat_sem_init
- * @brief 初始化处理主任务线程
- * @param none
- * @details
- * @author Zhang Sir
- **/
- struct rt_semaphore uart1_sem;
- struct rt_semaphore can1_sem;
- struct rt_semaphore can2_sem;
- void creat_sem_init(void)
- {
- rt_err_t result = 0;
- result = rt_sem_init(&uart1_sem, "usartsem", 0, RT_IPC_FLAG_FIFO);
- if (result != RT_EOK)
- {
- //rt_kprintf("init uart sem failed.\n");
- return;
- }
- // result = rt_sem_init(&can1_sem, "can1sem", 0, RT_IPC_FLAG_FIFO);
- // if (result != RT_EOK)
- // {
- // //rt_kprintf("init can1 sem failed.\n");
- // return;
- // }
- // result = rt_sem_init(&can2_sem, "can2sem", 0, RT_IPC_FLAG_FIFO);
- // if (result != RT_EOK)
- // {
- // //rt_kprintf("init can2 sem failed.\n");
- // return;
- // }
- }
- /**
- * @file user_init
- * @brief 用户系统初始化
- * @param none
- * @details
- * @author Zhang Sir
- **/
- uint8_t can1_buffer[1024];
- uint8_t can2_buffer[1024];
- uint8_t uart_buffer[512];
- uint8_t send_uart_buffer[1024];
- rkfifo_t uart_rkfifo;
- rkfifo_t can1_rkfifo;
- rkfifo_t can2_rkfifo;
- rkfifo_t send_uart_rkfifo;
- extern UART_HandleTypeDef huart1;
- extern CAN_HandleTypeDef hcan1;
- extern CAN_HandleTypeDef hcan2;
- void user_init(void)
- {
- //串口初始化
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
- HAL_UART_Receive_DMA(&huart1, (uint8_t *)FMU_uart_buf, MAX_UART_BUF);
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_ERR);
- //CAN1初始化
- CAN1_filter_init();
- //HAL_NVIC_EnableIRQ(CAN1_SCE_IRQn);
- // __HAL_CAN_ENABLE_IT(&hcan1, CAN_IT_ERROR | CAN_IT_ERROR_WARNING | CAN_IT_ERROR_PASSIVE | CAN_IT_BUSOFF | CAN_IT_LAST_ERROR_CODE);
- __HAL_CAN_ENABLE_IT(&hcan1, CAN_IT_RX_FIFO0_FULL | CAN_IT_RX_FIFO0_OVERRUN);
- HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
- HAL_CAN_Start(&hcan1);
- HAL_GPIO_WritePin(GPIOC, C0_CAN1_ENABLE_Pin, GPIO_PIN_RESET);
- //CAN2初始化
- CAN2_filter_init();
-
- //HAL_NVIC_EnableIRQ(CAN2_SCE_IRQn);
- // __HAL_CAN_ENABLE_IT(&hcan2, CAN_IT_ERROR | CAN_IT_ERROR_WARNING | CAN_IT_ERROR_PASSIVE | CAN_IT_BUSOFF | CAN_IT_LAST_ERROR_CODE);
- __HAL_CAN_ENABLE_IT(&hcan2, CAN_IT_RX_FIFO1_FULL | CAN_IT_RX_FIFO1_OVERRUN);
- HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO1_MSG_PENDING);
- HAL_CAN_Start(&hcan2);
- HAL_GPIO_WritePin(GPIOC, C9_CAN2_ENABLE_Pin, GPIO_PIN_RESET);
- //PWM初始化
- // 开启PWM
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); //pump
- HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); //pump
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); //nozzle
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); //nozzle
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); //nozzle
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); //nozzle
-
- // 设置占空比
- __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000); // 1
- __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 1000); // 2
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1000); // 3
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1000); // 4
- __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, 1000); // 4
- __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_2, 1000); // 4
- //定时器4初始化
- HAL_TIM_Base_Start_IT(&htim4);
- HAL_TIM_Base_Start(&htim4);
- //rkfifo初始化
- rkfifo_init(&uart_rkfifo, uart_buffer, sizeof(uart_buffer), 1);
- //rkfifo_init(&can1_rkfifo, can1_buffer, sizeof(can1_buffer), 1);
- //rkfifo_init(&can2_rkfifo, can2_buffer, sizeof(can2_buffer), 1);
- rkfifo_init(&send_uart_rkfifo, send_uart_buffer, sizeof(send_uart_buffer), 1);
- //读flash
- flash_init();
-
- //注册PMU
- Int2String(cur_par.pmu_serial,dev_pmu.sn,9);
- Int2String(APP_VERSION,dev_pmu.soft_serial,6);
- regist_dev_info(&dev_pmu,DEVICE_PMU,false,dev_pmu.sn,9,dev_pmu.soft_serial,6,NULL,0,"vk",3);
- }
|