3.27_433:添加UART2调试打印、IO监控、指令解析和继电器控制模块。

能够接收UART2指令控制继电器开关,或向UART2发送四路IO输入状态,并使用轮询方式检测IO状态进行及时反馈。
This commit is contained in:
2026-03-27 10:09:13 +08:00
parent f548593c59
commit 71027ebc46
76 changed files with 6789 additions and 1803 deletions

View File

@ -28,6 +28,12 @@
#include "rf433_config.h"
#include "rf433_hal.h"
/* 应用层模块头文件 */
#include "uart2_print.h"
#include "io_monitor.h"
#include "cmd_parser.h"
#include "relay_control.h"
#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH)
#include "rf433_tx_app.h"
#endif
@ -55,7 +61,7 @@
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
static uint8_t uart2_rx_byte = 0;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
@ -100,11 +106,20 @@ int main(void)
MX_USART3_UART_Init();
/* USER CODE BEGIN 2 */
/* 初始化RF433模块 - 使用默认配置 */
rf433_init(NULL);
/* 初始化应用层模块 */
UART2_Print_Init();
IO_Monitor_Init();
CmdParser_Init();
Relay_Init();
/* 启动UART2接收中断 */
HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1);
/* 初始化RF433模块 - 使用默认配置 */
rf433_init(NULL);
/* 启动UART接收 - 使用rf433_hal中的临时变量 */
HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1);
/* 启动UART1接收 - 使用rf433_hal中的临时变量 */
HAL_UART_Receive_IT(&huart1, &rf433_uart_rx_tmp, 1);
/* 根据配置模式初始化TX/RX应用层 */
#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH)
@ -119,7 +134,13 @@ int main(void)
rf433_rx_app_start();
#endif
/* USER CODE END 2 */
/* 打印启动信息 */
printf("\r\n========================================\r\n");
printf("E32-433TBH-SC Application Started\r\n");
printf("System Clock: %d MHz\r\n", SystemCoreClock / 1000000);
printf("========================================\r\n");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@ -129,6 +150,11 @@ int main(void)
/* USER CODE BEGIN 3 */
/* 应用层任务处理 */
UART2_Print_Task();
IO_Monitor_Task();
CmdParser_Task();
#if (RF433_MODE == RF433_MODE_TX) || (RF433_MODE == RF433_MODE_BOTH)
/* TX任务 */
rf433_tx_app_task();
@ -139,8 +165,6 @@ int main(void)
rf433_rx_app_task();
#endif
/* 短延时避免CPU占用过高 */
HAL_Delay(1);
}
/* USER CODE END 3 */
}
@ -186,6 +210,43 @@ void SystemClock_Config(void)
/* USER CODE BEGIN 4 */
/**
* @brief UART接收完成中断回调函数
* @note 处理UART1(RF433)和UART2(调试口)的接收数据
* @param huart: UART句柄指针
* @retval 无
*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART1)
{
/* 调用RF433模块的UART接收回调 */
rf433_hal_uart_rxcplt_callback();
}
else if (huart->Instance == USART2)
{
/* 喂入指令解析器 */
CmdParser_FeedByte(uart2_rx_byte, HAL_GetTick());
/* 重新启动接收 */
HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1);
}
}
/**
* @brief UART发送完成中断回调函数
* @note 处理UART2发送完成触发下一次发送
* @param huart: UART句柄指针
* @retval 无
*/
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART2)
{
/* 调用UART2打印模块的发送完成回调 */
UART2_Print_TxCpltCallback();
}
}
/* USER CODE END 4 */
/**