diff --git a/Software/master/PressureSensorBoardMaster/.mxproject b/Software/master/PressureSensorBoardMaster/.mxproject
new file mode 100644
index 0000000..14833b1
--- /dev/null
+++ b/Software/master/PressureSensorBoardMaster/.mxproject
@@ -0,0 +1,33 @@
+[PreviousGenFiles]
+AdvancedFolderStructure=true
+HeaderFileListSize=7
+HeaderFiles#0=..\Core\Inc\gpio.h
+HeaderFiles#1=..\Core\Inc\dma.h
+HeaderFiles#2=..\Core\Inc\tim.h
+HeaderFiles#3=..\Core\Inc\usart.h
+HeaderFiles#4=..\Core\Inc\stm32f1xx_it.h
+HeaderFiles#5=..\Core\Inc\stm32f1xx_hal_conf.h
+HeaderFiles#6=..\Core\Inc\main.h
+HeaderFolderListSize=1
+HeaderPath#0=..\Core\Inc
+HeaderFiles=;
+SourceFileListSize=7
+SourceFiles#0=..\Core\Src\gpio.c
+SourceFiles#1=..\Core\Src\dma.c
+SourceFiles#2=..\Core\Src\tim.c
+SourceFiles#3=..\Core\Src\usart.c
+SourceFiles#4=..\Core\Src\stm32f1xx_it.c
+SourceFiles#5=..\Core\Src\stm32f1xx_hal_msp.c
+SourceFiles#6=..\Core\Src\main.c
+SourceFolderListSize=1
+SourcePath#0=..\Core\Src
+SourceFiles=;
+
+[PreviousLibFiles]
+LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
+
+[PreviousUsedKeilFiles]
+SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\dma.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Core\Src\stm32f1xx_hal_msp.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;;
+HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc;
+CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
diff --git a/Software/master/PressureSensorBoardMaster/Core/Inc/stm32f1xx_it.h b/Software/master/PressureSensorBoardMaster/Core/Inc/stm32f1xx_it.h
index f79f1cb..49ca180 100644
--- a/Software/master/PressureSensorBoardMaster/Core/Inc/stm32f1xx_it.h
+++ b/Software/master/PressureSensorBoardMaster/Core/Inc/stm32f1xx_it.h
@@ -56,6 +56,7 @@ void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void DMA1_Channel5_IRQHandler(void);
+void TIM3_IRQHandler(void);
void USART1_IRQHandler(void);
void USART2_IRQHandler(void);
void USART3_IRQHandler(void);
diff --git a/Software/master/PressureSensorBoardMaster/Core/Inc/tim.h b/Software/master/PressureSensorBoardMaster/Core/Inc/tim.h
index 29e0392..899839b 100644
--- a/Software/master/PressureSensorBoardMaster/Core/Inc/tim.h
+++ b/Software/master/PressureSensorBoardMaster/Core/Inc/tim.h
@@ -32,15 +32,12 @@ extern "C" {
/* USER CODE END Includes */
-extern TIM_HandleTypeDef htim2;
-
extern TIM_HandleTypeDef htim3;
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
-void MX_TIM2_Init(void);
void MX_TIM3_Init(void);
/* USER CODE BEGIN Prototypes */
diff --git a/Software/master/PressureSensorBoardMaster/Core/Src/main.c b/Software/master/PressureSensorBoardMaster/Core/Src/main.c
index 4e22886..ea252d6 100644
--- a/Software/master/PressureSensorBoardMaster/Core/Src/main.c
+++ b/Software/master/PressureSensorBoardMaster/Core/Src/main.c
@@ -6,7 +6,6 @@
******************************************************************************
*/
/* USER CODE END Header */
-
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
@@ -26,25 +25,20 @@
typedef struct {
uint8_t address; // 从机地址
uint8_t is_online; // 是否在线
- uint8_t is_ready; // 是否就绪
+ uint8_t is_responded; // 是否回复
uint8_t matrix_data[5]; // 矩阵数据
- uint32_t last_response; // 最后响应时间
uint8_t retry_count; // 重试计数
} SlaveDevice_t;
-// 通信状态
+// 任务状态
typedef enum {
STATE_IDLE = 0, // 空闲状态
- STATE_SENDING = 1, // 发送中
- STATE_WAITING_RESPONSE = 2, // 等待响应
- STATE_PROCESSING = 3 // 处理响应
+ STATE_WORKING = 1, // 工作中
+ STATE_COMPLETE = 2, // 应答完成
+ STATE_OUTTIME = 3 // 应答超时
} CommState_t;
-// 轮询阶段
-typedef enum {
- PHASE_STATUS_QUERY = 0, // 状态查询阶段
- PHASE_MATRIX_QUERY = 1 // 矩阵查询阶段
-} PollPhase_t;
+
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
@@ -58,24 +52,27 @@ typedef enum {
#define RS485_OUTPUT_PORT &huart2
#define RS232_OUTPUT_PORT &huart3
-// 时序参数(关键!)
-#define SEND_TO_RECEIVE_DELAY 2 // 发送到接收切换延时(ms)
-#define RESPONSE_TIMEOUT 500 // 响应超时(ms)
-#define INTER_QUERY_DELAY 5 // 查询间延时(ms)
-#define STATUS_QUERY_INTERVAL 100 // 状态查询周期(ms)
-#define MATRIX_QUERY_INTERVAL 100 // 矩阵查询周期(ms)
-#define MAX_RETRY_COUNT 3 // 最大重试次数
+
/* USER CODE END PD */
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
/* Private variables ---------------------------------------------------------*/
+
/* USER CODE BEGIN PV */
// 从机设备数组
SlaveDevice_t slaves[SLAVE_COUNT] = {
- {0x01, 0, 0, {0}, 0, 0}, // 从机1
- {0x02, 0, 0, {0}, 0, 0}, // 从机2
- {0x03, 0, 0, {0}, 0, 0} // 从机3
+ {0x01, 0, 0, {0}, 0}, // 从机1
+ {0x02, 0, 0, {0}, 0}, // 从机2
+ {0x03, 0, 0, {0}, 0} // 从机3
};
+CommState_t query_state[SLAVE_COUNT] = {0,0,0};
+
+
// 全局矩阵状态
uint8_t global_matrix[TOTAL_MATRIX_POINTS] = {0};
@@ -85,386 +82,155 @@ uint8_t rx_buffer[RX_BUFFER_SIZE];
uint16_t last_dma_pos = 0;
// 系统状态
-CommState_t comm_state = STATE_IDLE;
-PollPhase_t poll_phase = PHASE_STATUS_QUERY;
-uint8_t current_slave_index = 0;
-uint32_t last_status_query_time = 0;
-uint32_t last_matrix_query_time = 0;
-uint32_t current_operation_start = 0;
+
+uint8_t current_task_index = 0;
uint8_t expecting_response_from = 0;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
-void RS485_Send_Query(uint8_t slave_address, uint8_t function_code);
-void Process_Received_Data(void);
-void Update_Global_Matrix(uint8_t slave_index);
-void Send_Output_Frame(void);
-void Handle_Response_Timeout(void);
-void Handle_Slave_Response(uint8_t slave_address, uint8_t function_code, uint8_t* data);
-uint16_t Calculate_CRC16(uint8_t *data, uint8_t length);
-uint16_t Get_DMA_Received_Count(void);
+
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
+uint8_t Slave1_Sta_Query(void);
+uint8_t Slave1_Matrix_Query(void);
+uint8_t Slave2_Sta_Query(void);
+uint8_t Slave2_Matrix_Query(void);
/* USER CODE END 0 */
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
int main(void)
{
- HAL_Init();
- SystemClock_Config();
-
- // 外设初始化
- MX_GPIO_Init();
- MX_DMA_Init();
- MX_USART2_UART_Init();
- MX_TIM2_Init();
- MX_TIM3_Init();
- MX_USART1_UART_Init();
- MX_USART3_UART_Init();
-
- /* USER CODE BEGIN 2 */
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_USART2_UART_Init();
+ MX_TIM3_Init();
+ MX_USART1_UART_Init();
+ MX_USART3_UART_Init();
+ /* USER CODE BEGIN 2 */
// 启动定时器
- HAL_TIM_Base_Start_IT(&htim2);
-
+// HAL_TIM_Base_Start_IT(&htim3);
+ current_task_index = 1;
// 启动串口DMA接收(Circular模式)
HAL_UART_Receive_DMA(RS485_SLAVE_PORT, rx_buffer, RX_BUFFER_SIZE);
-
- // 发送启动信息
- char msg[] = "RS485 Multi-Slave Master Started\r\n";
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100);
-
- last_status_query_time = HAL_GetTick();
- last_matrix_query_time = HAL_GetTick();
- /* USER CODE END 2 */
+
+ /* USER CODE END 2 */
- /* Infinite loop */
- while (1)
- {
- uint32_t current_time = HAL_GetTick();
-
- // 检查是否有新数据到达
- uint16_t current_dma_pos = Get_DMA_Received_Count();
- if (current_dma_pos != last_dma_pos)
- {
- Process_Received_Data();
- last_dma_pos = current_dma_pos;
- }
-
- // 主状态机 - 非阻塞设计
- switch (comm_state)
- {
-case STATE_IDLE:
- // 决定下一个操作
- if (poll_phase == PHASE_STATUS_QUERY)
- {
- // 状态查询阶段:按顺序轮询所有从机的状态
- uint8_t slave_address = current_slave_index + 1; // 0->1, 1->2, 2->3
-
- RS485_Send_Query(0x03, 0x01);
- expecting_response_from = slave_address;
- comm_state = STATE_SENDING;
- current_operation_start = HAL_GetTick();
-
- // 移动到下一个从机
- current_slave_index = (current_slave_index + 1) % SLAVE_COUNT;
-
- // 如果完成一轮状态查询,切换到矩阵查询阶段
- if (current_slave_index == 0)
- {
- poll_phase = PHASE_MATRIX_QUERY;
- }
- }
- else // PHASE_MATRIX_QUERY
- {
- // 矩阵查询阶段:按顺序轮询所有从机的矩阵状态
- uint8_t slave_address = current_slave_index + 1; // 0->1, 1->2, 2->3
-
- RS485_Send_Query(slave_address, 0x03);
- expecting_response_from = slave_address;
- comm_state = STATE_SENDING;
- current_operation_start = HAL_GetTick();
- last_matrix_query_time = HAL_GetTick();
-
- // 移动到下一个从机
- current_slave_index = (current_slave_index + 1) % SLAVE_COUNT;
-
- // 如果完成一轮矩阵查询,切换回状态查询阶段
- if (current_slave_index == 0)
- {
- poll_phase = PHASE_STATUS_QUERY;
- }
- }
- break;
-
- case STATE_SENDING:
- // 发送完成,切换到等待响应状态
- if (current_time - current_operation_start >= SEND_TO_RECEIVE_DELAY)
- {
- comm_state = STATE_WAITING_RESPONSE;
- current_operation_start = current_time;
- }
- break;
-
- case STATE_WAITING_RESPONSE:
- // 检查响应超时
- if (current_time - current_operation_start >= RESPONSE_TIMEOUT)
- {
- Handle_Response_Timeout();
- comm_state = STATE_IDLE;
-
- // 查询间延时,避免连续查询
- HAL_Delay(INTER_QUERY_DELAY);
- }
- break;
-
- case STATE_PROCESSING:
- // 处理完成,回到空闲状态
- comm_state = STATE_IDLE;
-
- // 查询间延时
- HAL_Delay(INTER_QUERY_DELAY);
- break;
- }
-
- // 定期发送输出帧
- static uint32_t last_output_time = 0;
- if (current_time - last_output_time >= 500) // 每500ms发送一次
- {
- Send_Output_Frame();
- last_output_time = current_time;
- }
-
- HAL_Delay(1); // 小延时,避免过度占用CPU
- }
-}
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+
+ if(current_task_index == 8)
+ current_task_index = 1;
+
+ switch(current_task_index)
+ {
+
+ case 1:
+ //先确定当前任务的执行状态,当任务为完成、超时和空闲时再进判断
+ //执行函数
+ //将任务状态设置为工作
+ //开定时器
+ //
+ //定时器中断里面每次都读取是否收到该任务的回复,然后清零回复标志位 如果标志位为0,则确定为离线 无论是否在线,均使得任务索引加1
+ //如果进判断后
+ if((query_state[0] == STATE_IDLE) || (query_state[0] == STATE_COMPLETE) || (query_state[0] == STATE_OUTTIME))
+ {
+ Slave1_Sta_Query();
+
+
+
+
+
+
+
+
+ }
+ break;
+ case 2:
+
+
+
+
+ break;
+ case 3:
+
+
+
+
+ break;
+ case 4:
+
+
+
+
+ break;
+ case 5:
+
+
+
+
+ break;
+ case 6:
+
+
+
+
+ break;
+ case 7:
+
+
+
+
+ break;
+ default:
+
-/**
- * @brief RS485发送查询命令
- */
-void RS485_Send_Query(uint8_t slave_address, uint8_t function_code)
-{
- uint8_t frame_index = 0;
-
- // 构建查询帧
- tx_buffer[frame_index++] = slave_address;
- tx_buffer[frame_index++] = function_code;
-
- // CRC校验
- uint16_t crc = Calculate_CRC16(tx_buffer, frame_index);
- tx_buffer[frame_index++] = crc & 0xFF;
- tx_buffer[frame_index++] = (crc >> 8) & 0xFF;
-
- // 发送
- HAL_UART_Transmit(RS485_SLAVE_PORT, tx_buffer, frame_index, 100);
-
- // 调试信息
- char debug_msg[64];
- const char* func_str = (function_code == 0x01) ? "status" : "matrix";
- snprintf(debug_msg, sizeof(debug_msg), "Sent %s query to slave %02X\r\n", func_str, slave_address);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)debug_msg, strlen(debug_msg), 100);
-}
+ break;
+
+
+ }
+
+
+
+
+ HAL_TIM_Base_Start_IT(&htim3);
+
+ /* USER CODE END WHILE */
-/**
- * @brief 处理接收到的数据
- */
-void Process_Received_Data(void)
-{
- uint16_t received_count = Get_DMA_Received_Count();
-
- // 处理缓冲区中的所有数据
- for(uint16_t i = 0; i < received_count && i < RX_BUFFER_SIZE - 3; i++)
- {
- uint8_t address = rx_buffer[i];
- uint8_t func_code = rx_buffer[i+1];
-
- // 检查是否是我们期望的响应
- if( /*address == expecting_response_from && */(func_code == 0x01 || func_code == 0x03))
- {
- Handle_Slave_Response(address, func_code, &rx_buffer[i]);
-
- // 标记为处理状态
- comm_state = STATE_PROCESSING;
-
- // 跳过这个帧
- i += (func_code == 0x01) ? 4 : 8;
- }
- }
-}
-
-/**
- * @brief 处理从机响应
- */
-void Handle_Slave_Response(uint8_t slave_address, uint8_t function_code, uint8_t* data)
-{
- uint8_t slave_index = slave_address - 0x01;
-
- if (slave_index >= SLAVE_COUNT) return;
-
- if(function_code == 0x01) // 状态响应
- {
- uint8_t status = data[1];
- slaves[slave_index].is_online = 1;
- slaves[slave_index].is_ready = (status == 0x01);
- slaves[slave_index].last_response = HAL_GetTick();
- slaves[slave_index].retry_count = 0;
-
- char msg[64];
- snprintf(msg, sizeof(msg), "Slave %02X: online=1, ready=%d\r\n",
- slave_address, slaves[slave_index].is_ready);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100);
- }
- else if(function_code == 0x03) // 矩阵响应
- {
- uint8_t data_length = data[2];
- if(data_length == 5)
- {
- memcpy(slaves[slave_index].matrix_data, &data[3], 5);
- Update_Global_Matrix(slave_index);
-
- slaves[slave_index].last_response = HAL_GetTick();
- slaves[slave_index].retry_count = 0;
-
- char msg[64];
- snprintf(msg, sizeof(msg), "Slave %02X matrix updated\r\n", slave_address);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100);
- }
- }
-}
-
-/**
- * @brief 处理响应超时
- */
-void Handle_Response_Timeout(void)
-{
- // 找到对应的从机
- for (uint8_t i = 0; i < SLAVE_COUNT; i++)
- {
- if (slaves[i].address == expecting_response_from)
- {
- slaves[i].retry_count++;
-
- char msg[64];
- snprintf(msg, sizeof(msg), "Slave %02X timeout (retry %d/%d)\r\n",
- expecting_response_from, slaves[i].retry_count, MAX_RETRY_COUNT);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100);
-
- if (slaves[i].retry_count >= MAX_RETRY_COUNT)
- {
-// slaves[i].is_online = 0;
-// slaves[i].is_ready = 0;
-
- char offline_msg[64];
- snprintf(offline_msg, sizeof(offline_msg), "Slave %02X marked offline\r\n",
- expecting_response_from);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)offline_msg, strlen(offline_msg), 100);
- }
- break;
- }
- }
-}
-
-/**
- * @brief 获取DMA接收的数据计数
- */
-uint16_t Get_DMA_Received_Count(void)
-{
- return RX_BUFFER_SIZE - __HAL_DMA_GET_COUNTER(huart1.hdmarx);
-}
-
-/**
- * @brief 更新全局矩阵数据
- */
-void Update_Global_Matrix(uint8_t slave_index)
-{
- // 每个从机有30个点 (5行×6列)
- uint8_t base_index = slave_index * 30;
-
- for(uint8_t row = 0; row < 5; row++)
- {
- uint8_t row_data = slaves[slave_index].matrix_data[row];
- for(uint8_t col = 0; col < 6; col++)
- {
- uint8_t point_state = (row_data & (1 << col)) ? 1 : 0;
- uint8_t global_index = base_index + row * 6 + col;
-
- if(global_index < TOTAL_MATRIX_POINTS)
- {
- global_matrix[global_index] = point_state;
- }
- }
- }
-}
-
-/**
- * @brief 发送输出帧
- */
-void Send_Output_Frame(void)
-{
- // 构建完整的输出帧 - 包含90个矩阵点
- uint8_t output_frame[100] = {0}; // 增加缓冲区大小
- uint8_t index = 0;
-
- // 帧头
- output_frame[index++] = 0xAA;
- output_frame[index++] = 0x55;
-
- // 从机在线状态 (3字节)
- for(uint8_t i = 0; i < SLAVE_COUNT; i++)
- {
- output_frame[index++] = slaves[i].is_online;
- }
-
- // 从机就绪状态 (3字节)
- for(uint8_t i = 0; i < SLAVE_COUNT; i++)
- {
- output_frame[index++] = slaves[i].is_ready;
- }
-
- // 完整的矩阵数据 (90个点)
- for(uint8_t i = 0; i < TOTAL_MATRIX_POINTS; i++)
- {
- output_frame[index++] = global_matrix[i];
- }
-
- // 通过RS485发送
- HAL_UART_Transmit(RS485_OUTPUT_PORT, output_frame, index, 100);
-
- // 调试信息
- static uint8_t output_counter = 0;
- if (output_counter++ % 5 == 0) // 每5次输出一次,避免刷屏
- {
- char msg[128];
- snprintf(msg, sizeof(msg),
- "Output: online=%d,%d,%d ready=%d,%d,%d points=%d\r\n",
- slaves[0].is_online, slaves[1].is_online, slaves[2].is_online,
- slaves[0].is_ready, slaves[1].is_ready, slaves[2].is_ready,
- TOTAL_MATRIX_POINTS);
- HAL_UART_Transmit(RS232_OUTPUT_PORT, (uint8_t*)msg, strlen(msg), 100);
- }
-}
-
-/**
- * @brief 计算CRC16校验
- */
-uint16_t Calculate_CRC16(uint8_t *data, uint8_t length)
-{
- uint16_t crc = 0xFFFF;
- for(uint8_t i = 0; i < length; i++)
- {
- crc ^= data[i];
- for(uint8_t j = 0; j < 8; j++)
- {
- if(crc & 0x0001)
- crc = (crc >> 1) ^ 0xA001;
- else
- crc = crc >> 1;
- }
- }
- return crc;
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
}
/**
@@ -510,6 +276,166 @@ void SystemClock_Config(void)
HAL_RCC_EnableCSS();
}
+/* USER CODE BEGIN 4 */
+
+uint8_t Slave1_Sta_Query(void)
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+uint8_t Slave1_Matrix_Query(void)
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+uint8_t Slave2_Sta_Query(void)
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+uint8_t Slave2_Matrix_Query(void)
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+uint8_t Slave3_Sta_Query(void)
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+uint8_t Slave3_Matrix_Query(void)
+{
+
+
+
+}
+
+uint8_t Process_Reply(void)
+{
+
+
+
+
+
+
+
+
+}
+
+uint8_t RS485_Output(void)
+{
+
+
+
+
+
+
+
+}
+
+uint8_t Slave_Query_Output(uint8_t address, uint8_t cmd)
+{
+
+
+
+
+
+
+// HAL_UART_Transmit();
+}
+
+/* USER CODE END 4 */
+
/**
* @brief This function is executed in case of error occurrence.
* @retval None
@@ -523,7 +449,6 @@ void Error_Handler(void)
}
/* USER CODE END Error_Handler_Debug */
}
-
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
@@ -540,7 +465,3 @@ void assert_failed(uint8_t *file, uint32_t line)
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
-
-/* USER CODE BEGIN 4 */
-// 这里可以放置其他用户代码,如中断回调函数等
-/* USER CODE END 4 */
\ No newline at end of file
diff --git a/Software/master/PressureSensorBoardMaster/Core/Src/stm32f1xx_it.c b/Software/master/PressureSensorBoardMaster/Core/Src/stm32f1xx_it.c
index 3160c9c..d65b462 100644
--- a/Software/master/PressureSensorBoardMaster/Core/Src/stm32f1xx_it.c
+++ b/Software/master/PressureSensorBoardMaster/Core/Src/stm32f1xx_it.c
@@ -55,6 +55,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
+extern TIM_HandleTypeDef htim3;
extern DMA_HandleTypeDef hdma_usart1_rx;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
@@ -216,6 +217,20 @@ void DMA1_Channel5_IRQHandler(void)
/* USER CODE END DMA1_Channel5_IRQn 1 */
}
+/**
+ * @brief This function handles TIM3 global interrupt.
+ */
+void TIM3_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM3_IRQn 0 */
+
+ /* USER CODE END TIM3_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim3);
+ /* USER CODE BEGIN TIM3_IRQn 1 */
+
+ /* USER CODE END TIM3_IRQn 1 */
+}
+
/**
* @brief This function handles USART1 global interrupt.
*/
diff --git a/Software/master/PressureSensorBoardMaster/Core/Src/tim.c b/Software/master/PressureSensorBoardMaster/Core/Src/tim.c
index 0a6a09d..65f0e59 100644
--- a/Software/master/PressureSensorBoardMaster/Core/Src/tim.c
+++ b/Software/master/PressureSensorBoardMaster/Core/Src/tim.c
@@ -24,49 +24,8 @@
/* USER CODE END 0 */
-TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
-/* TIM2 init function */
-void MX_TIM2_Init(void)
-{
-
- /* USER CODE BEGIN TIM2_Init 0 */
-
- /* USER CODE END TIM2_Init 0 */
-
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
-
- /* USER CODE BEGIN TIM2_Init 1 */
-
- /* USER CODE END TIM2_Init 1 */
- htim2.Instance = TIM2;
- htim2.Init.Prescaler = 0;
- htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim2.Init.Period = 65535;
- htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM2_Init 2 */
-
- /* USER CODE END TIM2_Init 2 */
-
-}
/* TIM3 init function */
void MX_TIM3_Init(void)
{
@@ -82,11 +41,11 @@ void MX_TIM3_Init(void)
/* USER CODE END TIM3_Init 1 */
htim3.Instance = TIM3;
- htim3.Init.Prescaler = 0;
+ htim3.Init.Prescaler = 7199;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim3.Init.Period = 65535;
+ htim3.Init.Period = 4999;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
{
Error_Handler();
@@ -111,24 +70,17 @@ void MX_TIM3_Init(void)
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
- if(tim_baseHandle->Instance==TIM2)
- {
- /* USER CODE BEGIN TIM2_MspInit 0 */
-
- /* USER CODE END TIM2_MspInit 0 */
- /* TIM2 clock enable */
- __HAL_RCC_TIM2_CLK_ENABLE();
- /* USER CODE BEGIN TIM2_MspInit 1 */
-
- /* USER CODE END TIM2_MspInit 1 */
- }
- else if(tim_baseHandle->Instance==TIM3)
+ if(tim_baseHandle->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspInit 0 */
/* USER CODE END TIM3_MspInit 0 */
/* TIM3 clock enable */
__HAL_RCC_TIM3_CLK_ENABLE();
+
+ /* TIM3 interrupt Init */
+ HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(TIM3_IRQn);
/* USER CODE BEGIN TIM3_MspInit 1 */
/* USER CODE END TIM3_MspInit 1 */
@@ -138,24 +90,16 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{
- if(tim_baseHandle->Instance==TIM2)
- {
- /* USER CODE BEGIN TIM2_MspDeInit 0 */
-
- /* USER CODE END TIM2_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_TIM2_CLK_DISABLE();
- /* USER CODE BEGIN TIM2_MspDeInit 1 */
-
- /* USER CODE END TIM2_MspDeInit 1 */
- }
- else if(tim_baseHandle->Instance==TIM3)
+ if(tim_baseHandle->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspDeInit 0 */
/* USER CODE END TIM3_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM3_CLK_DISABLE();
+
+ /* TIM3 interrupt Deinit */
+ HAL_NVIC_DisableIRQ(TIM3_IRQn);
/* USER CODE BEGIN TIM3_MspDeInit 1 */
/* USER CODE END TIM3_MspDeInit 1 */
diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.0101 b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.0101
index 49f9210..f86b091 100644
--- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.0101
+++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvguix.0101
@@ -110,8 +110,8 @@
0
- 422
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000000000000100000064433A5C55736572735C31353433355C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF65433A5C55736572735C31353433355C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C75736172742E63000000000775736172742E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000ED00000066000000AB06000009030000
+ 598
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000003000000000000000100000064433A5C55736572735C31353433355C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF65433A5C55736572735C31353433355C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C436F72655C5372635C75736172742E63000000000775736172742E6300000000FFDC7800FFFFFFFF8A433A5C55736572735C31353433355C4465736B746F705C507265737375726553656E736F72426F6172645C536F6674776172655C6D61737465725C507265737375726553656E736F72426F6172644D61737465725C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F756172742E63000000001473746D3332663178785F68616C5F756172742E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000ED00000066000000AB06000009030000
@@ -1805,8 +1805,8 @@
59392
File
- 2660
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001448414C5F554152545F526563656976655F444D41960000000000000005001448414C5F554152545F526563656976655F444D411650726F636573735F4D6F646275735F436F6D6D616E6411E98089E68BA9E696B0E79A84E4B880E8A112E98089E68BA9E696B0E79A84E4B880E8A13F01340000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 2687
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001448414C5F554152545F526563656976655F444D41960000000000000007001148414C5F554152545F5472616E736D6974001448414C5F554152545F526563656976655F444D411650726F636573735F4D6F646275735F436F6D6D616E6411E98089E68BA9E696B0E79A84E4B880E8A112E98089E68BA9E696B0E79A84E4B880E8A13F013400000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -3606,9 +3606,9 @@
0
../Core/Src/main.c
- 2
- 334
- 358
+ 35
+ 82
+ 101
1
0
@@ -3622,6 +3622,15 @@
0
+
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c
+ 35
+ 1101
+ 1138
+ 1
+
+ 0
+
diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvoptx b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvoptx
index 4b8dbd3..2d9032d 100644
--- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvoptx
+++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster.uvoptx
@@ -128,7 +128,24 @@
-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)
-
+
+
+ 0
+ 0
+ 163
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ ../Core/Src/main.c
+
+
+
+
0
diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf
index bf001a2..9680fcd 100644
Binary files a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf and b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.axf differ
diff --git a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm
index 806a067..380db57 100644
--- a/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm
+++ b/Software/master/PressureSensorBoardMaster/MDK-ARM/PressureSensorBoardMaster/PressureSensorBoardMaster.build_log.htm
@@ -22,41 +22,41 @@ Dialog DLL: TCM.DLL V1.56.4.0
Project:
C:\Users\15435\Desktop\PressureSensorBoard\Software\master\PressureSensorBoardMaster\MDK-ARM\PressureSensorBoardMaster.uvprojx
-Project File Date: 11/12/2025
+Project File Date: 12/03/2025
Output:
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\app\Keil_v5\ARM\ARMCC\Bin'
-Rebuild target 'PressureSensorBoardMaster'
-assembling startup_stm32f103xb.s...
-compiling dma.c...
-compiling stm32f1xx_hal_msp.c...
-compiling stm32f1xx_hal_cortex.c...
-compiling stm32f1xx_hal.c...
-compiling stm32f1xx_hal_gpio_ex.c...
-compiling stm32f1xx_hal_gpio.c...
-compiling usart.c...
-compiling gpio.c...
-compiling tim.c...
-compiling stm32f1xx_hal_dma.c...
-compiling stm32f1xx_it.c...
-compiling stm32f1xx_hal_rcc.c...
+Build target 'PressureSensorBoardMaster'
compiling main.c...
-../Core/Src/main.c(546): warning: #1-D: last line of file ends without a newline
- /* USER CODE END 4 */
-../Core/Src/main.c: 1 warning, 0 errors
-compiling stm32f1xx_hal_rcc_ex.c...
-compiling stm32f1xx_hal_tim_ex.c...
-compiling stm32f1xx_hal_tim.c...
-compiling system_stm32f1xx.c...
-compiling stm32f1xx_hal_exti.c...
-compiling stm32f1xx_hal_pwr.c...
-compiling stm32f1xx_hal_flash.c...
-compiling stm32f1xx_hal_flash_ex.c...
-compiling stm32f1xx_hal_uart.c...
+../Core/Src/main.c(73): warning: #188-D: enumerated type mixed with another type
+ CommState_t query_state[SLAVE_COUNT] = {0,0,0};
+../Core/Src/main.c(73): warning: #188-D: enumerated type mixed with another type
+ CommState_t query_state[SLAVE_COUNT] = {0,0,0};
+../Core/Src/main.c(73): warning: #188-D: enumerated type mixed with another type
+ CommState_t query_state[SLAVE_COUNT] = {0,0,0};
+../Core/Src/main.c(302): warning: #940-D: missing return statement at end of non-void function "Slave1_Sta_Query"
+ }
+../Core/Src/main.c(325): warning: #940-D: missing return statement at end of non-void function "Slave1_Matrix_Query"
+ }
+../Core/Src/main.c(348): warning: #940-D: missing return statement at end of non-void function "Slave2_Sta_Query"
+ }
+../Core/Src/main.c(371): warning: #940-D: missing return statement at end of non-void function "Slave2_Matrix_Query"
+ }
+../Core/Src/main.c(394): warning: #940-D: missing return statement at end of non-void function "Slave3_Sta_Query"
+ }
+../Core/Src/main.c(401): warning: #940-D: missing return statement at end of non-void function "Slave3_Matrix_Query"
+ }
+../Core/Src/main.c(413): warning: #940-D: missing return statement at end of non-void function "Process_Reply"
+ }
+../Core/Src/main.c(424): warning: #940-D: missing return statement at end of non-void function "RS485_Output"
+ }
+../Core/Src/main.c(435): warning: #940-D: missing return statement at end of non-void function "Slave_Query_Output"
+ }
+../Core/Src/main.c: 12 warnings, 0 errors
linking...
-Program Size: Code=9884 RO-data=368 RW-data=88 ZI-data=2232
+Program Size: Code=7204 RO-data=312 RW-data=20 ZI-data=2052
FromELF: creating hex file...
-"PressureSensorBoardMaster\PressureSensorBoardMaster.axf" - 0 Error(s), 1 Warning(s).
+"PressureSensorBoardMaster\PressureSensorBoardMaster.axf" - 0 Error(s), 12 Warning(s).
Software Packages used:
@@ -80,7 +80,7 @@ Package Vendor: Keil
* Component: ARM::CMSIS:CORE@6.1.0
Include file: CMSIS/Core/Include/tz_context.h
-Build Time Elapsed: 00:00:03
+Build Time Elapsed: 00:00:01