2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
#include "stdio.h"
|
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
#include "freerotsTask.h"
|
|
|
|
|
|
|
|
|
|
#include "uart_dev.h"
|
|
|
|
|
#include "FM_GPIO.h"
|
|
|
|
|
#include "FM_ADC.h"
|
2025-02-28 08:57:09 +00:00
|
|
|
|
#include "queueUart.h"
|
2025-03-04 10:04:30 +00:00
|
|
|
|
#include "upUartParse.h"
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#include "flash.h"
|
|
|
|
|
#include "parameter.h"
|
|
|
|
|
#include "busIdleDetection.h"
|
2025-03-06 02:12:57 +00:00
|
|
|
|
#include "downUartParse.h"
|
2025-02-28 08:57:09 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
#define Common_TASK_PRIO 2
|
|
|
|
|
#define Common_STK_SIZE 512
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#define Transmit_TASK_PRIO 7
|
2025-02-28 08:57:09 +00:00
|
|
|
|
#define Transmit_STK_SIZE 256
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#define UpReceive_TASK_PRIO 5
|
2025-03-04 10:04:30 +00:00
|
|
|
|
#define UpReceive_STK_SIZE 256
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#define DownReceive_TASK_PRIO 4
|
2025-03-06 02:12:57 +00:00
|
|
|
|
#define DownReceive_STK_SIZE 1024
|
2025-03-04 10:04:30 +00:00
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#define FreeMemory_TASK_PRIO 5
|
|
|
|
|
#define FreeMemory_STK_SIZE 256
|
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
static TaskHandle_t CommonTask_Handler;
|
|
|
|
|
static TaskHandle_t TransmitTask_Handler;
|
|
|
|
|
static TaskHandle_t UpReceive_Handler;
|
|
|
|
|
static TaskHandle_t DownReceive_Handler;
|
2025-03-05 08:27:39 +00:00
|
|
|
|
static TaskHandle_t FreeMemory_Handler;
|
2025-03-04 10:04:30 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
static void common_Task(void *pvParameters)
|
2025-02-26 09:59:15 +00:00
|
|
|
|
{
|
2025-02-28 08:57:09 +00:00
|
|
|
|
// writePwrCtrlState(Android_PwrCtrl, PwrCtrlOpen);
|
|
|
|
|
// proportionalInt();
|
|
|
|
|
// while(1) {
|
|
|
|
|
// // printf("task1 entry\r\n");
|
|
|
|
|
// printf_adc_data();
|
|
|
|
|
// USART_ITConfig(UART5, USART_IT_TXE, ENABLE);
|
|
|
|
|
// uartInterruptSend(g_Upward_uart5_handle, data, 12);
|
|
|
|
|
// vTaskDelay(1000);
|
|
|
|
|
// }
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
uint16_t HeapSizeNum = 0;
|
2025-03-12 07:00:12 +00:00
|
|
|
|
uint16_t LedNum = 0;
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>ʱ */
|
|
|
|
|
TickType_t xLastWakeTime;
|
|
|
|
|
const TickType_t xFrequency = 100; // 50 <20><><EFBFBD>δ𣬼<CEB4>200mS
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC> xLastWakeTime
|
|
|
|
|
xLastWakeTime = xTaskGetTickCount();
|
|
|
|
|
|
2025-03-12 07:00:12 +00:00
|
|
|
|
|
|
|
|
|
|
2025-02-28 08:57:09 +00:00
|
|
|
|
while (1) {
|
2025-03-04 10:04:30 +00:00
|
|
|
|
// uint8_t *Buff = (uint8_t *)pvPortMalloc(200);
|
|
|
|
|
// if (Buff == NULL) {
|
|
|
|
|
// log_error("Memory allocation failed\n");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
// sendBuff->length = sizeof("hello world\n");
|
|
|
|
|
// sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
2025-03-12 07:00:12 +00:00
|
|
|
|
// memcpy((char *)sendBuff->data, "hello world\n", sizeof("hello world\n"));
|
2025-03-04 10:04:30 +00:00
|
|
|
|
|
|
|
|
|
// xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// USARTx_SendStr_Len(USART3, "hello world\n", sizeof("hello world\n"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// uint8_t *Buff = (uint8_t *)pvPortMalloc(200);
|
|
|
|
|
// if (Buff == NULL) {
|
|
|
|
|
// log_error("Memory allocation failed\n");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// queueTimeShareSendInfo *sendBuff = (queueTimeShareSendInfo *)Buff;
|
|
|
|
|
// sendBuff->length = sizeof("hello world\n");
|
|
|
|
|
// sendBuff->data = Buff + sizeof(queueTimeShareSendInfo);
|
|
|
|
|
// sendBuff->connectPort = connectJ0;
|
2025-03-12 07:00:12 +00:00
|
|
|
|
// memcpy((char *)sendBuff->data, "hello world\n", sizeof("hello world\n"));
|
2025-03-04 10:04:30 +00:00
|
|
|
|
|
|
|
|
|
// xQueueSend(J5_0_485_Queue, &Buff, 10);
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
|
|
|
|
/* ÿ200ms<6D><73>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
setWorkCurrent(getInCurrent());
|
|
|
|
|
setWorkVoltage(getInVoltage());
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD> */
|
2025-03-12 07:00:12 +00:00
|
|
|
|
if (HeapSizeNum++ == 25) {
|
2025-03-05 08:27:39 +00:00
|
|
|
|
HeapSizeNum = 0;
|
|
|
|
|
log_info("xPortGetFreeHeapSize : %d",xPortGetFreeHeapSize());
|
2025-03-12 07:00:12 +00:00
|
|
|
|
// log_info("getRs485State : %d\n", getRs485State(g_J5_0_usart3_handle));
|
|
|
|
|
// log_info("getUartSendState : %d\n", getUartSendState(g_J5_0_usart3_handle));
|
|
|
|
|
// log_info("getBUSIDLEFlag : %d\n", getBUSIDLEFlag(g_J5_0_usart3_handle));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (LedNum++ == 3) {
|
|
|
|
|
LedNum = 0;
|
|
|
|
|
ledToggle();
|
2025-03-05 08:27:39 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vTaskDelayUntil(&xLastWakeTime, xFrequency);
|
|
|
|
|
// vTaskDelay(200);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
static void transmit_Task(void *pvParameters)
|
2025-02-28 08:57:09 +00:00
|
|
|
|
{
|
|
|
|
|
while (1) {
|
|
|
|
|
uartQueueSend();
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>su806<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
static void UpReceive_Task(void *pvParameters)
|
|
|
|
|
{
|
|
|
|
|
while (1) {
|
|
|
|
|
upwardUartDataAnalysis(g_Upward_uart5_handle);
|
|
|
|
|
vTaskDelay(20);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2025-03-06 02:12:57 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-03-04 10:04:30 +00:00
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
static void DownReceive_Task(void *pvParameters)
|
|
|
|
|
{
|
|
|
|
|
while (1) {
|
2025-03-06 02:12:57 +00:00
|
|
|
|
J1_SensorDataAnalysis();
|
|
|
|
|
J2_SensorDataAnalysis();
|
|
|
|
|
J3_SensorDataAnalysis();
|
|
|
|
|
J4_SensorDataAnalysis();
|
|
|
|
|
J5_0_SensorDataAnalysis();
|
|
|
|
|
vTaskDelay(5);
|
2025-03-04 10:04:30 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
static void FreeMemory_Task(void *pvParameters)
|
|
|
|
|
{
|
|
|
|
|
while (1) {
|
|
|
|
|
// vTaskDelay(1000);
|
|
|
|
|
binarySemaphoreFreeMemory();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void startApp(void)
|
2025-03-05 08:27:39 +00:00
|
|
|
|
{
|
|
|
|
|
// printf("RCC->RSTSCKR = %08x \r\n", RCC->RSTSCKR);
|
|
|
|
|
// RCC->RSTSCKR |= 1<<24;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>flash<73><68><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
|
|
|
|
|
Flash_Init();
|
|
|
|
|
readConfigParameter();
|
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
FM_GPIO_Init();
|
|
|
|
|
FM_ADC_Init();
|
2025-03-05 08:27:39 +00:00
|
|
|
|
proportionalInt();
|
|
|
|
|
|
|
|
|
|
Init_Upward_uart(getUpWard_Uart_Baud());
|
|
|
|
|
Init_J1_485(getJ1_485_Baud());
|
|
|
|
|
Init_J2_485(getJ2_485_Baud());
|
|
|
|
|
Init_J3_485(getJ3_485_Baud());
|
|
|
|
|
Init_J4_485(getJ4_485_Baud());
|
|
|
|
|
Init_J5_0_485(getJ5_0_485_Baud());
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-02-28 08:57:09 +00:00
|
|
|
|
uartQueueInit();
|
2025-03-05 08:27:39 +00:00
|
|
|
|
binarySemaphoreInit();
|
|
|
|
|
softwareTimeInit();
|
2025-02-28 08:57:09 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
Delay_Ms(1000);
|
|
|
|
|
set_485_Read();
|
|
|
|
|
|
|
|
|
|
writePwrCtrlState(Android_PwrCtrl, GPIO_SET);
|
2025-03-12 07:00:12 +00:00
|
|
|
|
// writePwrCtrlState(J1_PwrCtrl, GPIO_SET);
|
2025-03-06 02:12:57 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
/* create task */
|
2025-02-28 08:57:09 +00:00
|
|
|
|
xTaskCreate((TaskFunction_t )common_Task,
|
|
|
|
|
(const char* )"commonTask",
|
|
|
|
|
(uint16_t )Common_STK_SIZE,
|
2025-02-26 09:59:15 +00:00
|
|
|
|
(void* )NULL,
|
2025-02-28 08:57:09 +00:00
|
|
|
|
(UBaseType_t )Common_TASK_PRIO,
|
|
|
|
|
(TaskHandle_t* )&CommonTask_Handler);
|
|
|
|
|
|
|
|
|
|
xTaskCreate((TaskFunction_t )transmit_Task,
|
|
|
|
|
(const char* )"transmitTask",
|
|
|
|
|
(uint16_t )Transmit_STK_SIZE,
|
|
|
|
|
(void* )NULL,
|
|
|
|
|
(UBaseType_t )Transmit_TASK_PRIO,
|
|
|
|
|
(TaskHandle_t* )&TransmitTask_Handler);
|
|
|
|
|
|
2025-03-04 10:04:30 +00:00
|
|
|
|
xTaskCreate((TaskFunction_t )UpReceive_Task,
|
|
|
|
|
(const char* )"UpReceiveTask",
|
|
|
|
|
(uint16_t )UpReceive_STK_SIZE,
|
|
|
|
|
(void* )NULL,
|
|
|
|
|
(UBaseType_t )UpReceive_TASK_PRIO,
|
|
|
|
|
(TaskHandle_t* )&UpReceive_Handler);
|
|
|
|
|
|
|
|
|
|
xTaskCreate((TaskFunction_t )DownReceive_Task,
|
|
|
|
|
(const char* )"DownReceiveTask",
|
|
|
|
|
(uint16_t )DownReceive_STK_SIZE,
|
|
|
|
|
(void* )NULL,
|
|
|
|
|
(UBaseType_t )DownReceive_TASK_PRIO,
|
|
|
|
|
(TaskHandle_t* )&DownReceive_Handler);
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
xTaskCreate((TaskFunction_t )FreeMemory_Task,
|
|
|
|
|
(const char* )"FreeMemoryTask",
|
|
|
|
|
(uint16_t )FreeMemory_STK_SIZE,
|
|
|
|
|
(void* )NULL,
|
|
|
|
|
(UBaseType_t )FreeMemory_TASK_PRIO,
|
|
|
|
|
(TaskHandle_t* )&FreeMemory_Handler);
|
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
vTaskStartScheduler();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|