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

1
.idea/editor.xml generated
View File

@@ -268,7 +268,6 @@
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/FREE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,15 @@ extern SPI_HandleTypeDef hspi1;
extern SPI_HandleTypeDef hspi2;
extern SPI_HandleTypeDef hspi6;
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
void MX_SPI1_Init(void);
void MX_SPI2_Init(void);
void MX_SPI6_Init(void);
/* USER CODE BEGIN Prototypes */

View File

@@ -117,30 +117,20 @@ const osThreadAttr_t WS2812Task_attributes = {
/* USER CODE END FunctionPrototypes */
void StartDefaultTask(void *argument);
void ShootTask(void *argument);
void GimbalTask(void *argument);
void ChassisTask(void *argument);
void StartInitTask(void *argument);
void VisionTask(void *argument);
void CmdTask(void *argument);
void RefereeTask(void *argument);
extern void ws2812Task(void const *argument);
extern void ws2812Task(void *argument);
extern void MX_USB_DEVICE_Init(void);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/* Hook prototypes */
void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName);
void vApplicationMallocFailedHook(void);
/* USER CODE BEGIN 4 */
@@ -229,6 +219,7 @@ void MX_FREERTOS_Init(void) {
/* USER CODE BEGIN RTOS_EVENTS */
/* add events, ... */
/* USER CODE END RTOS_EVENTS */
}
/* USER CODE BEGIN Header_StartDefaultTask */
@@ -238,7 +229,8 @@ void MX_FREERTOS_Init(void) {
* @retval None
*/
/* USER CODE END Header_StartDefaultTask */
__weak void StartDefaultTask(void *argument) {
__weak void StartDefaultTask(void *argument)
{
/* init code for USB_DEVICE */
MX_USB_DEVICE_Init();
/* USER CODE BEGIN StartDefaultTask */
@@ -256,7 +248,8 @@ __weak void StartDefaultTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_ShootTask */
__weak void ShootTask(void *argument) {
__weak void ShootTask(void *argument)
{
/* USER CODE BEGIN ShootTask */
/* Infinite loop */
for (;;) {
@@ -272,7 +265,8 @@ __weak void ShootTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_GimbalTask */
__weak void GimbalTask(void *argument) {
__weak void GimbalTask(void *argument)
{
/* USER CODE BEGIN GimbalTask */
/* Infinite loop */
for (;;) {
@@ -288,7 +282,8 @@ __weak void GimbalTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_ChassisTask */
__weak void ChassisTask(void *argument) {
__weak void ChassisTask(void *argument)
{
/* USER CODE BEGIN ChassisTask */
/* Infinite loop */
for (;;) {
@@ -304,7 +299,8 @@ __weak void ChassisTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_StartInitTask */
__weak void StartInitTask(void *argument) {
__weak void StartInitTask(void *argument)
{
/* USER CODE BEGIN StartInitTask */
/* Infinite loop */
for (;;) {
@@ -320,7 +316,8 @@ __weak void StartInitTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_VisionTask */
__weak void VisionTask(void *argument) {
__weak void VisionTask(void *argument)
{
/* USER CODE BEGIN VisionTask */
/* Infinite loop */
for (;;) {
@@ -336,7 +333,8 @@ __weak void VisionTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_CmdTask */
__weak void CmdTask(void *argument) {
__weak void CmdTask(void *argument)
{
/* USER CODE BEGIN CmdTask */
/* Infinite loop */
for (;;) {
@@ -352,7 +350,8 @@ __weak void CmdTask(void *argument) {
* @retval None
*/
/* USER CODE END Header_RefereeTask */
__weak void RefereeTask(void *argument) {
__weak void RefereeTask(void *argument)
{
/* USER CODE BEGIN RefereeTask */
/* Infinite loop */
for (;;) {

View File

@@ -38,8 +38,6 @@
* Output
* EVENT_OUT
* EXTI
PA6 ------> SPI6_MISO
PA7 ------> SPI6_MOSI
PA8 ------> RCC_MCO_1
PC10 ------> SPI3_SCK
PC11 ------> SPI3_MISO
@@ -99,14 +97,6 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PA6 PA7 */
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF8_SPI6;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : pump3_Pin pump4_Pin */
GPIO_InitStruct.Pin = pump3_Pin|pump4_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

View File

@@ -127,6 +127,7 @@ int main(void)
MX_UART5_Init();
MX_TIM3_Init();
MX_IWDG1_Init();
MX_SPI6_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */

View File

@@ -26,6 +26,7 @@
SPI_HandleTypeDef hspi1;
SPI_HandleTypeDef hspi2;
SPI_HandleTypeDef hspi6;
DMA_HandleTypeDef hdma_spi1_rx;
DMA_HandleTypeDef hdma_spi1_tx;
DMA_HandleTypeDef hdma_spi2_rx;
@@ -114,6 +115,48 @@ void MX_SPI2_Init(void)
/* USER CODE END SPI2_Init 2 */
}
/* SPI6 init function */
void MX_SPI6_Init(void)
{
/* USER CODE BEGIN SPI6_Init 0 */
/* USER CODE END SPI6_Init 0 */
/* USER CODE BEGIN SPI6_Init 1 */
/* USER CODE END SPI6_Init 1 */
hspi6.Instance = SPI6;
hspi6.Init.Mode = SPI_MODE_MASTER;
hspi6.Init.Direction = SPI_DIRECTION_2LINES_TXONLY;
hspi6.Init.DataSize = SPI_DATASIZE_8BIT;
hspi6.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi6.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi6.Init.NSS = SPI_NSS_SOFT;
hspi6.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi6.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi6.Init.TIMode = SPI_TIMODE_DISABLE;
hspi6.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi6.Init.CRCPolynomial = 0x0;
hspi6.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
hspi6.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
hspi6.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
hspi6.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hspi6.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hspi6.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
hspi6.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
hspi6.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
hspi6.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;
hspi6.Init.IOSwap = SPI_IO_SWAP_DISABLE;
if (HAL_SPI_Init(&hspi6) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN SPI6_Init 2 */
/* USER CODE END SPI6_Init 2 */
}
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
@@ -287,6 +330,41 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI2_MspInit 1 */
}
else if(spiHandle->Instance==SPI6)
{
/* USER CODE BEGIN SPI6_MspInit 0 */
/* USER CODE END SPI6_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI6;
PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_HSE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* SPI6 clock enable */
__HAL_RCC_SPI6_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**SPI6 GPIO Configuration
PA5 ------> SPI6_SCK
PA6 ------> SPI6_MISO
PA7 ------> SPI6_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF8_SPI6;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI6_MspInit 1 */
/* USER CODE END SPI6_MspInit 1 */
}
}
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
@@ -346,6 +424,25 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI2_MspDeInit 1 */
}
else if(spiHandle->Instance==SPI6)
{
/* USER CODE BEGIN SPI6_MspDeInit 0 */
/* USER CODE END SPI6_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_SPI6_CLK_DISABLE();
/**SPI6 GPIO Configuration
PA5 ------> SPI6_SCK
PA6 ------> SPI6_MISO
PA7 ------> SPI6_MOSI
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
/* USER CODE BEGIN SPI6_MspDeInit 1 */
/* USER CODE END SPI6_MspDeInit 1 */
}
}
/* USER CODE BEGIN 1 */

View File

@@ -419,19 +419,20 @@ Mcu.IP10=NVIC
Mcu.IP11=RCC
Mcu.IP12=SPI1
Mcu.IP13=SPI2
Mcu.IP14=SYS
Mcu.IP15=TIM1
Mcu.IP16=TIM3
Mcu.IP17=TIM12
Mcu.IP18=UART5
Mcu.IP19=UART7
Mcu.IP14=SPI6
Mcu.IP15=SYS
Mcu.IP16=TIM1
Mcu.IP17=TIM3
Mcu.IP18=TIM12
Mcu.IP19=UART5
Mcu.IP2=CRC
Mcu.IP20=USART1
Mcu.IP21=USART2
Mcu.IP22=USART3
Mcu.IP23=USART10
Mcu.IP24=USB_DEVICE
Mcu.IP25=USB_OTG_HS
Mcu.IP20=UART7
Mcu.IP21=USART1
Mcu.IP22=USART2
Mcu.IP23=USART3
Mcu.IP24=USART10
Mcu.IP25=USB_DEVICE
Mcu.IP26=USB_OTG_HS
Mcu.IP3=DMA
Mcu.IP4=FDCAN1
Mcu.IP5=FDCAN2
@@ -439,70 +440,71 @@ Mcu.IP6=FDCAN3
Mcu.IP7=FREERTOS
Mcu.IP8=IWDG1
Mcu.IP9=MEMORYMAP
Mcu.IPNb=26
Mcu.IPNb=27
Mcu.Name=STM32H723VGTx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
Mcu.Pin1=PE3
Mcu.Pin10=PA0
Mcu.Pin11=PA2
Mcu.Pin12=PA6
Mcu.Pin13=PA7
Mcu.Pin14=PB1
Mcu.Pin15=PE7
Mcu.Pin16=PE8
Mcu.Pin17=PE9
Mcu.Pin18=PE10
Mcu.Pin19=PE12
Mcu.Pin12=PA5
Mcu.Pin13=PA6
Mcu.Pin14=PA7
Mcu.Pin15=PB1
Mcu.Pin16=PE7
Mcu.Pin17=PE8
Mcu.Pin18=PE9
Mcu.Pin19=PE10
Mcu.Pin2=PC14-OSC32_IN
Mcu.Pin20=PE13
Mcu.Pin21=PE15
Mcu.Pin22=PB10
Mcu.Pin23=PB11
Mcu.Pin24=PB13
Mcu.Pin25=PB14
Mcu.Pin26=PB15
Mcu.Pin27=PD8
Mcu.Pin28=PD9
Mcu.Pin29=PD10
Mcu.Pin20=PE12
Mcu.Pin21=PE13
Mcu.Pin22=PE15
Mcu.Pin23=PB10
Mcu.Pin24=PB11
Mcu.Pin25=PB13
Mcu.Pin26=PB14
Mcu.Pin27=PB15
Mcu.Pin28=PD8
Mcu.Pin29=PD9
Mcu.Pin3=PC15-OSC32_OUT
Mcu.Pin30=PD12
Mcu.Pin31=PD13
Mcu.Pin32=PA8
Mcu.Pin33=PA9
Mcu.Pin34=PA10
Mcu.Pin35=PA11
Mcu.Pin36=PA12
Mcu.Pin37=PC10
Mcu.Pin38=PC11
Mcu.Pin39=PC12
Mcu.Pin30=PD10
Mcu.Pin31=PD12
Mcu.Pin32=PD13
Mcu.Pin33=PA8
Mcu.Pin34=PA9
Mcu.Pin35=PA10
Mcu.Pin36=PA11
Mcu.Pin37=PA12
Mcu.Pin38=PC10
Mcu.Pin39=PC11
Mcu.Pin4=PH0-OSC_IN
Mcu.Pin40=PD0
Mcu.Pin41=PD1
Mcu.Pin42=PD2
Mcu.Pin43=PD4
Mcu.Pin44=PD5
Mcu.Pin45=PD6
Mcu.Pin46=PD7
Mcu.Pin47=PB3(JTDO/TRACESWO)
Mcu.Pin48=PB4(NJTRST)
Mcu.Pin49=PB5
Mcu.Pin40=PC12
Mcu.Pin41=PD0
Mcu.Pin42=PD1
Mcu.Pin43=PD2
Mcu.Pin44=PD4
Mcu.Pin45=PD5
Mcu.Pin46=PD6
Mcu.Pin47=PD7
Mcu.Pin48=PB3(JTDO/TRACESWO)
Mcu.Pin49=PB4(NJTRST)
Mcu.Pin5=PH1-OSC_OUT
Mcu.Pin50=PB6
Mcu.Pin51=VP_ADC3_TempSens_Input
Mcu.Pin52=VP_CRC_VS_CRC
Mcu.Pin53=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin54=VP_IWDG1_VS_IWDG
Mcu.Pin55=VP_SYS_VS_tim23
Mcu.Pin56=VP_TIM1_VS_ClockSourceINT
Mcu.Pin57=VP_TIM1_VS_no_output3
Mcu.Pin58=VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS
Mcu.Pin59=VP_MEMORYMAP_VS_MEMORYMAP
Mcu.Pin50=PB5
Mcu.Pin51=PB6
Mcu.Pin52=VP_ADC3_TempSens_Input
Mcu.Pin53=VP_CRC_VS_CRC
Mcu.Pin54=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin55=VP_IWDG1_VS_IWDG
Mcu.Pin56=VP_SYS_VS_tim23
Mcu.Pin57=VP_TIM1_VS_ClockSourceINT
Mcu.Pin58=VP_TIM1_VS_no_output3
Mcu.Pin59=VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS
Mcu.Pin6=PC0
Mcu.Pin60=VP_MEMORYMAP_VS_MEMORYMAP
Mcu.Pin7=PC1
Mcu.Pin8=PC2_C
Mcu.Pin9=PC3_C
Mcu.PinsNb=60
Mcu.PinsNb=61
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32H723VGTx
@@ -573,9 +575,11 @@ PA2.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA2.Locked=true
PA2.PinState=GPIO_PIN_SET
PA2.Signal=GPIO_Output
PA5.Mode=TX_Only_Simplex_Unidirect_Master
PA5.Signal=SPI6_SCK
PA6.Mode=Full_Duplex_Master
PA6.Signal=SPI6_MISO
PA7.Mode=Full_Duplex_Master
PA7.Mode=TX_Only_Simplex_Unidirect_Master
PA7.Signal=SPI6_MOSI
PA8.Mode=Clock-out-1
PA8.Signal=RCC_MCO_1
@@ -754,7 +758,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN2_Init-FDCAN2-false-HAL-true,5-MX_FDCAN3_Init-FDCAN3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,8-MX_FDCAN1_Init-FDCAN1-false-HAL-true,9-MX_USART10_UART_Init-USART10-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_TIM12_Init-TIM12-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART1_UART_Init-USART1-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_USART2_UART_Init-USART2-false-HAL-true,17-MX_USART3_UART_Init-USART3-false-HAL-true,18-MX_SPI1_Init-SPI1-false-HAL-true,19-MX_UART5_Init-UART5-false-HAL-true,20-MX_TIM3_Init-TIM3-false-HAL-true,21-MX_IWDG1_Init-IWDG1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN2_Init-FDCAN2-false-HAL-true,5-MX_FDCAN3_Init-FDCAN3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,8-MX_FDCAN1_Init-FDCAN1-false-HAL-true,9-MX_USART10_UART_Init-USART10-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_TIM12_Init-TIM12-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART1_UART_Init-USART1-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_USART2_UART_Init-USART2-false-HAL-true,17-MX_USART3_UART_Init-USART3-false-HAL-true,18-MX_SPI1_Init-SPI1-false-HAL-true,19-MX_UART5_Init-UART5-false-HAL-true,20-MX_TIM3_Init-TIM3-false-HAL-true,21-MX_IWDG1_Init-IWDG1-false-HAL-true,22-MX_SPI6_Init-SPI6-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=96000000
RCC.AHB12Freq_Value=240000000
RCC.AHB4Freq_Value=240000000
@@ -866,6 +870,14 @@ SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRate
SPI2.Mode=SPI_MODE_MASTER
SPI2.NSSPMode=SPI_NSS_PULSE_ENABLE
SPI2.VirtualType=VM_MASTER
SPI6.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8
SPI6.CLKPhase=SPI_PHASE_2EDGE
SPI6.CalculateBaudRate=3.0 MBits/s
SPI6.DataSize=SPI_DATASIZE_8BIT
SPI6.Direction=SPI_DIRECTION_2LINES_TXONLY
SPI6.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPhase
SPI6.Mode=SPI_MODE_MASTER
SPI6.VirtualType=VM_MASTER
TIM1.Channel-PWM\ Generation3\ No\ Output=TIM_CHANNEL_3
TIM1.IPParameters=Channel-PWM Generation3 No Output,Prescaler,Period
TIM1.Period=1999

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