base blink changed to embedded usart3

This commit is contained in:
Ivan I. Ovchinnikov
2026-07-23 22:26:09 +03:00
parent 2fe25879f3
commit 470ff37736
7 changed files with 134 additions and 21 deletions
+4 -13
View File
@@ -166,16 +166,7 @@ void StartDefaultTask(void *argument)
/* Infinite loop */
for(;;)
{
osDelay(100);
// отладочный код для проверки работы юарта и тактирования
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
// osDelay(500);
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
// osDelay(500);
// HAL_UART_Transmit(&huart2, (uint8_t*)test_msg, sizeof(test_msg)-1, 100);
// osDelay(100);
}
/* USER CODE END StartDefaultTask */
}
@@ -214,7 +205,7 @@ void StartLedTask(void *argument)
void StartUARTTask(void *argument)
{
/* USER CODE BEGIN StartUARTTask */
HAL_UART_Receive_IT(&huart2, rxBuffer, RX_BUFFER_SIZE);
HAL_UART_Receive_IT(&huart3, rxBuffer, RX_BUFFER_SIZE);
/* Infinite loop */
for(;;)
{
@@ -223,11 +214,11 @@ void StartUARTTask(void *argument)
if (rxBuffer[0] == PING) {
xTaskNotifyGive(myLedHandle);
txByte = PONG;
HAL_UART_Transmit_IT(&huart2, &txByte, 1);
HAL_UART_Transmit_IT(&huart2, &txByte, 1);
rxBuffer[0] = 0x00;
}
HAL_UART_Receive_IT(&huart2, rxBuffer, RX_BUFFER_SIZE);
HAL_UART_Receive_IT(&huart3, rxBuffer, RX_BUFFER_SIZE);
osDelay(1);
}
@@ -238,7 +229,7 @@ void StartUARTTask(void *argument)
/* USER CODE BEGIN Application */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &huart2)
if(huart == &huart3)
{
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
xTaskNotifyFromISR(myUARTHandle, 0, eNoAction, &xHigherPriorityTaskWoken);
+1
View File
@@ -94,6 +94,7 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_USART3_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
+15
View File
@@ -56,6 +56,7 @@
/* External variables --------------------------------------------------------*/
extern UART_HandleTypeDef huart2;
extern UART_HandleTypeDef huart3;
extern TIM_HandleTypeDef htim1;
/* USER CODE BEGIN EV */
@@ -189,6 +190,20 @@ void USART2_IRQHandler(void)
/* USER CODE END USART2_IRQn 1 */
}
/**
* @brief This function handles USART3 global interrupt.
*/
void USART3_IRQHandler(void)
{
/* USER CODE BEGIN USART3_IRQn 0 */
/* USER CODE END USART3_IRQn 0 */
HAL_UART_IRQHandler(&huart3);
/* USER CODE BEGIN USART3_IRQn 1 */
/* USER CODE END USART3_IRQn 1 */
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
+89
View File
@@ -25,6 +25,7 @@
/* USER CODE END 0 */
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3;
/* USART2 init function */
@@ -56,6 +57,37 @@ void MX_USART2_UART_Init(void)
/* USER CODE END USART2_Init 2 */
}
/* USART3 init function */
void MX_USART3_UART_Init(void)
{
/* USER CODE BEGIN USART3_Init 0 */
/* USER CODE END USART3_Init 0 */
/* USER CODE BEGIN USART3_Init 1 */
/* USER CODE END USART3_Init 1 */
huart3.Instance = USART3;
huart3.Init.BaudRate = 9600;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart3) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART3_Init 2 */
/* USER CODE END USART3_Init 2 */
}
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
@@ -108,6 +140,43 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
/* USER CODE END USART2_MspInit 1 */
}
else if(uartHandle->Instance==USART3)
{
/* USER CODE BEGIN USART3_MspInit 0 */
/* USER CODE END USART3_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* USART3 clock enable */
__HAL_RCC_USART3_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/**USART3 GPIO Configuration
PD8 ------> USART3_TX
PD9 ------> USART3_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/* USART3 interrupt Init */
HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(USART3_IRQn);
/* USER CODE BEGIN USART3_MspInit 1 */
/* USER CODE END USART3_MspInit 1 */
}
}
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
@@ -135,6 +204,26 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
/* USER CODE END USART2_MspDeInit 1 */
}
else if(uartHandle->Instance==USART3)
{
/* USER CODE BEGIN USART3_MspDeInit 0 */
/* USER CODE END USART3_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_USART3_CLK_DISABLE();
/**USART3 GPIO Configuration
PD8 ------> USART3_TX
PD9 ------> USART3_RX
*/
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9);
/* USART3 interrupt Deinit */
HAL_NVIC_DisableIRQ(USART3_IRQn);
/* USER CODE BEGIN USART3_MspDeInit 1 */
/* USER CODE END USART3_MspDeInit 1 */
}
}
/* USER CODE BEGIN 1 */