python和STM32数据双向调通,准备下一阶段GPS测试。
| | |
| | | #include "TCPClient.h" |
| | | #include "SBUS.h" |
| | | #include "pwm_ctrol.h" |
| | | #include "PythonLink.h" |
| | | static osSemaphoreId_t g_semaphoreHandle = NULL; |
| | | extern uint8_t restart_num; |
| | | void IdleTask(void) |
| | |
| | | TCPClient_Init(); |
| | | BT_Init(); |
| | | SBUS_Init(); |
| | | PythonLink_Init(); |
| | | while (1) |
| | | { |
| | | //HIDO_UINT32 timeout = HIDO_TimerGetNearestTimeout(1000); |
| | | HIDO_UINT32 timeout = 100; |
| | | HIDO_UINT32 timeout = 5; |
| | | if (xSemaphoreTake(g_semaphoreHandle, timeout / portTICK_PERIOD_MS) == pdTRUE) |
| | | { |
| | | |
| | |
| | | DBG_Poll(); |
| | | BT_Poll(); |
| | | SBUS_Poll(); |
| | | PythonLink_Poll(); |
| | | HIDO_ATLitePoll(); |
| | | Internet_Poll(); |
| | | GPS_Poll(); |
| | |
| | | #define configTICK_RATE_HZ ((TickType_t)1000) |
| | | #define configMAX_PRIORITIES ( 56 ) |
| | | #define configMINIMAL_STACK_SIZE ((uint16_t)128) |
| | | #define configTOTAL_HEAP_SIZE ((size_t)15360) |
| | | #define configTOTAL_HEAP_SIZE ((size_t)32768) /* å¢å å°32KBï¼å15KBå¯è½ä¸å¤ */ |
| | | #define configMAX_TASK_NAME_LEN ( 16 ) |
| | | #define configUSE_TRACE_FACILITY 1 |
| | | #define configUSE_16_BIT_TICKS 0 |
| | |
| | | void USART3_IRQHandler(void); |
| | | void DMA1_Stream7_IRQHandler(void); |
| | | void UART4_IRQHandler(void); |
| | | void UART5_IRQHandler(void); |
| | | void DMA2_Stream0_IRQHandler(void); |
| | | void DMA2_Stream1_IRQHandler(void); |
| | | void DMA2_Stream2_IRQHandler(void); |
| | | void USART6_IRQHandler(void); |
| | | void TIM17_IRQHandler(void); |
| | | /* USER CODE BEGIN EFP */ |
| | |
| | | TIM_HandleTypeDef htim4; |
| | | |
| | | UART_HandleTypeDef huart4; |
| | | UART_HandleTypeDef huart5; |
| | | UART_HandleTypeDef huart1; |
| | | UART_HandleTypeDef huart2; |
| | | UART_HandleTypeDef huart3; |
| | | UART_HandleTypeDef huart6; |
| | | DMA_HandleTypeDef hdma_uart4_rx; |
| | | DMA_HandleTypeDef hdma_uart5_rx; |
| | | DMA_HandleTypeDef hdma_uart5_tx; |
| | | DMA_HandleTypeDef hdma_usart1_rx; |
| | | DMA_HandleTypeDef hdma_usart1_tx; |
| | | DMA_HandleTypeDef hdma_usart2_rx; |
| | |
| | | static void MX_USART6_UART_Init(void); |
| | | static void MX_TIM4_Init(void); |
| | | static void MX_UART4_Init(void); |
| | | static void MX_UART5_Init(void); |
| | | void StartDefaultTask(void *argument); |
| | | |
| | | /* USER CODE BEGIN PFP */ |
| | |
| | | MX_USART6_UART_Init(); |
| | | MX_TIM4_Init(); |
| | | MX_UART4_Init(); |
| | | MX_UART5_Init(); |
| | | /* USER CODE BEGIN 2 */ |
| | | UART6_StartReceive(); |
| | | Uart_Register(UART_ID_DBG, &huart1); |
| | | Uart_Register(UART_ID_GPS, &huart2); |
| | | Uart_Register(UART_ID_4G, &huart3); |
| | | Uart_Register(UART_ID_SBUS, &huart4); |
| | | Uart_Register(UART_ID_PYTHON, &huart5); |
| | | Uart_Register(UART_ID_BT, &huart6); |
| | | |
| | | HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); // MOTOR_TIM |
| | |
| | | } |
| | | |
| | | /** |
| | | * @brief UART5 Initialization Function |
| | | * @param None |
| | | * @retval None |
| | | */ |
| | | static 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 = 921600; |
| | | huart5.Init.WordLength = UART_WORDLENGTH_8B; |
| | | huart5.Init.StopBits = UART_STOPBITS_1; |
| | | huart5.Init.Parity = UART_PARITY_NONE; |
| | | huart5.Init.Mode = UART_MODE_TX_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 */ |
| | | |
| | | } |
| | | |
| | | /** |
| | | * @brief USART1 Initialization Function |
| | | * @param None |
| | | * @retval None |
| | |
| | | /* DMA2_Stream0_IRQn interrupt configuration */ |
| | | HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn); |
| | | /* DMA2_Stream1_IRQn interrupt configuration */ |
| | | HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn); |
| | | /* DMA2_Stream2_IRQn interrupt configuration */ |
| | | HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); |
| | | |
| | | } |
| | | |
| | |
| | | /* USER CODE END Includes */ |
| | | extern DMA_HandleTypeDef hdma_uart4_rx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_uart5_rx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_uart5_tx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_usart1_rx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_usart1_tx; |
| | |
| | | |
| | | /* USER CODE END UART4_MspInit 1 */ |
| | | } |
| | | else if(huart->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(); |
| | | } |
| | | |
| | | /* Peripheral clock enable */ |
| | | __HAL_RCC_UART5_CLK_ENABLE(); |
| | | |
| | | __HAL_RCC_GPIOB_CLK_ENABLE(); |
| | | /**UART5 GPIO Configuration |
| | | PB12 ------> UART5_RX |
| | | PB13 ------> UART5_TX |
| | | */ |
| | | GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13; |
| | | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| | | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| | | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| | | GPIO_InitStruct.Alternate = GPIO_AF14_UART5; |
| | | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | |
| | | /* UART5 DMA Init */ |
| | | /* UART5_RX Init */ |
| | | hdma_uart5_rx.Instance = DMA2_Stream1; |
| | | 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_CIRCULAR; |
| | | 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(huart,hdmarx,hdma_uart5_rx); |
| | | |
| | | /* UART5_TX Init */ |
| | | hdma_uart5_tx.Instance = DMA2_Stream2; |
| | | hdma_uart5_tx.Init.Request = DMA_REQUEST_UART5_TX; |
| | | hdma_uart5_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; |
| | | hdma_uart5_tx.Init.PeriphInc = DMA_PINC_DISABLE; |
| | | hdma_uart5_tx.Init.MemInc = DMA_MINC_ENABLE; |
| | | hdma_uart5_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; |
| | | hdma_uart5_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; |
| | | hdma_uart5_tx.Init.Mode = DMA_NORMAL; |
| | | hdma_uart5_tx.Init.Priority = DMA_PRIORITY_LOW; |
| | | hdma_uart5_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; |
| | | if (HAL_DMA_Init(&hdma_uart5_tx) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | |
| | | __HAL_LINKDMA(huart,hdmatx,hdma_uart5_tx); |
| | | |
| | | /* 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(huart->Instance==USART1) |
| | | { |
| | | /* USER CODE BEGIN USART1_MspInit 0 */ |
| | |
| | | |
| | | /* USER CODE END UART4_MspDeInit 1 */ |
| | | } |
| | | else if(huart->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 |
| | | PB12 ------> UART5_RX |
| | | PB13 ------> UART5_TX |
| | | */ |
| | | HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13); |
| | | |
| | | /* UART5 DMA DeInit */ |
| | | HAL_DMA_DeInit(huart->hdmarx); |
| | | HAL_DMA_DeInit(huart->hdmatx); |
| | | |
| | | /* UART5 interrupt DeInit */ |
| | | HAL_NVIC_DisableIRQ(UART5_IRQn); |
| | | /* USER CODE BEGIN UART5_MspDeInit 1 */ |
| | | |
| | | /* USER CODE END UART5_MspDeInit 1 */ |
| | | } |
| | | else if(huart->Instance==USART1) |
| | | { |
| | | /* USER CODE BEGIN USART1_MspDeInit 0 */ |
| | |
| | | extern TIM_HandleTypeDef htim3; |
| | | extern TIM_HandleTypeDef htim4; |
| | | extern DMA_HandleTypeDef hdma_uart4_rx; |
| | | extern DMA_HandleTypeDef hdma_uart5_rx; |
| | | extern DMA_HandleTypeDef hdma_uart5_tx; |
| | | extern DMA_HandleTypeDef hdma_usart1_rx; |
| | | extern DMA_HandleTypeDef hdma_usart1_tx; |
| | | extern DMA_HandleTypeDef hdma_usart2_rx; |
| | |
| | | extern DMA_HandleTypeDef hdma_usart6_rx; |
| | | extern DMA_HandleTypeDef hdma_usart6_tx; |
| | | extern UART_HandleTypeDef huart4; |
| | | extern UART_HandleTypeDef huart5; |
| | | extern UART_HandleTypeDef huart1; |
| | | extern UART_HandleTypeDef huart2; |
| | | extern UART_HandleTypeDef huart3; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @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 DMA2 stream0 global interrupt. |
| | | */ |
| | | void DMA2_Stream0_IRQHandler(void) |
| | |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles DMA2 stream1 global interrupt. |
| | | */ |
| | | void DMA2_Stream1_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */ |
| | | |
| | | /* USER CODE END DMA2_Stream1_IRQn 0 */ |
| | | HAL_DMA_IRQHandler(&hdma_uart5_rx); |
| | | /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */ |
| | | |
| | | /* USER CODE END DMA2_Stream1_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles DMA2 stream2 global interrupt. |
| | | */ |
| | | void DMA2_Stream2_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */ |
| | | |
| | | /* USER CODE END DMA2_Stream2_IRQn 0 */ |
| | | HAL_DMA_IRQHandler(&hdma_uart5_tx); |
| | | /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */ |
| | | |
| | | /* USER CODE END DMA2_Stream2_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles USART6 global interrupt. |
| | | */ |
| | | void USART6_IRQHandler(void) |
| | |
| | | #include "GPIO.h" |
| | | #include "Uart.h" |
| | | #include "UDPClient.h" |
| | | #include "PythonLink.h" |
| | | // #include "global_param.h" |
| | | |
| | | #include "TTS.h" |
| | |
| | | l_stGPRMI.m_dLatitude = atof((HIDO_CHAR *)astFields[3].m_pData); |
| | | l_stGPRMI.m_dLongitude = atof((HIDO_CHAR *)astFields[4].m_pData); |
| | | l_stGPRMI.m_fAltitude = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[5].m_pData); |
| | | l_stGPRMI.m_fEastStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[6].m_pData); |
| | | l_stGPRMI.m_fNorthStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[7].m_pData); |
| | | l_stGPRMI.m_fLatStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[6].m_pData); |
| | | l_stGPRMI.m_fLonStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[7].m_pData); |
| | | l_stGPRMI.m_fAltStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[8].m_pData); |
| | | l_stGPRMI.m_fEastVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[9].m_pData); |
| | | l_stGPRMI.m_fNorthVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[10].m_pData); |
| | | l_stGPRMI.m_fUpVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[11].m_pData); |
| | | l_stGPRMI.m_fEastVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[12].m_pData); |
| | | l_stGPRMI.m_fNorthVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[13].m_pData); |
| | | l_stGPRMI.m_fUpVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[14].m_pData); |
| | | l_stGPRMI.m_fHorizontalVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[12].m_pData); |
| | | l_stGPRMI.m_fHeadingAngle = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[13].m_pData); |
| | | l_stGPRMI.m_fPitchAngle = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[14].m_pData); |
| | | l_stGPRMI.m_fRollAngle = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[15].m_pData); |
| | | l_stGPRMI.m_fPitchAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[16].m_pData); |
| | | l_stGPRMI.m_fRollAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[17].m_pData); |
| | | l_stGPRMI.m_fHeadingAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[18].m_pData); |
| | | l_stGPRMI.m_fHeadingAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[16].m_pData); |
| | | l_stGPRMI.m_fPitchAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[17].m_pData); |
| | | l_stGPRMI.m_fRollAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[18].m_pData); |
| | | l_stGPRMI.m_fBaselineDistance = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[19].m_pData); |
| | | l_stGPRMI.m_u8SatelliteCount = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[20].m_pData); |
| | | l_stGPRMI.m_u8ReservedFlags = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[21].m_pData); |
| | | l_stGPRMI.m_u8FixedAmbiguityCount = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[21].m_pData); |
| | | l_stGPRMI.m_u8PositionQuality = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[22].m_pData); |
| | | |
| | | l_stGPRMI.m_bValid = HIDO_TRUE; |
| | | |
| | | // ç«å³åéGPSæ°æ®å°Python (10Hzæ´æ°) |
| | | PythonLink_SendGPSData(&l_stGPRMI); |
| | | |
| | | return HIDO_OK; |
| | | } |
| | |
| | | *******************************************************************************/ |
| | | static HIDO_INT32 GPS_ParseGPIMU(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len) |
| | | { |
| | | HIDO_DataStruct astFields[9]; |
| | | HIDO_DataStruct astFields[8]; // 8ä¸ªæ°æ®å段 |
| | | HIDO_UINT8 u8CalcChecksum = 0; |
| | | HIDO_UINT32 i = 0; |
| | | HIDO_CHAR *pCheckStart = HIDO_NULL; |
| | |
| | | memset(&l_stGPIMU, 0, sizeof(ST_GPIMU)); |
| | | l_stGPIMU.m_bValid = HIDO_FALSE; |
| | | |
| | | // è§£æ9ä¸ªåæ®µ: $GPIMU,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*<CR><LF> |
| | | // è§£æ8ä¸ªåæ®µ: $GPIMU,<æ¶é´>,<AccX>,<AccY>,<AccZ>,<GyroX>,<GyroY>,<GyroZ>,<温度>*<æ ¡éªå> |
| | | // å®é
æ°æ®ç¤ºä¾: $GPIMU,102728.808,-0.010,-0.281,-1.000,0.092,-0.214,-0.031,29.00*5B |
| | | if (HIDO_UtilParseFormat((HIDO_UINT8 *)_pcData, _u32Len, |
| | | "$GPIMU,%p,%p,%p,%p,%p,%p,%p,%p,%p*%**", |
| | | "$GPIMU,%p,%p,%p,%p,%p,%p,%p,%p*%**", |
| | | &astFields[0], &astFields[1], &astFields[2], &astFields[3], |
| | | &astFields[4], &astFields[5], &astFields[6], &astFields[7], |
| | | &astFields[8]) < 10) |
| | | &astFields[4], &astFields[5], &astFields[6], &astFields[7]) < 8) |
| | | { |
| | | return HIDO_ERR; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // è§£æååæ®µ |
| | | // è§£æååæ®µ: æ¶é´ã3è½´å é度ã3è½´è§éåº¦ãæ¸©åº¦ |
| | | l_stGPIMU.m_u32UTCTime = (HIDO_UINT32)(atof((HIDO_CHAR *)astFields[0].m_pData) * 1000); // 转æ¢ä¸ºæ¯«ç§ |
| | | l_stGPIMU.m_fAccelX = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[1].m_pData); |
| | | l_stGPIMU.m_fAccelY = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[2].m_pData); |
| | |
| | | l_stGPIMU.m_fGyroZ = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[6].m_pData); |
| | | l_stGPIMU.m_fTemperature = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[7].m_pData); |
| | | |
| | | // 第9ä¸ªåæ®µæ¯å¼ææ ¡éªï¼ç´æ¥è§£æ |
| | | l_stGPIMU.m_u8Checksum = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[8].m_pData); |
| | | // æ ¡éªåå·²ç±HIDO_UtilParseFormatå¤çï¼æ ¼å¼å符串ä¸ç*%**ï¼ |
| | | l_stGPIMU.m_u8Checksum = 0; // ä¸éè¦åç¬åå¨ |
| | | |
| | | // éªè¯æ ¡éªå (æ ¹æ®ææ¡£ï¼è¿æ¯å¼ææ ¡éª) |
| | | // 注æ: ææ¡£ä¸æ¾ç¤ºæ ¡éªå¼å¨æåï¼éè¦æ ¹æ®å®é
åè®®ç¡®å®æ¯å¦éªè¯ |
| | | |
| | | l_stGPIMU.m_bValid = HIDO_TRUE; |
| | | |
| | | // ç«å³åéIMUæ°æ®å°Python (100Hzæ´æ°) |
| | | PythonLink_SendIMUData(&l_stGPIMU); |
| | | |
| | | return HIDO_OK; |
| | | } |
| | | u16 g_spsum, g_snum; |
| | |
| | | /* GPRMIæ°æ®å
ç»æ */ |
| | | typedef struct |
| | | { |
| | | HIDO_UINT32 m_u32UTCTime; // <1> UTCæ¶é´, hhmmss.ssæ ¼å¼ |
| | | HIDO_UINT16 m_u16WeekNumber; // <2> Week number, 卿° |
| | | HIDO_UINT32 m_u32TimeOfWeek; // <3> Time of week, å¨å
ç§, æ ¼å¼ä¸º(ss.mmm) |
| | | HIDO_UINT32 m_u32UTCTime; // <1> UTCæ¶é´, hhmmss.ssæ ¼å¼ |
| | | HIDO_UINT16 m_u16WeekNumber; // <2> Week number, 卿° |
| | | HIDO_UINT32 m_u32TimeOfWeek; // <3> Time of week, å¨å
ç§, æ ¼å¼ä¸º(ss.mmm) |
| | | HIDO_DOUBLE m_dLatitude; // <4> 纬度(°), æ£æ°ä¸ºå纬 |
| | | HIDO_DOUBLE m_dLongitude; // <5> ç»åº¦(°), æ£æ°ä¸ºè¥¿ç» |
| | | HIDO_DOUBLE m_dLongitude; // <5> ç»åº¦(°), æ£æ°ä¸ºä¸ç» |
| | | HIDO_FLOAT m_fAltitude; // <6> é«ç¨(m) |
| | | HIDO_FLOAT m_fEastStdDev; // <7> 纬度æ åå·®(m) |
| | | HIDO_FLOAT m_fNorthStdDev; // <8> ç»åº¦æ åå·®(m) |
| | | HIDO_FLOAT m_fLatStdDev; // <7> 纬度æ åå·®(m) |
| | | HIDO_FLOAT m_fLonStdDev; // <8> ç»åº¦æ åå·®(m) |
| | | HIDO_FLOAT m_fAltStdDev; // <9> é«ç¨æ åå·®(m) |
| | | HIDO_FLOAT m_fEastVelocity; // <10> 䏿¹åä¸çé度(m/s) |
| | | HIDO_FLOAT m_fNorthVelocity; // <11> åæ¹åä¸çé度(m/s) |
| | | HIDO_FLOAT m_fUpVelocity; // <12> 天顶æ¹åçé度(m/s) |
| | | HIDO_FLOAT m_fEastVelStdDev; // <13> æ°´å¹³é度æ åå·®(m/s) |
| | | HIDO_FLOAT m_fNorthVelStdDev; // <14> 俯仰è§(°) |
| | | HIDO_FLOAT m_fUpVelStdDev; // <15> ä¾§å¾è§(°) |
| | | HIDO_FLOAT m_fRollAngle; // <16> ç¿»æ»è§(°) |
| | | HIDO_FLOAT m_fPitchAngleStdDev; // <17> ä¿¯ä»°è§æ åå·®(°) |
| | | HIDO_FLOAT m_fRollAngleStdDev; // <18> ä¾§å¾è§æ åå·®(°) |
| | | HIDO_FLOAT m_fHeadingAngleStdDev; // <19> ç¿»æ»è§æ åå·®(°) |
| | | HIDO_FLOAT m_fHorizontalVelStdDev; // <13> æ°´å¹³é度æ åå·®(m/s) |
| | | HIDO_FLOAT m_fHeadingAngle; // <14> èªåè§(°) |
| | | HIDO_FLOAT m_fPitchAngle; // <15> 俯仰è§(°) |
| | | HIDO_FLOAT m_fRollAngle; // <16> 横æ»è§(°) |
| | | HIDO_FLOAT m_fHeadingAngleStdDev; // <17> èªåè§æ åå·®(°) |
| | | HIDO_FLOAT m_fPitchAngleStdDev; // <18> ä¿¯ä»°è§æ åå·®(°) |
| | | HIDO_FLOAT m_fRollAngleStdDev; // <19> 横æ»è§æ åå·®(°) |
| | | HIDO_FLOAT m_fBaselineDistance; // <20> åºçº¿è·ç¦»(m) |
| | | HIDO_UINT8 m_u8SatelliteCount; // <21> 天线å¯è§å«ææ°é |
| | | HIDO_UINT8 m_u8ReservedFlags; // <22> 载波æ´å¨åºå®æ¨¡ç³å¼ä¸ªæ°ï¼ä»
对åºå®å®æ´æä¹ |
| | | HIDO_UINT8 m_u8PositionQuality; // <23> å®ä½è´¨éæç¤ºï¼0=æ æï¼1=åç¹ï¼2=å·®åï¼4=åºå®ï¼5=æµ®ç¹ |
| | | HIDO_UINT8 m_u8FixedAmbiguityCount; // <22> 载波æ´å¨åºå®è§æµé个æ°(ä»
åºå®è§£ææ) |
| | | HIDO_UINT8 m_u8PositionQuality; // <23> å®ä½è´¨éæç¤º |
| | | HIDO_BOOL m_bValid; // æ°æ®æææ å¿ |
| | | }ST_GPRMI; |
| | | |
| | |
| | | #include "stm32h7xx_hal_dma.h" |
| | | #include <string.h> |
| | | #include "pwm_ctrol.h" |
| | | #include "PythonLink.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | |
| | | static HIDO_UINT32 g_u32DebugLastDmaRemaining = 0; |
| | | // SBUS failsafe active flag |
| | | static volatile HIDO_UINT8 g_bSBUSFailsafeActive = 0; |
| | | |
| | | // æ§å¶æ¨¡å¼ç¶æ (0=æå¨é¥æ§å¨, 1=èªå¨Python) |
| | | static volatile HIDO_UINT8 g_u8ControlMode = 0; |
| | | |
| | | /******************************************************************************* |
| | | * Local Function * |
| | |
| | | g_stSBUSData.m_u32LastUpdateTick = HAL_GetTick(); |
| | | g_stSBUSData.m_u32FrameCount++; |
| | | |
| | | // 5. æ£æ¥ CH8 (éé7, ç´¢å¼7) å³å®æ§å¶æ¨¡å¼ |
| | | // CH8 > 1500: èªå¨æ¨¡å¼ (Pythonæ§å¶) |
| | | // CH8 < 1500: æå¨æ¨¡å¼ (饿§å¨æ§å¶) |
| | | HIDO_UINT16 ch8_value = g_stSBUSData.m_au16Channels[7]; |
| | | if (ch8_value > 1500) |
| | | { |
| | | // èªå¨æ¨¡å¼: 䏿´æ° PWM, ç± Python æ§å¶ |
| | | g_u8ControlMode = 1; |
| | | } |
| | | else |
| | | { |
| | | // æå¨æ¨¡å¼: 使ç¨é¥æ§å¨ä¿¡å·æ§å¶ |
| | | g_u8ControlMode = 0; |
| | | } |
| | | |
| | | // è§£ææååç«å³è§¦å PWM æ§å¶ï¼æå°å»¶è¿ï¼ |
| | | // åæ¶æ¸
é¤ failsafe æ å¿ï¼å¦æä¹å触åè¿ï¼ |
| | | if (g_bSBUSFailsafeActive) |
| | | { |
| | | g_bSBUSFailsafeActive = 0; |
| | | } |
| | | SBUS_Control_PWM(); |
| | | |
| | | // åªæå¨æå¨æ¨¡å¼ä¸ææ´æ° PWM |
| | | if (g_u8ControlMode == 0) |
| | | { |
| | | SBUS_Control_PWM(); |
| | | } |
| | | |
| | | return HIDO_TRUE; |
| | | } |
| | |
| | | g_bSBUSFailsafeActive = 1; |
| | | } |
| | | } |
| | | |
| | | // èªå¨æ¨¡å¼: åºç¨Pythonä¸åçæ§å¶å½ä»¤ |
| | | if (g_u8ControlMode == 1) |
| | | { |
| | | HIDO_UINT16 steering_pwm = 1500; |
| | | HIDO_UINT16 throttle_pwm = 1500; |
| | | HIDO_UINT32 cmd_timestamp = 0; |
| | | |
| | | // è·åPythonæ§å¶å½ä»¤ |
| | | if (PythonLink_GetControl(&steering_pwm, &throttle_pwm, &cmd_timestamp) == HIDO_TRUE) |
| | | { |
| | | // åºç¨æ§å¶å½ä»¤å°PWMè¾åº |
| | | Set_Steering_Pulse(steering_pwm); |
| | | Set_Motor_Pulse(throttle_pwm); |
| | | } |
| | | else |
| | | { |
| | | // æ²¡æææçPythonå½ä»¤æ¶ï¼ä½¿ç¨å®å
¨çä¸ä½å¼ |
| | | Set_Steering_Pulse(1500); |
| | | Set_Motor_Pulse(1500); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | HIDO_Debug2("====================================\r\n\r\n"); |
| | | } |
| | | |
| | | /** |
| | | * @brief 夿æ¯å¦å¤äºèªå¨æ¨¡å¼ |
| | | * @return HIDO_TRUE: èªå¨æ¨¡å¼ (CH8 > 1500, Pythonæ§å¶) |
| | | * HIDO_FALSE: æå¨æ¨¡å¼ (CH8 < 1500, 饿§å¨æ§å¶) |
| | | */ |
| | | HIDO_BOOL SBUS_IsAutoMode(HIDO_VOID) |
| | | { |
| | | return (g_u8ControlMode == 1) ? HIDO_TRUE : HIDO_FALSE; |
| | | } |
| | |
| | | // SBUS Debug function (ä½¿ç¨ HIDO_Debug2 è¾åºå° UART_ID_DBG) |
| | | HIDO_VOID SBUS_PrintDebugInfo(void); |
| | | |
| | | /** |
| | | * @brief æ£æ¥æ¯å¦ä¸ºèªå¨æ¨¡å¼ (Pythonæ§å¶) |
| | | * - CH8 (éé7) > 1500: èªå¨æ¨¡å¼ (Pythonæ§å¶) |
| | | * - CH8 (éé7) < 1500: æå¨æ¨¡å¼ (饿§å¨æ§å¶) |
| | | * @return HIDO_TRUE: èªå¨æ¨¡å¼, HIDO_FALSE: æå¨æ¨¡å¼ |
| | | */ |
| | | HIDO_BOOL SBUS_IsAutoMode(HIDO_VOID); |
| | | |
| | | // 声æ HIDO_Debug2 彿° |
| | | extern HIDO_INT32 HIDO_Debug2(const HIDO_CHAR *_pcFmt, ...); |
| | | |
| | |
| | | /******************************************************************************* |
| | | * File Name : Uart.c |
| | | * Description : |
| | | * Created on : 2018å¹´4æ24æ¥ |
| | | * Author : æé® |
| | | * Created on : 2018��4��24�� |
| | | * Author : �ż� |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | |
| | | HIDO_UINT32 m_u32TxBufSize; |
| | | HIDO_UINT32 m_u32TxQueueMemberCnt; |
| | | HIDO_VLQStruct m_stTxVLQueue; |
| | | HIDO_BOOL m_bTxBusy; |
| | | |
| | | HIDO_UINT32 m_u32RxValue; |
| | | HIDO_UINT32 m_u32Flag; |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | static HIDO_VOID Uart_RXDMAEnable(E_UartID _eUartID) |
| | | { |
| | | /* å½äº§ç溢åºé误æ¶ï¼éè¦å°æ°æ®è¯»ç©º */ |
| | | /* �������������ʱ����Ҫ�����ݶ��� */ |
| | | while (l_astUartInfo[_eUartID].m_pstUart->Instance->ISR & UART_FLAG_ORE) |
| | | { |
| | | volatile HIDO_UINT16 u16Data = l_astUartInfo[_eUartID].m_pstUart->Instance->RDR; |
| | |
| | | l_astUartInfo[_eUartID].m_pu8RxLastPos = l_astUartInfo[_eUartID].m_pu8RxBuf; |
| | | l_astUartInfo[_eUartID].m_pu8RxBufEnd = l_astUartInfo[_eUartID].m_pu8RxBuf + l_astUartInfo[_eUartID].m_u32RxBufSize - 1; |
| | | |
| | | /* å¯å¨DMAæ¥æ¶ */ |
| | | /* ����DMA���� */ |
| | | HAL_UARTEx_ReceiveToIdle_DMA(l_astUartInfo[_eUartID].m_pstUart, l_astUartInfo[_eUartID].m_pu8RxBuf, l_astUartInfo[_eUartID].m_u32RxBufSize); |
| | | } |
| | | |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | static HIDO_VOID Uart_RXINTEnable(E_UartID _eUartID) |
| | | { |
| | | /* å½äº§ç溢åºé误æ¶ï¼éè¦å°æ°æ®è¯»ç©º */ |
| | | /* �������������ʱ����Ҫ�����ݶ��� */ |
| | | while (l_astUartInfo[_eUartID].m_pstUart->Instance->ISR & UART_FLAG_ORE) |
| | | { |
| | | volatile HIDO_UINT16 u16Data = l_astUartInfo[_eUartID].m_pstUart->Instance->RDR; |
| | |
| | | __HAL_UART_CLEAR_OREFLAG(l_astUartInfo[_eUartID].m_pstUart); |
| | | } |
| | | |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | HAL_UART_Receive_IT(l_astUartInfo[_eUartID].m_pstUart, (HIDO_UINT8 *)&l_astUartInfo[_eUartID].m_u32RxValue, sizeof(HIDO_UINT8)); |
| | | } |
| | | |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_GetHandle(E_UartID _eUartID, HIDO_VOID **_ppUart) |
| | | { |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_Register(E_UartID _eUartID, HIDO_VOID *_pUart) |
| | | { |
| | |
| | | return HIDO_ERR; |
| | | } |
| | | |
| | | /* åå§ååæ° */ |
| | | /* ��ʼ������ */ |
| | | HIDO_UtilBzero(&l_astUartInfo[_eUartID], sizeof(ST_UartInfo)); |
| | | |
| | | l_astUartInfo[_eUartID].m_pstUart = (UART_HandleTypeDef *)_pUart; |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_Init(E_UartID _eUartID, ST_UartInit *_pstInit) |
| | | { |
| | |
| | | _pstInit->m_pu8TxBuf, |
| | | _pstInit->m_u32TxBufSize, |
| | | _pstInit->m_u32TxQueueMemberCnt); |
| | | l_astUartInfo[_eUartID].m_bTxBusy = HIDO_FALSE; |
| | | } |
| | | |
| | | if (UART_RX_MODE_DMA == _pstInit->m_eRxMode) |
| | | { |
| | | /* å¯å¨DMAæ¥æ¶ */ |
| | | /* ����DMA���� */ |
| | | Uart_RXDMAEnable(_eUartID); |
| | | } |
| | | else if (UART_RX_MODE_INT == _pstInit->m_eRxMode || UART_RX_MODE_INT_ISR == _pstInit->m_eRxMode) |
| | | { |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | Uart_RXINTEnable(_eUartID); |
| | | } |
| | | |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_ReInit(E_UartID _eUartID) |
| | | { |
| | |
| | | l_astUartInfo[_eUartID].m_pu8TxBuf, |
| | | l_astUartInfo[_eUartID].m_u32TxBufSize, |
| | | l_astUartInfo[_eUartID].m_u32TxQueueMemberCnt); |
| | | l_astUartInfo[_eUartID].m_bTxBusy = HIDO_FALSE; |
| | | } |
| | | |
| | | if (UART_RX_MODE_DMA == l_astUartInfo[_eUartID].m_eRxMode) |
| | | { |
| | | /* å¯å¨DMAæ¥æ¶ */ |
| | | /* ����DMA���� */ |
| | | Uart_RXDMAEnable(_eUartID); |
| | | } |
| | | else if (UART_RX_MODE_INT == l_astUartInfo[_eUartID].m_eRxMode || UART_RX_MODE_INT_ISR == l_astUartInfo[_eUartID].m_eRxMode) |
| | | { |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | Uart_RXINTEnable(_eUartID); |
| | | } |
| | | |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_ReConfigBaudRate(E_UartID _eUartID, HIDO_UINT32 _u32BaudRate) |
| | | { |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_VOID Uart_RxErrorFromISR(HIDO_VOID *_pUart) |
| | | { |
| | |
| | | { |
| | | if (UART_RX_MODE_DMA == l_astUartInfo[eUartID].m_eRxMode) |
| | | { |
| | | /* å¯å¨DMAæ¥æ¶ */ |
| | | /* ����DMA���� */ |
| | | Uart_RXDMAEnable(eUartID); |
| | | } |
| | | else if (UART_RX_MODE_INT == l_astUartInfo[eUartID].m_eRxMode || UART_RX_MODE_INT_ISR == l_astUartInfo[eUartID].m_eRxMode) |
| | | { |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | Uart_RXINTEnable(eUartID); |
| | | } |
| | | break; |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_VOID Uart_TxOverFromISR(HIDO_VOID *_pUart) |
| | | { |
| | |
| | | HAL_UART_Transmit_DMA(l_astUartInfo[eUartID].m_pstUart, pstMember->m_pDataAddr, |
| | | pstMember->m_u32DataLen); |
| | | } |
| | | else |
| | | { |
| | | l_astUartInfo[eUartID].m_bTxBusy = HIDO_FALSE; |
| | | } |
| | | } |
| | | else if (UART_TX_MODE_INT == l_astUartInfo[eUartID].m_eTxMode) |
| | | { |
| | |
| | | HAL_UART_Transmit_IT(l_astUartInfo[eUartID].m_pstUart, pstMember->m_pDataAddr, |
| | | pstMember->m_u32DataLen); |
| | | } |
| | | else |
| | | { |
| | | l_astUartInfo[eUartID].m_bTxBusy = HIDO_FALSE; |
| | | } |
| | | } |
| | | |
| | | break; |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_VOID Uart_RxOverFromISR(HIDO_VOID *_pUart) |
| | | { |
| | |
| | | |
| | | HIDO_ArraryQueueIn(&l_astUartInfo[eUartID].m_stRxArraryQueue, &u8RecvByte); |
| | | |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | Uart_RXINTEnable(eUartID); |
| | | } |
| | | else if (UART_RX_MODE_INT_ISR == l_astUartInfo[eUartID].m_eRxMode) |
| | |
| | | l_astUartInfo[eUartID].m_fnRxISR(l_astUartInfo[eUartID].m_u32RxValue); |
| | | } |
| | | |
| | | /* å¯å¨INTæ¥æ¶ */ |
| | | /* ����INT���� */ |
| | | Uart_RXINTEnable(eUartID); |
| | | } |
| | | |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_GetChar(E_UartID _eUartID, HIDO_UINT8 *_pu8Char) |
| | | { |
| | |
| | | * Input : |
| | | * Output : |
| | | * Return : |
| | | * Author : æé® |
| | | * Modified Date: : 2018å¹´4æ24æ¥ |
| | | * Author : �ż� |
| | | * Modified Date: : 2018��4��24�� |
| | | *******************************************************************************/ |
| | | HIDO_INT32 Uart_Send(E_UartID _eUartID, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len) |
| | | { |
| | |
| | | if (UART_TX_MODE_DMA == l_astUartInfo[_eUartID].m_eTxMode) |
| | | { |
| | | HIDO_VLQMemberStruct *pstMember = HIDO_NULL; |
| | | HIDO_BOOL bStartTx = HIDO_FALSE; |
| | | |
| | | HIDO_Lock(); |
| | | pstMember = HIDO_VLQGetEnqueueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue), _u32Len); |
| | |
| | | { |
| | | HIDO_VLQEnqueue(&(l_astUartInfo[_eUartID].m_stTxVLQueue), pstMember); |
| | | memcpy(pstMember->m_pDataAddr, _pu8Data, _u32Len); |
| | | pstMember = HIDO_VLQGetDequeueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue)); |
| | | if (HIDO_FALSE == l_astUartInfo[_eUartID].m_bTxBusy) |
| | | { |
| | | l_astUartInfo[_eUartID].m_bTxBusy = HIDO_TRUE; |
| | | pstMember = HIDO_VLQGetDequeueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue)); |
| | | bStartTx = HIDO_TRUE; |
| | | } |
| | | HIDO_UnLock(); |
| | | |
| | | HAL_UART_Transmit_DMA(l_astUartInfo[_eUartID].m_pstUart, pstMember->m_pDataAddr, pstMember->m_u32DataLen); |
| | | if (bStartTx && pstMember) |
| | | { |
| | | HAL_UART_Transmit_DMA(l_astUartInfo[_eUartID].m_pstUart, pstMember->m_pDataAddr, pstMember->m_u32DataLen); |
| | | } |
| | | } |
| | | } |
| | | else if (UART_TX_MODE_INT == l_astUartInfo[_eUartID].m_eTxMode) |
| | | { |
| | | HIDO_VLQMemberStruct *pstMember = HIDO_NULL; |
| | | HIDO_BOOL bStartTx = HIDO_FALSE; |
| | | |
| | | HIDO_Lock(); |
| | | pstMember = HIDO_VLQGetEnqueueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue), _u32Len); |
| | |
| | | { |
| | | HIDO_VLQEnqueue(&(l_astUartInfo[_eUartID].m_stTxVLQueue), pstMember); |
| | | memcpy(pstMember->m_pDataAddr, _pu8Data, _u32Len); |
| | | pstMember = HIDO_VLQGetDequeueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue)); |
| | | if (HIDO_FALSE == l_astUartInfo[_eUartID].m_bTxBusy) |
| | | { |
| | | l_astUartInfo[_eUartID].m_bTxBusy = HIDO_TRUE; |
| | | pstMember = HIDO_VLQGetDequeueMember(&(l_astUartInfo[_eUartID].m_stTxVLQueue)); |
| | | bStartTx = HIDO_TRUE; |
| | | } |
| | | HIDO_UnLock(); |
| | | |
| | | HAL_UART_Transmit_IT(l_astUartInfo[_eUartID].m_pstUart, pstMember->m_pDataAddr, pstMember->m_u32DataLen); |
| | | if (bStartTx && pstMember) |
| | | { |
| | | HAL_UART_Transmit_IT(l_astUartInfo[_eUartID].m_pstUart, pstMember->m_pDataAddr, pstMember->m_u32DataLen); |
| | | } |
| | | } |
| | | } |
| | | else if (UART_TX_MODE_POLL == l_astUartInfo[_eUartID].m_eTxMode) |
| | |
| | | UART_ID_GPS, |
| | | UART_ID_BT, |
| | | UART_ID_SBUS, |
| | | UART_ID_PYTHON, |
| | | UART_ID_LAST, |
| | | }E_UartID; |
| | | |
| | |
| | | <Type>0</Type> |
| | | <LineNumber>150</LineNumber> |
| | | <EnabledFlag>1</EnabledFlag> |
| | | <Address>134543186</Address> |
| | | <Address>134545698</Address> |
| | | <ByteObject>0</ByteObject> |
| | | <HtxType>0</HtxType> |
| | | <ManyObjects>0</ManyObjects> |
| | |
| | | <Filename>..\FML\pwm_ctrol.c</Filename> |
| | | <ExecCommand></ExecCommand> |
| | | <Expression>\\STM32H743\../FML/pwm_ctrol.c\150</Expression> |
| | | </Bp> |
| | | <Bp> |
| | | <Number>1</Number> |
| | | <Type>0</Type> |
| | | <LineNumber>285</LineNumber> |
| | | <EnabledFlag>1</EnabledFlag> |
| | | <Address>134546798</Address> |
| | | <ByteObject>0</ByteObject> |
| | | <HtxType>0</HtxType> |
| | | <ManyObjects>0</ManyObjects> |
| | | <SizeOfObject>0</SizeOfObject> |
| | | <BreakByAccess>0</BreakByAccess> |
| | | <BreakIfRCount>1</BreakIfRCount> |
| | | <Filename>..\FML\SBUS.c</Filename> |
| | | <ExecCommand></ExecCommand> |
| | | <Expression>\\STM32H743\../FML/SBUS.c\285</Expression> |
| | | </Bp> |
| | | </Breakpoint> |
| | | <WatchWindow1> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <bDave2>0</bDave2> |
| | | <PathWithFileName>..\FML\PythonLink.c</PathWithFileName> |
| | | <FilenameWithoutPath>PythonLink.c</FilenameWithoutPath> |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | </Group> |
| | | |
| | | <Group> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>5</GroupNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>5</GroupNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileNumber>38</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>38</FileNumber> |
| | | <FileNumber>39</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>39</FileNumber> |
| | | <FileNumber>40</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>40</FileNumber> |
| | | <FileNumber>41</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>41</FileNumber> |
| | | <FileNumber>42</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>42</FileNumber> |
| | | <FileNumber>43</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>43</FileNumber> |
| | | <FileNumber>44</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>44</FileNumber> |
| | | <FileNumber>45</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>45</FileNumber> |
| | | <FileNumber>46</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>46</FileNumber> |
| | | <FileNumber>47</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>47</FileNumber> |
| | | <FileNumber>48</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>48</FileNumber> |
| | | <FileNumber>49</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>7</GroupNumber> |
| | | <FileNumber>49</FileNumber> |
| | | <FileNumber>50</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>50</FileNumber> |
| | | <FileNumber>51</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>51</FileNumber> |
| | | <FileNumber>52</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>52</FileNumber> |
| | | <FileNumber>53</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>53</FileNumber> |
| | | <FileNumber>54</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>54</FileNumber> |
| | | <FileNumber>55</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>55</FileNumber> |
| | | <FileNumber>56</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>56</FileNumber> |
| | | <FileNumber>57</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>57</FileNumber> |
| | | <FileNumber>58</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>58</FileNumber> |
| | | <FileNumber>59</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>59</FileNumber> |
| | | <FileNumber>60</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>9</GroupNumber> |
| | | <FileNumber>60</FileNumber> |
| | | <FileNumber>61</FileNumber> |
| | | <FileType>4</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <FileType>1</FileType> |
| | | <FilePath>..\FML\SBUS.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>PythonLink.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\FML\PythonLink.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| | |
| | | CORTEX_M7.default_mode_Activation=1 |
| | | Dma.Request0=USART1_RX |
| | | Dma.Request1=USART1_TX |
| | | Dma.Request10=UART5_TX |
| | | Dma.Request2=USART2_RX |
| | | Dma.Request3=USART2_TX |
| | | Dma.Request4=USART3_RX |
| | |
| | | Dma.Request6=USART6_RX |
| | | Dma.Request7=USART6_TX |
| | | Dma.Request8=UART4_RX |
| | | Dma.RequestsNb=9 |
| | | Dma.Request9=UART5_RX |
| | | Dma.RequestsNb=11 |
| | | Dma.UART4_RX.8.Direction=DMA_PERIPH_TO_MEMORY |
| | | Dma.UART4_RX.8.EventEnable=DISABLE |
| | | Dma.UART4_RX.8.FIFOMode=DMA_FIFOMODE_DISABLE |
| | |
| | | Dma.UART4_RX.8.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT |
| | | Dma.UART4_RX.8.SyncRequestNumber=1 |
| | | Dma.UART4_RX.8.SyncSignalID=NONE |
| | | Dma.UART5_RX.9.Direction=DMA_PERIPH_TO_MEMORY |
| | | Dma.UART5_RX.9.EventEnable=DISABLE |
| | | Dma.UART5_RX.9.FIFOMode=DMA_FIFOMODE_DISABLE |
| | | Dma.UART5_RX.9.Instance=DMA2_Stream1 |
| | | Dma.UART5_RX.9.MemDataAlignment=DMA_MDATAALIGN_BYTE |
| | | Dma.UART5_RX.9.MemInc=DMA_MINC_ENABLE |
| | | Dma.UART5_RX.9.Mode=DMA_CIRCULAR |
| | | Dma.UART5_RX.9.PeriphDataAlignment=DMA_PDATAALIGN_BYTE |
| | | Dma.UART5_RX.9.PeriphInc=DMA_PINC_DISABLE |
| | | Dma.UART5_RX.9.Polarity=HAL_DMAMUX_REQ_GEN_RISING |
| | | Dma.UART5_RX.9.Priority=DMA_PRIORITY_LOW |
| | | Dma.UART5_RX.9.RequestNumber=1 |
| | | Dma.UART5_RX.9.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber |
| | | Dma.UART5_RX.9.SignalID=NONE |
| | | Dma.UART5_RX.9.SyncEnable=DISABLE |
| | | Dma.UART5_RX.9.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT |
| | | Dma.UART5_RX.9.SyncRequestNumber=1 |
| | | Dma.UART5_RX.9.SyncSignalID=NONE |
| | | Dma.UART5_TX.10.Direction=DMA_MEMORY_TO_PERIPH |
| | | Dma.UART5_TX.10.EventEnable=DISABLE |
| | | Dma.UART5_TX.10.FIFOMode=DMA_FIFOMODE_DISABLE |
| | | Dma.UART5_TX.10.Instance=DMA2_Stream2 |
| | | Dma.UART5_TX.10.MemDataAlignment=DMA_MDATAALIGN_BYTE |
| | | Dma.UART5_TX.10.MemInc=DMA_MINC_ENABLE |
| | | Dma.UART5_TX.10.Mode=DMA_NORMAL |
| | | Dma.UART5_TX.10.PeriphDataAlignment=DMA_PDATAALIGN_BYTE |
| | | Dma.UART5_TX.10.PeriphInc=DMA_PINC_DISABLE |
| | | Dma.UART5_TX.10.Polarity=HAL_DMAMUX_REQ_GEN_RISING |
| | | Dma.UART5_TX.10.Priority=DMA_PRIORITY_LOW |
| | | Dma.UART5_TX.10.RequestNumber=1 |
| | | Dma.UART5_TX.10.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber |
| | | Dma.UART5_TX.10.SignalID=NONE |
| | | Dma.UART5_TX.10.SyncEnable=DISABLE |
| | | Dma.UART5_TX.10.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT |
| | | Dma.UART5_TX.10.SyncRequestNumber=1 |
| | | Dma.UART5_TX.10.SyncSignalID=NONE |
| | | Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY |
| | | Dma.USART1_RX.0.EventEnable=DISABLE |
| | | Dma.USART1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE |
| | |
| | | Mcu.IP10=TIM3 |
| | | Mcu.IP11=TIM4 |
| | | Mcu.IP12=UART4 |
| | | Mcu.IP13=USART1 |
| | | Mcu.IP14=USART2 |
| | | Mcu.IP15=USART3 |
| | | Mcu.IP16=USART6 |
| | | Mcu.IP13=UART5 |
| | | Mcu.IP14=USART1 |
| | | Mcu.IP15=USART2 |
| | | Mcu.IP16=USART3 |
| | | Mcu.IP17=USART6 |
| | | Mcu.IP2=DMA |
| | | Mcu.IP3=FREERTOS |
| | | Mcu.IP4=MEMORYMAP |
| | |
| | | Mcu.IP7=SYS |
| | | Mcu.IP8=TIM1 |
| | | Mcu.IP9=TIM2 |
| | | Mcu.IPNb=17 |
| | | Mcu.IPNb=18 |
| | | Mcu.Name=STM32H743VITx |
| | | Mcu.Package=LQFP100 |
| | | Mcu.Pin0=PC13 |
| | |
| | | Mcu.Pin15=PE14 |
| | | Mcu.Pin16=PB10 |
| | | Mcu.Pin17=PB11 |
| | | Mcu.Pin18=PD12 |
| | | Mcu.Pin19=PC6 |
| | | Mcu.Pin18=PB12 |
| | | Mcu.Pin19=PB13 |
| | | Mcu.Pin2=PH1-OSC_OUT (PH1) |
| | | Mcu.Pin20=PC7 |
| | | Mcu.Pin21=PA9 |
| | | Mcu.Pin22=PA10 |
| | | Mcu.Pin23=PA11 |
| | | Mcu.Pin24=PA12 |
| | | Mcu.Pin25=PA13 (JTMS/SWDIO) |
| | | Mcu.Pin26=PA14 (JTCK/SWCLK) |
| | | Mcu.Pin27=VP_FREERTOS_VS_CMSIS_V2 |
| | | Mcu.Pin28=VP_SYS_VS_tim17 |
| | | Mcu.Pin29=VP_TIM1_VS_ClockSourceINT |
| | | Mcu.Pin20=PD12 |
| | | Mcu.Pin21=PC6 |
| | | Mcu.Pin22=PC7 |
| | | Mcu.Pin23=PA9 |
| | | Mcu.Pin24=PA10 |
| | | Mcu.Pin25=PA11 |
| | | Mcu.Pin26=PA12 |
| | | Mcu.Pin27=PA13 (JTMS/SWDIO) |
| | | Mcu.Pin28=PA14 (JTCK/SWCLK) |
| | | Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2 |
| | | Mcu.Pin3=PC0 |
| | | Mcu.Pin30=VP_TIM2_VS_ClockSourceINT |
| | | Mcu.Pin31=VP_TIM3_VS_ClockSourceINT |
| | | Mcu.Pin32=VP_TIM4_VS_ClockSourceINT |
| | | Mcu.Pin33=VP_MEMORYMAP_VS_MEMORYMAP |
| | | Mcu.Pin30=VP_SYS_VS_tim17 |
| | | Mcu.Pin31=VP_TIM1_VS_ClockSourceINT |
| | | Mcu.Pin32=VP_TIM2_VS_ClockSourceINT |
| | | Mcu.Pin33=VP_TIM3_VS_ClockSourceINT |
| | | Mcu.Pin34=VP_TIM4_VS_ClockSourceINT |
| | | Mcu.Pin35=VP_MEMORYMAP_VS_MEMORYMAP |
| | | Mcu.Pin4=PC1 |
| | | Mcu.Pin5=PC2_C |
| | | Mcu.Pin6=PA0 |
| | | Mcu.Pin7=PA1 |
| | | Mcu.Pin8=PA2 |
| | | Mcu.Pin9=PA3 |
| | | Mcu.PinsNb=34 |
| | | Mcu.PinsNb=36 |
| | | Mcu.ThirdPartyNb=0 |
| | | Mcu.UserConstants= |
| | | Mcu.UserName=STM32H743VITx |
| | |
| | | NVIC.DMA1_Stream6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA1_Stream7_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA2_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA2_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA2_Stream2_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.ForceEnableDMAVector=true |
| | | NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false |
| | |
| | | NVIC.TimeBase=TIM17_IRQn |
| | | NVIC.TimeBaseIP=TIM17 |
| | | NVIC.UART4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.UART5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | |
| | | PB10.Signal=USART3_TX |
| | | PB11.Mode=Asynchronous |
| | | PB11.Signal=USART3_RX |
| | | PB12.Mode=Asynchronous |
| | | PB12.Signal=UART5_RX |
| | | PB13.Mode=Asynchronous |
| | | PB13.Signal=UART5_TX |
| | | PC0.GPIOParameters=PinState,GPIO_Label |
| | | PC0.GPIO_Label=RED |
| | | PC0.Locked=true |
| | |
| | | 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_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM1_Init-TIM1-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true,9-MX_TIM3_Init-TIM3-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_UART4_Init-UART4-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_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM1_Init-TIM1-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true,9-MX_TIM3_Init-TIM3-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_UART4_Init-UART4-false-HAL-true,13-MX_UART5_Init-UART5-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true |
| | | RCC.ADCFreq_Value=129000000 |
| | | RCC.AHB12Freq_Value=240000000 |
| | | RCC.AHB4Freq_Value=240000000 |
| | |
| | | UART4.RxPinLevelInvertParam=UART_ADVFEATURE_RXINV_ENABLE |
| | | UART4.StopBits=UART_STOPBITS_2 |
| | | UART4.WordLength=WORDLENGTH_9B |
| | | UART5.BaudRate=921600 |
| | | UART5.IPParameters=BaudRate |
| | | USART1.BaudRate=921600 |
| | | USART1.IPParameters=VirtualMode-Asynchronous,BaudRate |
| | | USART1.VirtualMode-Asynchronous=VM_ASYNC |