generated from Template/H563ZI-HAL-CMake-Template
150 lines
4.0 KiB
C
150 lines
4.0 KiB
C
/* 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 */
|
||
/* ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||
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 */
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>app_thread.c<><63>
|
||
// #define task_test 1
|
||
#ifdef TEST //Ŀǰ<C4BF><C7B0><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
|
||
|
||
|
||
|
||
/* 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 */
|