可以啊

This commit is contained in:
Robofish 2026-01-07 19:35:53 +08:00
parent 88f306cdef
commit 51f899bada
21 changed files with 486 additions and 336 deletions

View File

@ -68,7 +68,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000) #define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 56 ) #define configMAX_PRIORITIES ( 56 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128) #define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)15360) #define configTOTAL_HEAP_SIZE ((size_t)0x10000)
#define configMAX_TASK_NAME_LEN ( 16 ) #define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0

View File

@ -69,6 +69,8 @@ void Error_Handler(void);
#define GYRO_CS_GPIO_Port GPIOC #define GYRO_CS_GPIO_Port GPIOC
#define DCMI_PWDN_Pin GPIO_PIN_5 #define DCMI_PWDN_Pin GPIO_PIN_5
#define DCMI_PWDN_GPIO_Port GPIOC #define DCMI_PWDN_GPIO_Port GPIOC
#define IMU_HEAT_Pin GPIO_PIN_1
#define IMU_HEAT_GPIO_Port GPIOB
#define ACCL_INT_Pin GPIO_PIN_10 #define ACCL_INT_Pin GPIO_PIN_10
#define ACCL_INT_GPIO_Port GPIOE #define ACCL_INT_GPIO_Port GPIOE
#define ACCL_INT_EXTI_IRQn EXTI15_10_IRQn #define ACCL_INT_EXTI_IRQn EXTI15_10_IRQn
@ -83,6 +85,8 @@ void Error_Handler(void);
#define LCD_RES_GPIO_Port GPIOB #define LCD_RES_GPIO_Port GPIOB
#define DCMI_REST_Pin GPIO_PIN_12 #define DCMI_REST_Pin GPIO_PIN_12
#define DCMI_REST_GPIO_Port GPIOB #define DCMI_REST_GPIO_Port GPIOB
#define BUZZER_Pin GPIO_PIN_15
#define BUZZER_GPIO_Port GPIOB
#define LCD_DC_Pin GPIO_PIN_10 #define LCD_DC_Pin GPIO_PIN_10
#define LCD_DC_GPIO_Port GPIOD #define LCD_DC_GPIO_Port GPIOD

View File

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

View File

@ -55,6 +55,7 @@ void DebugMon_Handler(void);
void DMA1_Stream0_IRQHandler(void); void DMA1_Stream0_IRQHandler(void);
void DMA1_Stream1_IRQHandler(void); void DMA1_Stream1_IRQHandler(void);
void DMA1_Stream2_IRQHandler(void); void DMA1_Stream2_IRQHandler(void);
void DMA1_Stream3_IRQHandler(void);
void FDCAN1_IT0_IRQHandler(void); void FDCAN1_IT0_IRQHandler(void);
void FDCAN2_IT0_IRQHandler(void); void FDCAN2_IT0_IRQHandler(void);
void FDCAN1_IT1_IRQHandler(void); void FDCAN1_IT1_IRQHandler(void);
@ -64,6 +65,7 @@ void USART1_IRQHandler(void);
void USART2_IRQHandler(void); void USART2_IRQHandler(void);
void USART3_IRQHandler(void); void USART3_IRQHandler(void);
void EXTI15_10_IRQHandler(void); void EXTI15_10_IRQHandler(void);
void UART5_IRQHandler(void);
void UART7_IRQHandler(void); void UART7_IRQHandler(void);
void USART10_IRQHandler(void); void USART10_IRQHandler(void);
void FDCAN3_IT0_IRQHandler(void); void FDCAN3_IT0_IRQHandler(void);

View File

