STM32CubeMx配置工程(-)串口回调函数接收数据

一.说明

        1.本人由标准库过渡到CubeMx的HAL库,写此篇的目的是为了记住一些重要步骤。

二.CubeMx配置好基础的底层代码

        1.开启RCC时钟

        

        2.开启SYS的debug

       

         3.配置时钟树

        

        4.配置串口并开启中断

三.在keil中使用

        1.重要函数

HAL_UART_IRQHandler(UART_HandleTypeDef *huart);  //串口中断处理函数
HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);  //串口发送中断回调函数
HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);  //串口发送一半中断回调函数(用的较少)
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);  //串口接收中断回调函数
HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);//串口接收一半回调函数(用的较少)
HAL_UART_ErrorCallback();串口接收错误函数

        2.函数初始化部分需添加串口接收中断开启函数

  /* USER CODE BEGIN 2 */
	UART_Start_Receive_IT(&huart1,(uint8_t *)&rec_buffer,1);
  /* USER CODE END 2 */

        3.编写串口接收中断的回调函数(该函数被HAL库弱定义,可由用户再次编写)

        注意要重新使能接收中断

uint8_t rec_buffer;
 
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//中断回调函数
{
	UNUSED(huart);
	if(huart->Instance == USART1)//判断串口号
	{
		static uint8_t temp;
		temp = rec_buffer;
 
		if(temp == 0x01)
			HAL_GPIO_WritePin(LEDD_GPIO_Port, LEDD_Pin, GPIO_PIN_SET);
		else if(temp == 0x02)
			HAL_GPIO_WritePin(LEDD_GPIO_Port, LEDD_Pin, GPIO_PIN_RESET);
		HAL_UART_Transmit(&huart1,(uint8_t *)&rec_buffer,1,100); // 将接收到的数据再通过串口发送出去
		HAL_UART_Receive_IT(&huart1, (uint8_t *)&rec_buffer, 1);   //重新使能接收中断
	}
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值