This commit is contained in:
tux
2025-11-05 15:01:47 +08:00
parent f51fe3cc4e
commit 3b3e6c764f
11 changed files with 310 additions and 138 deletions

View File

@@ -0,0 +1,39 @@
#include "delayticks.h"
/*延时函数,不会将任务挂起*/
void delay_ticks(uint32_t delay)
{
/*开始计数器值*/
uint32_t tickstart = xTaskGetTickCount();
/*指定延时时间*/
uint32_t wait = delay;
/*计算当前计数器值和开始计数器值的差*/
uint32_t ticks_diff = xTaskGetTickCount() - tickstart;
if ( ticks_diff < wait )
{
/*计算剩余等待的时间*/
uint32_t remaining_ticks = wait - ticks_diff;
/*循环等待,直到剩余时间结束*/
while ( ( xTaskGetTickCount() - tickstart) < wait )
{
/*如果发生溢出,则重新计算时间差*/
if ( xTaskGetTickCount() < tickstart )
{
/*重新计算时间差*/
ticks_diff = UINT32_MAX - tickstart + xTaskGetTickCount();
if ( ticks_diff < wait )
{
remaining_ticks = wait - ticks_diff;
}
else
{
/*如果时间差已经大于等于等待时间,则退出*/
break;
}
}
}
}
}

View File

@@ -0,0 +1,10 @@
#ifndef DELAYTICKS_H
#define DELAYTICKS_H
#include "main.h"
#include "cmsis_os.h"
#include "tim.h"
extern void delay_ticks(uint32_t delay);
#endif

View File

@@ -0,0 +1,22 @@
// #pragma once // 可以用#pragma once代替#ifndef ROBOT_DEF_H(header guard)
#ifndef ROBOT_DEF_H
#define ROBOT_DEF_H
typedef enum
{
NORMAL_MODE = 0, // 正常模式对应数值0
SYS_ERROR_OCCURRED = 1, // 系统错误对应数值1
REMOTE_NOT_CONNECTED = 2, // 遥控器未连接对应数值2
REMOTE_CONNECTED = 3, // 遥控器已连接对应数值3
AUTO_SHOOTING_MODE = 4, // 成功进入自动瞄准模式对应数值4
IMU_CALIBERATION_MODE = 5 // IMU校准模式对应数值5
// 添加其他模式
} RobotMode_t; //机器人控制模式
// 声明并初始化变量
RobotMode_t RobotMode = REMOTE_NOT_CONNECTED; // 初始状态为遥控器未连接
// #pragma pack() // 开启字节对齐,结束前面的#pragma pack(1)
#endif