STM32Cube_串口的使用

STM32Cube_串口的使用

一配置串口 这里以串口2为例 如下配置

在这里插入图片描述
二配置中断优先级如下图
在这里插入图片描述
三生成代码并在代码里增加串口接收中断初始化
void MX_USART2_UART_Init(void)
{

huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
Error_Handler();
}
HAL_UART_Receive_IT(&huart2,&aRxbuff,1);
}
四 重定义void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)函数和void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
uint32_t timeout=0;
uint32_t maxDelay=0x1FFFF;
Send_Uart1[SendLen++]=aRxbuff;
if(aRxbuff==’\n’)
{
Send_Data(Send_Uart1,SendLen);
memset(Send_Uart1,0,sizeof(Send_Uart1));
SendLen=0;
}
timeout=0;
while (HAL_UART_GetState(&huart2) != HAL_UART_STATE_READY)//等待就绪
{
timeout++;超时处理
if(timeout>maxDelay) break;
}
HAL_UART_Receive_IT(&huart2, &aRxbuff, 1);

}

void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
uint32_t isrflags = READ_REG(huart->Instance->SR);
if((__HAL_UART_GET_FLAG(huart, UART_FLAG_PE))!=RESET)
{

            READ_REG(huart->Instance->DR);
				      __HAL_UART_CLEAR_PEFLAG(huart); 
            __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_PE);
    }
    if((__HAL_UART_GET_FLAG(huart, UART_FLAG_FE))!=RESET)
    {

            READ_REG(huart->Instance->DR);
				      __HAL_UART_CLEAR_FEFLAG(huart);
            __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_FE);
    }
    
    if((__HAL_UART_GET_FLAG(huart, UART_FLAG_NE))!=RESET)
    {

            READ_REG(huart->Instance->DR);
				      __HAL_UART_CLEAR_NEFLAG(huart);
            __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_NE);
    }        
    
    if((__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE))!=RESET)
    {

            READ_REG(huart->Instance->CR1);
				      __HAL_UART_CLEAR_OREFLAG(huart);
            __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_ORE);
    }        

}

详情见代码工程 附上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值