gateway_mcu/CH32V303-FreeRTOS/App/application/Slave/Src/slaveFreerotsTask.c

283 lines
8.1 KiB
C

#include "stdio.h"
#include "slaveFreerotsTask.h"
// #include "HD_Flash.h"
#include "FM_GPIO.h"
#include "uart_dev.h"
#include "FM_ADC.h"
#include "slaveParameter.h"
#include "slaveBusIdleDetection.h"
#include "slaveMcuDataParse.h"
#include "slaveQueueUart.h"
#include "slave485DataParse.h"
/* 发送任务 */
#define J1_Transmit_TASK_PRIO 7
#define J1_Transmit_STK_SIZE 64
static TaskHandle_t J1_TransmitTask_Handler;
static void J1_transmit_Task(void *pvParameters);
#define J3_Transmit_TASK_PRIO 7
#define J3_Transmit_STK_SIZE 64
static TaskHandle_t J3_TransmitTask_Handler;
static void J3_transmit_Task(void *pvParameters);
#define J5_Transmit_TASK_PRIO 7
#define J5_Transmit_STK_SIZE 64
static TaskHandle_t J5_TransmitTask_Handler;
static void J5_transmit_Task(void *pvParameters);
#define J7_Transmit_TASK_PRIO 7
#define J7_Transmit_STK_SIZE 64
static TaskHandle_t J7_TransmitTask_Handler;
static void J7_transmit_Task(void *pvParameters);
#define J8_Transmit_TASK_PRIO 7
#define J8_Transmit_STK_SIZE 64
static TaskHandle_t J8_TransmitTask_Handler;
static void J8_transmit_Task(void *pvParameters);
#define J9_Transmit_TASK_PRIO 7
#define J9_Transmit_STK_SIZE 64
static TaskHandle_t J9_TransmitTask_Handler;
static void J9_transmit_Task(void *pvParameters);
#define slaveMcu_Transmit_TASK_PRIO 7
#define slaveMcu_Transmit_STK_SIZE 64
static TaskHandle_t slaveMcu_TransmitTask_Handler;
static void slaveMcu_transmit_Task(void *pvParameters);
/* 释放内存任务 */
#define slaveFreeMemory_TASK_PRIO 8
#define slaveFreeMemory_STK_SIZE 64
static TaskHandle_t slaveFreeMemory_Handler;
static void slaveFreeMemory_Task(void *pvParameters);
/* 解析任务 */
#define slaveMcuDataParse_TASK_PRIO 5
#define slaveMcuDataParse_STK_SIZE 512
static TaskHandle_t slaveMcuDataParse_Handler;
static void slaveMcuDataParse_Task(void *pvParameters);
#define slave485DataParse_TASK_PRIO 5
#define slave485DataParse_STK_SIZE 512
static TaskHandle_t slave485DataParse_Handler;
static void slave485DataParse_Task(void *pvParameters);
/* 其他任务 */
#define slaveOther_TASK_PRIO 3
#define slaveOther_STK_SIZE 64
static TaskHandle_t slaveOther_Handler;
static void slaveOther_Task(void *pvParameters);
/**
* @brief 将数据发送
* @param
* @retval
*/
void J1_transmit_Task(void *pvParameters)
{
while (1) {
J1QueueSend();
}
}
void J3_transmit_Task(void *pvParameters)
{
while (1) {
J3QueueSend();
}
}
void J5_transmit_Task(void *pvParameters)
{
while (1) {
J5QueueSend();
}
}
void J7_transmit_Task(void *pvParameters)
{
while (1) {
J7QueueSend();
}
}
void J8_transmit_Task(void *pvParameters)
{
while (1) {
J8QueueSend();
}
}
void J9_transmit_Task(void *pvParameters)
{
while (1) {
J9QueueSend();
}
}
void slaveMcu_transmit_Task(void *pvParameters)
{
while (1) {
slaveMcuQueueSend();
}
}
/**
* @brief 数据发送完成后,将申请存放数据的内存释放
* @param
* @retval
*/
void slaveFreeMemory_Task(void *pvParameters)
{
while(1) {
binarySemaphoreFreeMemory();
}
}
/**
* @brief 解析主mcu发送来的数据
* @param
* @retval
*/
void slaveMcuDataParse_Task(void *pvParameters)
{
while (1) {
slaveMcuUartDataAnalysis(g_Mcu_handle);
vTaskDelay(10);
}
}
/**
* @brief 解析传感器发送来的数据
* @param
* @retval
*/
void slave485DataParse_Task(void *pvParameters)
{
while (1) {
J1_SensorDataAnalysis();
J3_SensorDataAnalysis();
J5_SensorDataAnalysis();
J7_SensorDataAnalysis();
J8_SensorDataAnalysis();
J9_SensorDataAnalysis();
vTaskDelay(5);
}
}
/**
* @brief 其他的一些任务
* @param
* @retval
*/
void slaveOther_Task(void *pvParameters)
{
while (1) {
log_info("xPortGetFreeHeapSize : %d",xPortGetFreeHeapSize());
vTaskDelay(1000);
}
}
/**
* @brief 启动
* @param
* @retval
*/
void slaveStartApp(void)
{
SlaveMcu_GPIO_Init();
readSlaveConfigParameter();
SlaveMcu_uartBuf_Init(256, 1024);
Init_J1_485(getJ1_485_Baud());
Init_J3_485(getJ3_485_Baud());
Init_J5_485(getJ5_485_Baud());
Init_J7_485(getJ7_485_Baud());
Init_J8_485(getJ8_485_Baud());
Init_J9_485(getJ9_485_Baud());
Init_Mcu_Uart(115200);
applyDataBuffer();
slaveUartSendInit();
slaveIdleInit();
SlaveMcu_485DE_Read();
/* create task */
xTaskCreate((TaskFunction_t )J1_transmit_Task,
(const char* )"J1TransmitTask",
(uint16_t )J1_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J1_Transmit_TASK_PRIO,
(TaskHandle_t* )&J1_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )J3_transmit_Task,
(const char* )"J3TransmitTask",
(uint16_t )J3_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J3_Transmit_TASK_PRIO,
(TaskHandle_t* )&J3_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )J5_transmit_Task,
(const char* )"J5TransmitTask",
(uint16_t )J5_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J5_Transmit_TASK_PRIO,
(TaskHandle_t* )&J5_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )J7_transmit_Task,
(const char* )"J7TransmitTask",
(uint16_t )J7_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J7_Transmit_TASK_PRIO,
(TaskHandle_t* )&J7_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )J8_transmit_Task,
(const char* )"J8TransmitTask",
(uint16_t )J8_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J8_Transmit_TASK_PRIO,
(TaskHandle_t* )&J8_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )J9_transmit_Task,
(const char* )"J9TransmitTask",
(uint16_t )J9_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )J9_Transmit_TASK_PRIO,
(TaskHandle_t* )&J9_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )slaveMcu_transmit_Task,
(const char* )"slaveMcuTransmitTask",
(uint16_t )slaveMcu_Transmit_STK_SIZE,
(void* )NULL,
(UBaseType_t )slaveMcu_Transmit_TASK_PRIO,
(TaskHandle_t* )&slaveMcu_TransmitTask_Handler);
xTaskCreate((TaskFunction_t )slaveFreeMemory_Task,
(const char* )"slaveFreeMemoryTask",
(uint16_t )slaveFreeMemory_STK_SIZE,
(void* )NULL,
(UBaseType_t )slaveFreeMemory_TASK_PRIO,
(TaskHandle_t* )&slaveFreeMemory_Handler);
xTaskCreate((TaskFunction_t )slaveMcuDataParse_Task,
(const char* )"slaveMcuDataParse",
(uint16_t )slaveMcuDataParse_STK_SIZE,
(void* )NULL,
(UBaseType_t )slaveMcuDataParse_TASK_PRIO,
(TaskHandle_t* )&slaveMcuDataParse_Handler);
xTaskCreate((TaskFunction_t )slave485DataParse_Task,
(const char* )"slave485DataParse",
(uint16_t )slave485DataParse_STK_SIZE,
(void* )NULL,
(UBaseType_t )slave485DataParse_TASK_PRIO,
(TaskHandle_t* )&slave485DataParse_Handler);
xTaskCreate((TaskFunction_t )slaveOther_Task,
(const char* )"slaveOtherTask",
(uint16_t )slaveOther_STK_SIZE,
(void* )NULL,
(UBaseType_t )slaveOther_TASK_PRIO,
(TaskHandle_t* )&slaveOther_Handler);
vTaskStartScheduler();
}