整理了main 函数
This commit is contained in:
+13
-15
@@ -84,10 +84,10 @@ const osThreadAttr_t ftpTask_attributes = {
|
||||
.stack_size = 1024 * 4,
|
||||
.priority = (osPriority_t) osPriorityNormal,
|
||||
};
|
||||
/* Definitions for ch395fTestTask */
|
||||
osThreadId_t ch395fTestTaskHandle;
|
||||
const osThreadAttr_t ch395fTestTask_attributes = {
|
||||
.name = "ch395fTestTask",
|
||||
/* Definitions for testTask */
|
||||
osThreadId_t testTaskHandle;
|
||||
const osThreadAttr_t testTask_attributes = {
|
||||
.name = "testTask",
|
||||
.stack_size = 4096 * 4,
|
||||
.priority = (osPriority_t) osPriorityBelowNormal,
|
||||
};
|
||||
@@ -105,7 +105,7 @@ const osMessageQueueAttr_t netMsgQueue_attributes = {
|
||||
void StartDefaultTask(void *argument);
|
||||
void StartNetTask(void *argument);
|
||||
void StartFtpTask(void *argument);
|
||||
void StartCh395fTestTask(void *argument);
|
||||
void start_test_task(void *argument);
|
||||
|
||||
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
|
||||
|
||||
@@ -148,11 +148,9 @@ void MX_FREERTOS_Init(void) {
|
||||
|
||||
/* creation of ftpTask */
|
||||
ftpTaskHandle = osThreadNew(StartFtpTask, NULL, &ftpTask_attributes);
|
||||
|
||||
|
||||
|
||||
/* creation of ch395fTestTask */
|
||||
ch395fTestTaskHandle = osThreadNew(StartCh395fTestTask, NULL, &ch395fTestTask_attributes);
|
||||
/* creation of testTask */
|
||||
testTaskHandle = osThreadNew(start_test_task, NULL, &testTask_attributes);
|
||||
|
||||
/* USER CODE BEGIN RTOS_THREADS */
|
||||
#ifdef ENABLE_NET_LAYER_TESTS
|
||||
@@ -243,22 +241,22 @@ __weak void StartFtpTask(void *argument)
|
||||
/* USER CODE END StartFtpTask */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN Header_StartCh395fTestTask */
|
||||
/* USER CODE BEGIN Header_start_test_task */
|
||||
/**
|
||||
* @brief Function implementing the ch395fTestTask thread.
|
||||
* @brief Function implementing the testTask thread.
|
||||
* @param argument: Not used
|
||||
* @retval None
|
||||
*/
|
||||
/* USER CODE END Header_StartCh395fTestTask */
|
||||
__weak void StartCh395fTestTask(void *argument)
|
||||
/* USER CODE END Header_start_test_task */
|
||||
__weak void start_test_task(void *argument)
|
||||
{
|
||||
/* USER CODE BEGIN StartCh395fTestTask */
|
||||
/* USER CODE BEGIN start_test_task */
|
||||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
osDelay(1);
|
||||
}
|
||||
/* USER CODE END StartCh395fTestTask */
|
||||
/* USER CODE END start_test_task */
|
||||
}
|
||||
|
||||
/* Private application code --------------------------------------------------*/
|
||||
|
||||
+5
-98
@@ -59,10 +59,7 @@
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN PV */
|
||||
/* RS-485 通信实例(UART5: PC12=TX, PD2=RX, PD0=DE) */
|
||||
rs485_handle_t g_rs485;
|
||||
#define RS485_RX_BUF_SIZE 256
|
||||
uint8_t g_rs485_rx_buf[RS485_RX_BUF_SIZE];
|
||||
/* RS-485 实例与接收缓冲已收归 rs485.c(见 rs485.h 的 extern 导出) */
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
@@ -117,71 +114,8 @@ int main(void)
|
||||
/* USER CODE BEGIN 2 */
|
||||
HAL_Delay(100);
|
||||
|
||||
/*
|
||||
* 时间子系统初始化(尽早完成,后续所有日志带时间戳)
|
||||
* sd2506_init() 从 RTC 读取初始时间
|
||||
* sys_clock_init() 将 RTC 时间转为 Unix epoch,建立墙钟基准
|
||||
*/
|
||||
/* 应用层初始化(时间子系统优先,详见 app_main_init) */
|
||||
app_main_init();
|
||||
sd2506_init();
|
||||
sys_clock_init();
|
||||
|
||||
/* RS-485 初始化(UART5 + PD0 方向控制) */
|
||||
rs485_init(&g_rs485, &huart5, ST_DIR4_GPIO_Port, ST_DIR4_Pin);
|
||||
DBG_INFO("RS485 init: OK (UART5, DE=PD0)");
|
||||
|
||||
/* 启动第一次 RS-485 接收 */
|
||||
rs485_receive_start(&g_rs485, g_rs485_rx_buf, RS485_RX_BUF_SIZE);
|
||||
|
||||
/* GD5F 初始化测试 */
|
||||
int ret = gd5f2gq5ue_init();
|
||||
DBG_INFO("NAND init: %s",
|
||||
(ret == GD5F_OK) ? "OK" :
|
||||
(ret == GD5F_ERROR) ? "ERROR" :
|
||||
(ret == GD5F_BUSY_TIMEOUT) ? "BUSY TIMEOUT" :
|
||||
(ret == GD5F_ECC_ERROR) ? "ECC ERROR" :
|
||||
(ret == GD5F_PROGRAM_FAIL) ? "PROGRAM FAIL" :
|
||||
(ret == GD5F_ERASE_FAIL) ? "ERASE FAIL" :
|
||||
(ret == GD5F_ID_MISMATCH) ? "ID MISMATCH" : "UNKNOWN");
|
||||
|
||||
/* TPAFE5160 ADC 测试 */
|
||||
int tp_ret = tpafe5160_init();
|
||||
DBG_INFO("ADC init: %s",
|
||||
(tp_ret == TPAFE5160_OK) ? "OK" : "TIMEOUT");
|
||||
|
||||
/* SD2506 RTC 诊断信息 */
|
||||
{
|
||||
/* 读取 ID */
|
||||
uint8_t sd_id[8];
|
||||
sd2506_get_id(sd_id);
|
||||
DBG_INFO("SD2506 ID: %02X%02X%02X%02X%02X%02X%02X%02X",
|
||||
sd_id[0], sd_id[1], sd_id[2], sd_id[3],
|
||||
sd_id[4], sd_id[5], sd_id[6], sd_id[7]);
|
||||
|
||||
/* 读取当前时间 */
|
||||
sd2506_time_t sd_time;
|
||||
sd2506_get_time(&sd_time);
|
||||
DBG_INFO("SD2506 time: %04d-%02d-%02d %02d:%02d:%02d (week %d)",
|
||||
sd_time.year, sd_time.month, sd_time.day,
|
||||
sd_time.hour, sd_time.minute, sd_time.second,
|
||||
sd_time.week);
|
||||
|
||||
/* 读取温度 */
|
||||
int8_t sd_temp;
|
||||
sd2506_get_temperature(&sd_temp);
|
||||
DBG_INFO("SD2506 temp: %d C", sd_temp);
|
||||
|
||||
/* 读取电池电压 */
|
||||
uint16_t sd_vbat;
|
||||
sd2506_get_battery_voltage(&sd_vbat);
|
||||
DBG_INFO("SD2506 battery: %d.%02d V",
|
||||
sd_vbat / 1000, (sd_vbat % 1000) / 10);
|
||||
}
|
||||
|
||||
/* 启动第一次转换(CubeMX 已配置 BUSY EXTI 中断) */
|
||||
tpafe5160_start_conv_irq();
|
||||
|
||||
/* CH395F 测试已全部移至 ch395fTestTask */
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Init scheduler */
|
||||
@@ -252,37 +186,10 @@ void SystemClock_Config(void)
|
||||
/* USER CODE BEGIN 4 */
|
||||
|
||||
/*
|
||||
* HAL UART 扩展接收回调(IDLE 空闲帧中断触发)
|
||||
* 当 RS-485 总线空闲超过 1 个字符时间后触发
|
||||
* RS-485 的 HAL UART 回调(HAL_UARTEx_RxEventCallback / HAL_UART_ErrorCallback)
|
||||
* 已收归 rs485.c 实现,本文件不再定义它们。如需处理接收到的 RS-485 数据,
|
||||
* 请重定义 rs485.h 中的弱钩子 rs485_on_rx(uint8_t *buf, uint16_t size)。
|
||||
*/
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
{
|
||||
if (huart->Instance == UART5) {
|
||||
rs485_rx_set_size(&g_rs485, Size);
|
||||
|
||||
/* TODO: 在此处处理接收到的 RS-485 数据
|
||||
* g_rs485_rx_buf[0 .. Size-1] 为有效数据
|
||||
* 例如:rs485_transmit(&g_rs485, g_rs485_rx_buf, Size, 0);
|
||||
*/
|
||||
|
||||
/* 重新开启接收 */
|
||||
rs485_receive_start(&g_rs485, g_rs485_rx_buf, RS485_RX_BUF_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* HAL UART 错误回调
|
||||
*/
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (huart->Instance == UART5) {
|
||||
/* STM32F4 通过读 SR + DR 清除 ORE/NE/FE/PE 错误标志 */
|
||||
(void)huart->Instance->SR;
|
||||
(void)huart->Instance->DR;
|
||||
/* 重新开启接收 */
|
||||
rs485_receive_start(&g_rs485, g_rs485_rx_buf, RS485_RX_BUF_SIZE);
|
||||
}
|
||||
}
|
||||
/* USER CODE END 4 */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user