@ -32,6 +32,8 @@ extern "C" {
/* USER CODE END Includes */ /* USER CODE END Includes */
extern UART_HandleTypeDef huart5;
extern UART_HandleTypeDef huart7; extern UART_HandleTypeDef huart7;
extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart1;
@ -46,6 +48,7 @@ extern UART_HandleTypeDef huart10;
/* USER CODE END Private defines */ /* USER CODE END Private defines */
void MX_UART5_Init(void);
void MX_UART7_Init(void); void MX_UART7_Init(void);
void MX_USART1_UART_Init(void); void MX_USART1_UART_Init(void);
void MX_USART2_UART_Init(void); void MX_USART2_UART_Init(void);

View File

@ -52,6 +52,9 @@ void MX_DMA_Init(void)
/* DMA1_Stream2_IRQn interrupt configuration */ /* DMA1_Stream2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 5, 0); HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn); HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);
/* DMA1_Stream3_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
} }

View File

@ -47,7 +47,7 @@ void MX_FDCAN1_Init(void)
hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.ProtocolException = DISABLE;
hfdcan1.Init.NominalPrescaler = 24; hfdcan1.Init.NominalPrescaler = 24;
hfdcan1.Init.NominalSyncJumpWidth = 1; hfdcan1.Init.NominalSyncJumpWidth = 1;
hfdcan1.Init.NominalTimeSeg1 = 2; hfdcan1.Init.NominalTimeSeg1 = 3;
hfdcan1.Init.NominalTimeSeg2 = 1; hfdcan1.Init.NominalTimeSeg2 = 1;
hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataPrescaler = 1;
hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.DataSyncJumpWidth = 1;
@ -95,7 +95,7 @@ void MX_FDCAN2_Init(void)
hfdcan2.Init.ProtocolException = DISABLE; hfdcan2.Init.ProtocolException = DISABLE;
hfdcan2.Init.NominalPrescaler = 24; hfdcan2.Init.NominalPrescaler = 24;
hfdcan2.Init.NominalSyncJumpWidth = 1; hfdcan2.Init.NominalSyncJumpWidth = 1;
hfdcan2.Init.NominalTimeSeg1 = 1; hfdcan2.Init.NominalTimeSeg1 = 3;
hfdcan2.Init.NominalTimeSeg2 = 1; hfdcan2.Init.NominalTimeSeg2 = 1;
hfdcan2.Init.DataPrescaler = 1; hfdcan2.Init.DataPrescaler = 1;
hfdcan2.Init.DataSyncJumpWidth = 1; hfdcan2.Init.DataSyncJumpWidth = 1;
@ -143,7 +143,7 @@ void MX_FDCAN3_Init(void)
hfdcan3.Init.ProtocolException = DISABLE; hfdcan3.Init.ProtocolException = DISABLE;
hfdcan3.Init.NominalPrescaler = 24; hfdcan3.Init.NominalPrescaler = 24;
hfdcan3.Init.NominalSyncJumpWidth = 1; hfdcan3.Init.NominalSyncJumpWidth = 1;
hfdcan3.Init.NominalTimeSeg1 = 1; hfdcan3.Init.NominalTimeSeg1 = 3;
hfdcan3.Init.NominalTimeSeg2 = 1; hfdcan3.Init.NominalTimeSeg2 = 1;
hfdcan3.Init.DataPrescaler = 1; hfdcan3.Init.DataPrescaler = 1;
hfdcan3.Init.DataSyncJumpWidth = 1; hfdcan3.Init.DataSyncJumpWidth = 1;

View File

@ -1,127 +1,127 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/** /**
****************************************************************************** ******************************************************************************
* File Name : freertos.c * File Name : freertos.c
* Description : Code for freertos applications * Description : Code for freertos applications
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* Copyright (c) 2026 STMicroelectronics. * Copyright (c) 2026 STMicroelectronics.
* All rights reserved. * All rights reserved.
* *
* This software is licensed under terms that can be found in the LICENSE file * This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component. * in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS. * If no LICENSE file comes with this software, it is provided AS-IS.
* *
****************************************************************************** ******************************************************************************
*/ */
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "task.h" #include "task.h"
#include "main.h" #include "main.h"
#include "cmsis_os.h" #include "cmsis_os.h"
/* Private includes ----------------------------------------------------------*/ /* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#include "task/user_task.h" #include "task/user_task.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */ /* USER CODE BEGIN PTD */
/* USER CODE END PTD */ /* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */ /* USER CODE BEGIN PD */
/* USER CODE END PD */ /* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */ /* USER CODE BEGIN PM */
/* USER CODE END PM */ /* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN Variables */ /* USER CODE BEGIN Variables */
/* USER CODE END Variables */ /* USER CODE END Variables */
/* Definitions for defaultTask */ /* Definitions for defaultTask */
osThreadId_t defaultTaskHandle; osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = { const osThreadAttr_t defaultTask_attributes = {
.name = "defaultTask", .name = "defaultTask",
.stack_size = 128 * 4, .stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityNormal, .priority = (osPriority_t) osPriorityNormal,
}; };
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */ /* USER CODE BEGIN FunctionPrototypes */
/* USER CODE END FunctionPrototypes */ /* USER CODE END FunctionPrototypes */
void StartDefaultTask(void *argument); void StartDefaultTask(void *argument);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/** /**
* @brief FreeRTOS initialization * @brief FreeRTOS initialization
* @param None * @param None
* @retval None * @retval None
*/ */
void MX_FREERTOS_Init(void) { void MX_FREERTOS_Init(void) {
/* USER CODE BEGIN Init */ /* USER CODE BEGIN Init */
/* USER CODE END Init */ /* USER CODE END Init */
/* USER CODE BEGIN RTOS_MUTEX */ /* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */ /* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */ /* USER CODE END RTOS_MUTEX */
/* USER CODE BEGIN RTOS_SEMAPHORES */ /* USER CODE BEGIN RTOS_SEMAPHORES */
/* add semaphores, ... */ /* add semaphores, ... */
/* USER CODE END RTOS_SEMAPHORES */ /* USER CODE END RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_TIMERS */ /* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */ /* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */ /* USER CODE END RTOS_TIMERS */
/* USER CODE BEGIN RTOS_QUEUES */ /* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */ /* add queues, ... */
/* USER CODE END RTOS_QUEUES */ /* USER CODE END RTOS_QUEUES */
/* Create the thread(s) */ /* Create the thread(s) */
/* creation of defaultTask */ /* creation of defaultTask */
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes); defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */ /* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */ /* add threads, ... */
osThreadNew(Task_Init, NULL, &attr_init); // 创建初始化任务 osThreadNew(Task_Init, NULL, &attr_init); // 创建初始化任务
/* USER CODE END RTOS_THREADS */ /* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */ /* USER CODE BEGIN RTOS_EVENTS */
/* add events, ... */ /* add events, ... */
/* USER CODE END RTOS_EVENTS */ /* USER CODE END RTOS_EVENTS */
} }
/* USER CODE BEGIN Header_StartDefaultTask */ /* USER CODE BEGIN Header_StartDefaultTask */
/** /**
* @brief Function implementing the defaultTask thread. * @brief Function implementing the defaultTask thread.
* @param argument: Not used * @param argument: Not used
* @retval None * @retval None
*/ */
/* USER CODE END Header_StartDefaultTask */ /* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument) void StartDefaultTask(void *argument)
{ {
/* USER CODE BEGIN StartDefaultTask */ /* USER CODE BEGIN StartDefaultTask */
osThreadTerminate(osThreadGetId()); osThreadTerminate(osThreadGetId());
/* USER CODE END StartDefaultTask */ /* USER CODE END StartDefaultTask */
} }
/* Private application code --------------------------------------------------*/ /* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */ /* USER CODE BEGIN Application */
/* USER CODE END Application */ /* USER CODE END Application */

View File

@ -100,7 +100,6 @@ int main(void)
MX_ADC1_Init(); MX_ADC1_Init();
MX_TIM12_Init(); MX_TIM12_Init();
MX_SPI1_Init(); MX_SPI1_Init();
MX_SPI6_Init();
MX_SPI2_Init(); MX_SPI2_Init();
MX_TIM3_Init(); MX_TIM3_Init();
MX_USART1_UART_Init(); MX_USART1_UART_Init();
@ -115,6 +114,7 @@ int main(void)
MX_TIM2_Init(); MX_TIM2_Init();
MX_OCTOSPI1_Init(); MX_OCTOSPI1_Init();
MX_USB_OTG_HS_PCD_Init(); MX_USB_OTG_HS_PCD_Init();
MX_UART5_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
/* USER CODE END 2 */ /* USER CODE END 2 */

