/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file app_threadx.c * @author MCD Application Team * @brief ThreadX applicative file ****************************************************************************** * @attention * * Copyright (c) 2025 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "app_threadx.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* ȫ�ֱ������� */ TX_QUEUE ble_tx_queue; TX_EVENT_FLAGS_GROUP system_events; MotorCommand current_motor_cmd = {0,0}; _GPSData gps_data; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ // ������� ����app_thread.c�� // #define task_test 1 #ifdef TEST //Ŀǰ���ڲ��� /* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */ void main_control_thread_entry(ULONG thread_input) { ULONG events; MotorCommand motor_cmd = {0, 0}; while(1) { // 等待事件发生 tx_event_flags_get(&system_events, EVENT_OBSTACLE_DETECTED | EVENT_BLE_COMMAND_RECEIVED, TX_OR_CLEAR, &events, TX_WAIT_FOREVER); // 处理障碍物事件 if(events & EVENT_OBSTACLE_DETECTED) { // 触发蜂鸣器和振动提示 Buzzer_Open(); Shake_Motor_Open(); tx_thread_sleep(100); // 振动100ms Buzzer_Close(); Shake_Motor_Close(); // 发送报警到手机 BLE_Message msg; msg.msg_type = 2; snprintf(msg.data, sizeof(msg.data), "#{\"alert\":\"Obstacle detected!\"}\n"); tx_queue_send(&ble_tx_queue, &msg, TX_WAIT_FOREVER); } // 处理蓝牙控制指令 if(events & EVENT_BLE_COMMAND_RECEIVED) { // 从队列获取电机命令 // tx_queue_receive(&ble_rx_queue, &motor_cmd, TX_WAIT_FOREVER); // 实际控制电机 (伪代码) // set_motor_speed(motor_cmd.leftSpeed, motor_cmd.rightSpeed); } } } /* USER CODE END 1 */ /* USER CODE END 1 */ #endif /* USER CODE END PFP */ /** * @brief Application ThreadX Initialization. * @param memory_ptr: memory pointer * @retval int */ UINT App_ThreadX_Init(VOID *memory_ptr) { UINT ret = TX_SUCCESS; /* USER CODE BEGIN App_ThreadX_MEM_POOL */ /* USER CODE END App_ThreadX_MEM_POOL */ /* USER CODE BEGIN App_ThreadX_Init */ /* USER CODE END App_ThreadX_Init */ return ret; } /** * @brief Function that implements the kernel's initialization. * @param None * @retval None */ void MX_ThreadX_Init(void) { /* USER CODE BEGIN Before_Kernel_Start */ /* USER CODE END Before_Kernel_Start */ tx_kernel_enter(); /* USER CODE BEGIN Kernel_Start_Error */ /* USER CODE END Kernel_Start_Error */ } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */