Main.c
HAL_Init();
SystemClock_Config();
MX_Uart3_Init();
MX_Uart1_Init();
Stm32f4xx_hal_msp.c
UART_HandleTypeDef USART1Handle;
void MX_Uart1_Init(void)
{
USART1Handle.Instance = USART1;
USART1Handle.Init.BaudRate = 115200;
USART1Handle.Init.WordLength = UART_WORDLENGTH_8B;
USART1Handle.Init.StopBits = UART_STOPBITS_1;
USART1Handle.Init.Parity = UART_PARITY_NONE;
USART1Handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
USART1Handle.Init.Mode = UART_MODE_TX_RX;
USART1Handle.Init.OverSampling = UART_OVERSAMPLING_16;
if(HAL_UART_Init(&USART1Handle) != HAL_OK)
{
err++;
}
}
UART_HandleTypeDef USART3Handle;
int err=0;
// uart3 tx--pb10 rx---pb11
void MX_Uart3_Init(void)
{
USART3Handle.Instance = USART3;
USART3Handle.Init.BaudRate = 115200;
USART3Handle.Init.WordLength = UART_WORDLENGTH_8B;
USART3Handle.Init.StopBits = UART_STOPBITS_1;
USART3Handle.Init.Parity = UART_PARITY_NONE;
USART3Handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
USART3Handle.Init.Mode = UART_MODE_TX_RX;
USART3Handle.Init.OverSampling = UART_OVERSAMPLING_16;
if(HAL_UART_Init(&USART3Handle) != HAL_OK)
{
err++;
}
}
// uart3 tx--pb10 rx---pb11
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
if(huart->Instance ==USART3)// PB10 PB11
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_USART3_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_NVIC_SetPriority( USART3_IRQn, 2, 1);
HAL_NVIC_EnableIRQ( USART3_IRQn);
}
else if(huart->Instance ==USART1)// PA9 PA10
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_NVIC_SetPriority( USART1_IRQn, 2, 2);
HAL_NVIC_EnableIRQ( USART1_IRQn);
}
}
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
{
if(huart->Instance ==USART3) // PB10 PB11
{
__HAL_RCC_USART3_FORCE_RESET();
__HAL_RCC_USART3_RELEASE_RESET();
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11);
}
else if (huart->Instance ==USART1)// PA9 PA10
{
__HAL_RCC_USART1_FORCE_RESET();
__HAL_RCC_USART1_RELEASE_RESET();
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_10);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9);
}
}
Stm32f4xx_it.c
void USART3_IRQHandler(void)
{
HAL_UART_IRQHandler(&USART3Handle);
}
void USART1_IRQHandler(void)
{
ExCount++;
HAL_UART_IRQHandler(&USART1Handle);
}
int UartTxCount =0;
int UartRcvCount =0 ;
int UartErrCount =0 ;
int ExCount =0 ;
extern unsigned char aRxBuffer[100] ;
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle)
{
UartTxCount++;
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
UartRcvCount++;
HAL_UART_Receive_IT(&USART3Handle, (uint8_t *)aRxBuffer, 1 ); // 重新开启中断,需在初始化函数前开启中断
}
void HAL_UART_ErrorCallback(UART_HandleTypeDef *UartHandle)
{
UartErrCount++ ;
}
Uart3_thread.c
void Uart3_tread(void)
{
HAL_UART_Receive_IT(&USART3Handle, (uint8_t *)aRxBuffer, 1 ); //先开启中断,在中断函数种,需再次开启中断
while(1)
{
HAL_UART_Transmit_IT(&USART3Handle, (uint8_t*)"222222222222", 10);
rcvcount++ ;
osDelay(1000);
}
}
Stm32 HAL 库的使用---Uart:
猜你喜欢
转载自blog.csdn.net/tiger15605353603/article/details/81380301
今日推荐
周排行