View File

@ -26,7 +26,6 @@
SPI_HandleTypeDef hspi1; SPI_HandleTypeDef hspi1;
SPI_HandleTypeDef hspi2; SPI_HandleTypeDef hspi2;
SPI_HandleTypeDef hspi6;
DMA_HandleTypeDef hdma_spi2_rx; DMA_HandleTypeDef hdma_spi2_rx;
DMA_HandleTypeDef hdma_spi2_tx; DMA_HandleTypeDef hdma_spi2_tx;
@ -113,48 +112,6 @@ void MX_SPI2_Init(void)
/* USER CODE END SPI2_Init 2 */ /* 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_4;
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) void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
@ -287,48 +244,6 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI2_MspInit 1 */ /* 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();
__HAL_RCC_GPIOC_CLK_ENABLE();
/**SPI6 GPIO Configuration
PA7 ------> SPI6_MOSI
PC12 ------> SPI6_SCK
*/
GPIO_InitStruct.Pin = 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);
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI6;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* USER CODE BEGIN SPI6_MspInit 1 */
/* USER CODE END SPI6_MspInit 1 */
}
} }
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
@ -381,26 +296,6 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI2_MspDeInit 1 */ /* 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
PA7 ------> SPI6_MOSI
PC12 ------> SPI6_SCK
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_7);
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);
/* USER CODE BEGIN SPI6_MspDeInit 1 */
/* USER CODE END SPI6_MspDeInit 1 */
}
} }
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */

View File

@ -62,6 +62,8 @@ extern FDCAN_HandleTypeDef hfdcan3;
extern DMA_HandleTypeDef hdma_spi2_rx; extern DMA_HandleTypeDef hdma_spi2_rx;
extern DMA_HandleTypeDef hdma_spi2_tx; extern DMA_HandleTypeDef hdma_spi2_tx;
extern SPI_HandleTypeDef hspi2; extern SPI_HandleTypeDef hspi2;
extern DMA_HandleTypeDef hdma_uart5_rx;
extern UART_HandleTypeDef huart5;
extern UART_HandleTypeDef huart7; extern UART_HandleTypeDef huart7;
extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart2;
@ -213,6 +215,20 @@ void DMA1_Stream2_IRQHandler(void)
/* USER CODE END DMA1_Stream2_IRQn 1 */ /* USER CODE END DMA1_Stream2_IRQn 1 */
} }
/**
* @brief This function handles DMA1 stream3 global interrupt.
*/
void DMA1_Stream3_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
/* USER CODE END DMA1_Stream3_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_uart5_rx);
/* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
/* USER CODE END DMA1_Stream3_IRQn 1 */
}
/** /**
* @brief This function handles FDCAN1 interrupt 0. * @brief This function handles FDCAN1 interrupt 0.
*/ */
@ -340,6 +356,20 @@ void EXTI15_10_IRQHandler(void)
/* USER CODE END EXTI15_10_IRQn 1 */ /* USER CODE END EXTI15_10_IRQn 1 */
} }
/**
* @brief This function handles UART5 global interrupt.
*/
void UART5_IRQHandler(void)
{
/* USER CODE BEGIN UART5_IRQn 0 */
/* USER CODE END UART5_IRQn 0 */
HAL_UART_IRQHandler(&huart5);
/* USER CODE BEGIN UART5_IRQn 1 */
/* USER CODE END UART5_IRQn 1 */
}
/** /**
* @brief This function handles UART7 global interrupt. * @brief This function handles UART7 global interrupt.
*/ */

View File

@ -340,12 +340,12 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/**TIM3 GPIO Configuration /**TIM3 GPIO Configuration
PB1 ------> TIM3_CH4 PB1 ------> TIM3_CH4
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Pin = IMU_HEAT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(IMU_HEAT_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN TIM3_MspPostInit 1 */ /* USER CODE BEGIN TIM3_MspPostInit 1 */
@ -361,12 +361,12 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/**TIM12 GPIO Configuration /**TIM12 GPIO Configuration
PB15 ------> TIM12_CH2 PB15 ------> TIM12_CH2
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Pin = BUZZER_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM12; GPIO_InitStruct.Alternate = GPIO_AF2_TIM12;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(BUZZER_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN TIM12_MspPostInit 1 */ /* USER CODE BEGIN TIM12_MspPostInit 1 */

View File

@ -24,12 +24,57 @@
/* USER CODE END 0 */ /* USER CODE END 0 */
UART_HandleTypeDef huart5;
UART_HandleTypeDef huart7; UART_HandleTypeDef huart7;
UART_HandleTypeDef huart1; UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2; UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3; UART_HandleTypeDef huart3;
UART_HandleTypeDef huart10; UART_HandleTypeDef huart10;
DMA_HandleTypeDef hdma_uart5_rx;
/* UART5 init function */
void MX_UART5_Init(void)
{
/* USER CODE BEGIN UART5_Init 0 */
/* USER CODE END UART5_Init 0 */
/* USER CODE BEGIN UART5_Init 1 */
/* USER CODE END UART5_Init 1 */
huart5.Instance = UART5;
huart5.Init.BaudRate = 100000;
huart5.Init.WordLength = UART_WORDLENGTH_9B;
huart5.Init.StopBits = UART_STOPBITS_1;
huart5.Init.Parity = UART_PARITY_EVEN;
huart5.Init.Mode = UART_MODE_RX;
huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart5.Init.OverSampling = UART_OVERSAMPLING_16;
huart5.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart5.Init.ClockPrescaler = UART_PRESCALER_DIV1;
huart5.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart5) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetTxFifoThreshold(&huart5, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetRxFifoThreshold(&huart5, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_DisableFifoMode(&huart5) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN UART5_Init 2 */
/* USER CODE END UART5_Init 2 */
}
/* UART7 init function */ /* UART7 init function */
void MX_UART7_Init(void) void MX_UART7_Init(void)
{ {
@ -255,7 +300,71 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(uartHandle->Instance==UART7) if(uartHandle->Instance==UART5)
{
/* USER CODE BEGIN UART5_MspInit 0 */
/* USER CODE END UART5_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART5;
PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* UART5 clock enable */
__HAL_RCC_UART5_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/**UART5 GPIO Configuration
PC12 ------> UART5_TX
PD2 ------> UART5_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/* UART5 DMA Init */
/* UART5_RX Init */
hdma_uart5_rx.Instance = DMA1_Stream3;
hdma_uart5_rx.Init.Request = DMA_REQUEST_UART5_RX;
hdma_uart5_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_uart5_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_uart5_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_uart5_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_uart5_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_uart5_rx.Init.Mode = DMA_NORMAL;
hdma_uart5_rx.Init.Priority = DMA_PRIORITY_LOW;
hdma_uart5_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
if (HAL_DMA_Init(&hdma_uart5_rx) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(uartHandle,hdmarx,hdma_uart5_rx);
/* UART5 interrupt Init */
HAL_NVIC_SetPriority(UART5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(UART5_IRQn);
/* USER CODE BEGIN UART5_MspInit 1 */
/* USER CODE END UART5_MspInit 1 */
}
else if(uartHandle->Instance==UART7)
{ {
/* USER CODE BEGIN UART7_MspInit 0 */ /* USER CODE BEGIN UART7_MspInit 0 */
@ -462,7 +571,32 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{ {
if(uartHandle->Instance==UART7) if(uartHandle->Instance==UART5)
{
/* USER CODE BEGIN UART5_MspDeInit 0 */
/* USER CODE END UART5_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_UART5_CLK_DISABLE();
/**UART5 GPIO Configuration
PC12 ------> UART5_TX
PD2 ------> UART5_RX
*/
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
/* UART5 DMA DeInit */
HAL_DMA_DeInit(uartHandle->hdmarx);
/* UART5 interrupt Deinit */
HAL_NVIC_DisableIRQ(UART5_IRQn);
/* USER CODE BEGIN UART5_MspDeInit 1 */
/* USER CODE END UART5_MspDeInit 1 */
}
else if(uartHandle->Instance==UART7)
{ {
/* USER CODE BEGIN UART7_MspDeInit 0 */ /* USER CODE BEGIN UART7_MspDeInit 0 */

View File

@ -50,7 +50,8 @@ Dma.ADC1.0.SyncSignalID=NONE
Dma.Request0=ADC1 Dma.Request0=ADC1
Dma.Request1=SPI2_RX Dma.Request1=SPI2_RX
Dma.Request2=SPI2_TX Dma.Request2=SPI2_TX
Dma.RequestsNb=3 Dma.Request3=UART5_RX
Dma.RequestsNb=4
Dma.SPI2_RX.1.Direction=DMA_PERIPH_TO_MEMORY Dma.SPI2_RX.1.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI2_RX.1.EventEnable=DISABLE Dma.SPI2_RX.1.EventEnable=DISABLE
Dma.SPI2_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI2_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE
@ -87,35 +88,56 @@ Dma.SPI2_TX.2.SyncEnable=DISABLE
Dma.SPI2_TX.2.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT Dma.SPI2_TX.2.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.SPI2_TX.2.SyncRequestNumber=1 Dma.SPI2_TX.2.SyncRequestNumber=1
Dma.SPI2_TX.2.SyncSignalID=NONE Dma.SPI2_TX.2.SyncSignalID=NONE
FDCAN1.CalculateBaudRateNominal=1250000 Dma.UART5_RX.3.Direction=DMA_PERIPH_TO_MEMORY
FDCAN1.CalculateTimeBitNominal=800 Dma.UART5_RX.3.EventEnable=DISABLE
Dma.UART5_RX.3.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.UART5_RX.3.Instance=DMA1_Stream3
Dma.UART5_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.UART5_RX.3.MemInc=DMA_MINC_ENABLE
Dma.UART5_RX.3.Mode=DMA_NORMAL
Dma.UART5_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.UART5_RX.3.PeriphInc=DMA_PINC_DISABLE
Dma.UART5_RX.3.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.UART5_RX.3.Priority=DMA_PRIORITY_LOW
Dma.UART5_RX.3.RequestNumber=1
Dma.UART5_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.UART5_RX.3.SignalID=NONE
Dma.UART5_RX.3.SyncEnable=DISABLE
Dma.UART5_RX.3.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.UART5_RX.3.SyncRequestNumber=1
Dma.UART5_RX.3.SyncSignalID=NONE
FDCAN1.CalculateBaudRateNominal=1000000
FDCAN1.CalculateTimeBitNominal=1000
FDCAN1.CalculateTimeQuantumNominal=200.0 FDCAN1.CalculateTimeQuantumNominal=200.0
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1 FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1
FDCAN1.NominalPrescaler=24 FDCAN1.NominalPrescaler=24
FDCAN1.NominalTimeSeg1=2 FDCAN1.NominalTimeSeg1=3
FDCAN1.RxFifo0ElmtsNbr=32 FDCAN1.RxFifo0ElmtsNbr=32
FDCAN1.StdFiltersNbr=1 FDCAN1.StdFiltersNbr=1
FDCAN1.TxFifoQueueElmtsNbr=32 FDCAN1.TxFifoQueueElmtsNbr=32
FDCAN2.CalculateBaudRateNominal=1666666 FDCAN2.CalculateBaudRateNominal=1000000
FDCAN2.CalculateTimeBitNominal=600 FDCAN2.CalculateTimeBitNominal=1000
FDCAN2.CalculateTimeQuantumNominal=200.0 FDCAN2.CalculateTimeQuantumNominal=200.0
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1
FDCAN2.MessageRAMOffset=0x406 FDCAN2.MessageRAMOffset=0x406
FDCAN2.NominalPrescaler=24 FDCAN2.NominalPrescaler=24
FDCAN2.NominalTimeSeg1=3
FDCAN2.RxFifo0ElmtsNbr=32 FDCAN2.RxFifo0ElmtsNbr=32
FDCAN2.StdFiltersNbr=1 FDCAN2.StdFiltersNbr=1
FDCAN2.TxFifoQueueElmtsNbr=32 FDCAN2.TxFifoQueueElmtsNbr=32
FDCAN3.CalculateBaudRateNominal=1666666 FDCAN3.CalculateBaudRateNominal=1000000
FDCAN3.CalculateTimeBitNominal=600 FDCAN3.CalculateTimeBitNominal=1000
FDCAN3.CalculateTimeQuantumNominal=200.0 FDCAN3.CalculateTimeQuantumNominal=200.0
FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1
FDCAN3.MessageRAMOffset=0x812 FDCAN3.MessageRAMOffset=0x812
FDCAN3.NominalPrescaler=24 FDCAN3.NominalPrescaler=24
FDCAN3.NominalTimeSeg1=3
FDCAN3.RxFifo0ElmtsNbr=32 FDCAN3.RxFifo0ElmtsNbr=32
FDCAN3.StdFiltersNbr=1 FDCAN3.StdFiltersNbr=1
FDCAN3.TxFifoQueueElmtsNbr=32 FDCAN3.TxFifoQueueElmtsNbr=32
FREERTOS.IPParameters=Tasks01 FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE
FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
FREERTOS.configTOTAL_HEAP_SIZE=0x10000
File.Version=6 File.Version=6
GPIO.groupedBy=Group By Peripherals GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false KeepUserPlacement=false
@ -129,12 +151,12 @@ Mcu.IP10=OCTOSPI1
Mcu.IP11=RCC Mcu.IP11=RCC
Mcu.IP12=SPI1 Mcu.IP12=SPI1
Mcu.IP13=SPI2 Mcu.IP13=SPI2
Mcu.IP14=SPI6 Mcu.IP14=SYS
Mcu.IP15=SYS Mcu.IP15=TIM1
Mcu.IP16=TIM1 Mcu.IP16=TIM2
Mcu.IP17=TIM2 Mcu.IP17=TIM3
Mcu.IP18=TIM3 Mcu.IP18=TIM12
Mcu.IP19=TIM12 Mcu.IP19=UART5
Mcu.IP2=DEBUG Mcu.IP2=DEBUG
Mcu.IP20=UART7 Mcu.IP20=UART7
Mcu.IP21=USART1 Mcu.IP21=USART1
@ -160,47 +182,47 @@ Mcu.Pin12=PA1
Mcu.Pin13=PA2 Mcu.Pin13=PA2
Mcu.Pin14=PA3 Mcu.Pin14=PA3
Mcu.Pin15=PA5 Mcu.Pin15=PA5
Mcu.Pin16=PA7 Mcu.Pin16=PC4
Mcu.Pin17=PC4 Mcu.Pin17=PC5
Mcu.Pin18=PC5 Mcu.Pin18=PB0
Mcu.Pin19=PB0 Mcu.Pin19=PB1
Mcu.Pin2=PC13 Mcu.Pin2=PC13
Mcu.Pin20=PB1 Mcu.Pin20=PB2
Mcu.Pin21=PB2 Mcu.Pin21=PE7
Mcu.Pin22=PE7 Mcu.Pin22=PE8
Mcu.Pin23=PE8 Mcu.Pin23=PE9
Mcu.Pin24=PE9 Mcu.Pin24=PE10
Mcu.Pin25=PE10 Mcu.Pin25=PE11
Mcu.Pin26=PE11 Mcu.Pin26=PE12
Mcu.Pin27=PE12 Mcu.Pin27=PE13
Mcu.Pin28=PE13 Mcu.Pin28=PE15
Mcu.Pin29=PE15 Mcu.Pin29=PB10
Mcu.Pin3=PC14-OSC32_IN Mcu.Pin3=PC14-OSC32_IN
Mcu.Pin30=PB10 Mcu.Pin30=PB11
Mcu.Pin31=PB11 Mcu.Pin31=PB12
Mcu.Pin32=PB12 Mcu.Pin32=PB13
Mcu.Pin33=PB13 Mcu.Pin33=PB14
Mcu.Pin34=PB14 Mcu.Pin34=PB15
Mcu.Pin35=PB15 Mcu.Pin35=PD8
Mcu.Pin36=PD8 Mcu.Pin36=PD9
Mcu.Pin37=PD9 Mcu.Pin37=PD10
Mcu.Pin38=PD10 Mcu.Pin38=PD11
Mcu.Pin39=PD11 Mcu.Pin39=PD12
Mcu.Pin4=PC15-OSC32_OUT Mcu.Pin4=PC15-OSC32_OUT
Mcu.Pin40=PD12 Mcu.Pin40=PD13
Mcu.Pin41=PD13 Mcu.Pin41=PA8
Mcu.Pin42=PA8 Mcu.Pin42=PA9
Mcu.Pin43=PA9 Mcu.Pin43=PA10
Mcu.Pin44=PA10 Mcu.Pin44=PA11
Mcu.Pin45=PA11 Mcu.Pin45=PA12
Mcu.Pin46=PA12 Mcu.Pin46=PA13(JTMS/SWDIO)
Mcu.Pin47=PA13(JTMS/SWDIO) Mcu.Pin47=PA14(JTCK/SWCLK)
Mcu.Pin48=PA14(JTCK/SWCLK) Mcu.Pin48=PA15(JTDI)
Mcu.Pin49=PA15(JTDI) Mcu.Pin49=PC12
Mcu.Pin5=PH0-OSC_IN Mcu.Pin5=PH0-OSC_IN
Mcu.Pin50=PC12 Mcu.Pin50=PD0
Mcu.Pin51=PD0 Mcu.Pin51=PD1
Mcu.Pin52=PD1 Mcu.Pin52=PD2
Mcu.Pin53=PD4 Mcu.Pin53=PD4
Mcu.Pin54=PD5 Mcu.Pin54=PD5
Mcu.Pin55=PD6 Mcu.Pin55=PD6
@ -226,6 +248,7 @@ NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.DMA1_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.EXTI15_10_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.EXTI15_10_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.FDCAN1_IT0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.FDCAN1_IT0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
@ -249,6 +272,7 @@ NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true\:false
NVIC.TIM23_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true NVIC.TIM23_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true
NVIC.TimeBase=TIM23_IRQn NVIC.TimeBase=TIM23_IRQn
NVIC.TimeBaseIP=TIM23 NVIC.TimeBaseIP=TIM23
NVIC.UART5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.UART7_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true NVIC.UART7_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
NVIC.USART10_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true NVIC.USART10_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
NVIC.USART1_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true NVIC.USART1_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true\:true
@ -282,8 +306,6 @@ PA3.Mode=OCTOSPI1_IOL_Port1L
PA3.Signal=OCTOSPIM_P1_IO2 PA3.Signal=OCTOSPIM_P1_IO2
PA5.Locked=true PA5.Locked=true
PA5.Signal=ADCx_INP19 PA5.Signal=ADCx_INP19
PA7.Mode=TX_Only_Simplex_Unidirect_Master
PA7.Signal=SPI6_MOSI
PA8.Locked=true PA8.Locked=true
PA8.Mode=Clock-out-1 PA8.Mode=Clock-out-1
PA8.Signal=RCC_MCO_1 PA8.Signal=RCC_MCO_1
@ -293,6 +315,8 @@ PA9.Signal=USART1_TX
PB0.Locked=true PB0.Locked=true
PB0.Mode=OCTOSPI1_IOL_Port1L PB0.Mode=OCTOSPI1_IOL_Port1L
PB0.Signal=OCTOSPIM_P1_IO1 PB0.Signal=OCTOSPIM_P1_IO1
PB1.GPIOParameters=GPIO_Label
PB1.GPIO_Label=IMU_HEAT
PB1.Locked=true PB1.Locked=true
PB1.Signal=S_TIM3_CH4 PB1.Signal=S_TIM3_CH4
PB10.GPIOParameters=GPIO_Label PB10.GPIOParameters=GPIO_Label
@ -317,6 +341,8 @@ PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK PB13.Signal=SPI2_SCK
PB14.Mode=Hardware Flow Control (RS485) PB14.Mode=Hardware Flow Control (RS485)
PB14.Signal=USART3_DE PB14.Signal=USART3_DE
PB15.GPIOParameters=GPIO_Label
PB15.GPIO_Label=BUZZER
PB15.Locked=true PB15.Locked=true
PB15.Signal=S_TIM12_CH2 PB15.Signal=S_TIM12_CH2
PB2.Locked=true PB2.Locked=true
@ -342,8 +368,8 @@ PC1.GPIOParameters=GPIO_Speed
PC1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PC1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC1.Mode=Full_Duplex_Master PC1.Mode=Full_Duplex_Master
PC1.Signal=SPI2_MOSI PC1.Signal=SPI2_MOSI
PC12.Mode=TX_Only_Simplex_Unidirect_Master PC12.Mode=Asynchronous
PC12.Signal=SPI6_SCK PC12.Signal=UART5_TX
PC13.GPIOParameters=PinState,GPIO_Label PC13.GPIOParameters=PinState,GPIO_Label
PC13.GPIO_Label=POWER_24V_2 PC13.GPIO_Label=POWER_24V_2
PC13.Locked=true PC13.Locked=true
@ -395,6 +421,8 @@ PD12.Signal=FDCAN3_RX
PD13.Locked=true PD13.Locked=true
PD13.Mode=FDCAN_Activate PD13.Mode=FDCAN_Activate
PD13.Signal=FDCAN3_TX PD13.Signal=FDCAN3_TX
PD2.Mode=Asynchronous
PD2.Signal=UART5_RX
PD4.Locked=true PD4.Locked=true
PD4.Mode=Hardware Flow Control (RS485) PD4.Mode=Hardware Flow Control (RS485)
PD4.Signal=USART2_DE PD4.Signal=USART2_DE
@ -475,7 +503,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath= ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false 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_ADC1_Init-ADC1-false-HAL-true,5-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,6-MX_TIM12_Init-TIM12-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_SPI6_Init-SPI6-false-HAL-true,9-MX_SPI2_Init-SPI2-false-HAL-true,10-MX_TIM3_Init-TIM3-false-HAL-true,11-MX_USART1_UART_Init-USART1-false-HAL-true,12-MX_USART2_UART_Init-USART2-false-HAL-true,13-MX_USART3_UART_Init-USART3-false-HAL-true,14-MX_UART7_Init-UART7-false-HAL-true,15-MX_USART10_UART_Init-USART10-false-HAL-true,16-MX_FDCAN1_Init-FDCAN1-false-HAL-true,17-MX_FDCAN2_Init-FDCAN2-false-HAL-true,18-MX_FDCAN3_Init-FDCAN3-false-HAL-true,19-MX_TIM1_Init-TIM1-false-HAL-true,20-MX_TIM2_Init-TIM2-false-HAL-true,21-MX_OCTOSPI1_Init-OCTOSPI1-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_ADC1_Init-ADC1-false-HAL-true,5-MX_TIM12_Init-TIM12-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_SPI2_Init-SPI2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_USART2_UART_Init-USART2-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_USART10_UART_Init-USART10-false-HAL-true,14-MX_FDCAN1_Init-FDCAN1-false-HAL-true,15-MX_FDCAN2_Init-FDCAN2-false-HAL-true,16-MX_FDCAN3_Init-FDCAN3-false-HAL-true,17-MX_TIM1_Init-TIM1-false-HAL-true,18-MX_TIM2_Init-TIM2-false-HAL-true,19-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,20-MX_USB_OTG_HS_PCD_Init-USB_OTG_HS-false-HAL-true,21-MX_UART5_Init-UART5-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=96000000 RCC.ADCFreq_Value=96000000
RCC.AHB12Freq_Value=240000000 RCC.AHB12Freq_Value=240000000
RCC.AHB4Freq_Value=240000000 RCC.AHB4Freq_Value=240000000
@ -600,14 +628,6 @@ SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase
SPI2.Mode=SPI_MODE_MASTER SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualType=VM_MASTER SPI2.VirtualType=VM_MASTER
SPI6.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4
SPI6.CLKPhase=SPI_PHASE_2EDGE
SPI6.CalculateBaudRate=6.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\ Generation1\ CH1=TIM_CHANNEL_1 TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
TIM1.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation3 CH3,Prescaler TIM1.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation3 CH3,Prescaler
@ -631,6 +651,11 @@ TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
TIM3.IPParameters=Channel-PWM Generation4 CH4,Prescaler,Period,AutoReloadPreload TIM3.IPParameters=Channel-PWM Generation4 CH4,Prescaler,Period,AutoReloadPreload
TIM3.Period=10000-1 TIM3.Period=10000-1
TIM3.Prescaler=24-1 TIM3.Prescaler=24-1
UART5.BaudRate=100000
UART5.IPParameters=Mode,WordLength,Parity,BaudRate
UART5.Mode=MODE_RX
UART5.Parity=PARITY_EVEN
UART5.WordLength=WORDLENGTH_9B
UART7.BaudRate=921600 UART7.BaudRate=921600
UART7.IPParameters=BaudRate UART7.IPParameters=BaudRate
USART1.BaudRate=921600 USART1.BaudRate=921600

View File

@ -165,7 +165,7 @@ SECTIONS
*(.RamFunc*) /* .RamFunc* sections */ *(.RamFunc*) /* .RamFunc* sections */
. = ALIGN(4); . = ALIGN(4);
} >DTCMRAM AT> FLASH } >RAM_D1 AT> FLASH
/* Initialized TLS data section */ /* Initialized TLS data section */
.tdata : ALIGN(4) .tdata : ALIGN(4)
@ -175,7 +175,7 @@ SECTIONS
_edata = .; /* define a global symbol at data end */ _edata = .; /* define a global symbol at data end */
PROVIDE(__data_end = .); PROVIDE(__data_end = .);
PROVIDE(__tdata_end = .); PROVIDE(__tdata_end = .);
} >DTCMRAM AT> FLASH } >RAM_D1 AT> FLASH
PROVIDE( __tdata_start = ADDR(.tdata) ); PROVIDE( __tdata_start = ADDR(.tdata) );
PROVIDE( __tdata_size = __tdata_end - __tdata_start ); PROVIDE( __tdata_size = __tdata_end - __tdata_start );
@ -199,7 +199,7 @@ SECTIONS
*(.tbss .tbss.*) *(.tbss .tbss.*)
. = ALIGN(4); . = ALIGN(4);
PROVIDE( __tbss_end = . ); PROVIDE( __tbss_end = . );
} >DTCMRAM } >RAM_D1
PROVIDE( __tbss_start = ADDR(.tbss) ); PROVIDE( __tbss_start = ADDR(.tbss) );
PROVIDE( __tbss_size = __tbss_end - __tbss_start ); PROVIDE( __tbss_size = __tbss_end - __tbss_start );
@ -223,7 +223,7 @@ SECTIONS
_ebss = .; /* define a global symbol at bss end */ _ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss; __bss_end__ = _ebss;
PROVIDE( __bss_end = .); PROVIDE( __bss_end = .);
} >DTCMRAM } >RAM_D1
PROVIDE( __non_tls_bss_start = ADDR(.bss) ); PROVIDE( __non_tls_bss_start = ADDR(.bss) );
PROVIDE( __bss_start = __tbss_start ); PROVIDE( __bss_start = __tbss_start );

View File

@ -93,12 +93,12 @@ pwm:
label: TIM2_CH3 label: TIM2_CH3
timer: TIM2 timer: TIM2
- channel: TIM_CHANNEL_4 - channel: TIM_CHANNEL_4
custom_name: TIM3_CH4 custom_name: IMU_HEAT
label: TIM3_CH4 label: IMU_HEAT
timer: TIM3 timer: TIM3
- channel: TIM_CHANNEL_2 - channel: TIM_CHANNEL_2
custom_name: TIM12_CH2 custom_name: BUZZER
label: TIM12_CH2 label: BUZZER
timer: TIM12 timer: TIM12
- channel: TIM_CHANNEL_3 - channel: TIM_CHANNEL_3
custom_name: TIM1_CH3 custom_name: TIM1_CH3
@ -118,6 +118,6 @@ time:
enabled: true enabled: true
uart: uart:
devices: devices:
- instance: USART1 - instance: UART5
name: DR16 name: DR16
enabled: true enabled: true

View File

@ -25,8 +25,8 @@ extern "C" {
typedef enum { typedef enum {
BSP_PWM_TIM2_CH1, BSP_PWM_TIM2_CH1,
BSP_PWM_TIM2_CH3, BSP_PWM_TIM2_CH3,
BSP_PWM_TIM3_CH4, BSP_PWM_IMU_HEAT,
BSP_PWM_TIM12_CH2, BSP_PWM_BUZZER,
BSP_PWM_TIM1_CH3, BSP_PWM_TIM1_CH3,
BSP_PWM_TIM1_CH1, BSP_PWM_TIM1_CH1,
BSP_PWM_NUM, BSP_PWM_NUM,

View File

@ -23,7 +23,7 @@ static void (*UART_Callback[BSP_UART_NUM][BSP_UART_CB_NUM])(void);
/* Private function -------------------------------------------------------- */ /* Private function -------------------------------------------------------- */
static BSP_UART_t UART_Get(UART_HandleTypeDef *huart) { static BSP_UART_t UART_Get(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) if (huart->Instance == UART5)
return BSP_UART_DR16; return BSP_UART_DR16;
else else
return BSP_UART_ERR; return BSP_UART_ERR;
@ -114,7 +114,7 @@ void BSP_UART_IRQHandler(UART_HandleTypeDef *huart) {
UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart) { UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart) {
switch (uart) { switch (uart) {
case BSP_UART_DR16: case BSP_UART_DR16:
return &huart1; return &huart5;
default: default:
return NULL; return NULL;
} }

View File

@ -8,7 +8,7 @@ bmi088:
enabled: true enabled: true
buzzer: buzzer:
bsp_config: bsp_config:
BSP_PWM_BUZZER: BSP_PWM_TIM12_CH2 BSP_PWM_BUZZER: BSP_PWM_TIM2_CH1
enabled: true enabled: true
dr16: dr16:
bsp_config: bsp_config:

View File

@ -1,12 +1,18 @@
/* /*
atti_esit Task atti_esit Task
*/ */
/* Includes ----------------------------------------------------------------- */ /* Includes ----------------------------------------------------------------- */
#include "task/user_task.h" #include "task/user_task.h"
/* USER INCLUDE BEGIN */ /* USER INCLUDE BEGIN */
#include "bsp/gpio.h"
#include "bsp/mm.h"
#include "bsp/pwm.h"
#include "component/ahrs.h"
#include "component/pid.h"
#include "device/bmi088.h"
#include "task/user_task.h"
/* USER INCLUDE END */ /* USER INCLUDE END */
/* Private typedef ---------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */
@ -14,6 +20,27 @@
/* Private macro ------------------------------------------------------------ */ /* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */ /* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */ /* USER STRUCT BEGIN */
BMI088_t bmi088;
AHRS_t gimbal_ahrs;
AHRS_Magn_t magn;
AHRS_Eulr_t eulr_to_send;
KPID_t imu_temp_ctrl_pid;
/*默认校准参数*/
BMI088_Cali_t cali_bmi088 = {
.gyro_offset = {-0.00147764047f, -0.00273479894f, 0.00154074503f},
};
static const KPID_Params_t imu_temp_ctrl_pid_param = {
.k = 0.1f,
.p = 0.15f,
.i = 0.01f,
.d = 0.02f,
.i_limit = 1.0f,
.out_limit = 1.0f,
};
/* USER STRUCT END */ /* USER STRUCT END */
@ -22,17 +49,41 @@
void Task_atti_esit(void *argument) { void Task_atti_esit(void *argument) {
(void)argument; /* 未使用argument消除警告 */ (void)argument; /* 未使用argument消除警告 */
osDelay(ATTI_ESIT_INIT_DELAY); /* 延时一段时间再开启任务 */ osDelay(ATTI_ESIT_INIT_DELAY); /* 延时一段时间再开启任务 */
/* USER CODE INIT BEGIN */ /* USER CODE INIT BEGIN */
BMI088_Init(&bmi088, &cali_bmi088);
AHRS_Init(&gimbal_ahrs, &magn, BMI088_GetUpdateFreq(&bmi088));
PID_Init(&imu_temp_ctrl_pid, KPID_MODE_NO_D,
1.0f / BMI088_GetUpdateFreq(&bmi088), &imu_temp_ctrl_pid_param);
BSP_PWM_Start(BSP_PWM_IMU_HEAT);
/* USER CODE INIT END */ /* USER CODE INIT END */
while (1) { while (1) {
/* USER CODE BEGIN */ /* USER CODE BEGIN */
BMI088_WaitNew();
BMI088_AcclStartDmaRecv();
BMI088_AcclWaitDmaCplt();
BMI088_GyroStartDmaRecv();
BMI088_GyroWaitDmaCplt();
/* 锁住RTOS内核防止数据解析过程中断造成错误 */
osKernelLock();
/* 接收完所有数据后,把数据从原始字节加工成方便计算的数据 */
BMI088_ParseAccl(&bmi088);
BMI088_ParseGyro(&bmi088);
// IST8310_Parse(&ist8310);
/* 根据设备接收到的数据进行姿态解析 */
AHRS_Update(&gimbal_ahrs, &bmi088.accl, &bmi088.gyro, &magn);
/* 根据解析出来的四元数计算欧拉角 */
AHRS_GetEulr(&eulr_to_send, &gimbal_ahrs);
BSP_PWM_SetComp(BSP_PWM_IMU_HEAT, PID_Calc(&imu_temp_ctrl_pid, 40.5f,
bmi088.temp, 0.0f, 0.0f));
osKernelUnlock();
/* USER CODE END */ /* USER CODE END */
} }
} }

View File

@ -4,9 +4,10 @@
*/ */
/* Includes ----------------------------------------------------------------- */ /* Includes ----------------------------------------------------------------- */
#include "device/dr16.h"
#include "task/user_task.h" #include "task/user_task.h"
/* USER INCLUDE BEGIN */ /* USER INCLUDE BEGIN */
#include "device/dr16.h"
/* USER INCLUDE END */ /* USER INCLUDE END */
/* Private typedef ---------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */
@ -14,7 +15,7 @@
/* Private macro ------------------------------------------------------------ */ /* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */ /* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */ /* USER STRUCT BEGIN */
DR16_t dr16;
/* USER STRUCT END */ /* USER STRUCT END */
/* Private function --------------------------------------------------------- */ /* Private function --------------------------------------------------------- */
@ -30,13 +31,18 @@ void Task_rc(void *argument) {
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */ uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */ /* USER CODE INIT BEGIN */
DR16_Init(&dr16);
/* USER CODE INIT END */ /* USER CODE INIT END */
while (1) { while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */ tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */ /* USER CODE BEGIN */
DR16_StartDmaRecv(&dr16);
if (DR16_WaitDmaCplt(20)) {
DR16_ParseData(&dr16);
} else {
DR16_Offline(&dr16);
}
/* USER CODE END */ /* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
} }