STM32 HAL库串口不定字长接收(滚动数组接收)

//Cube串口中断自动生成代码部分不粘贴了。

//博主使用串口2.

//自定义一个结构体:

#define  CmdLength  1024
static USART2_Rxbuffer USART2_Rx = {0};
static uint8_t Head_flag = FALSE;

typedef struct __USART2_Rxbuffer
{
	uint32_t Head;
	uint32_t Last_head;
	uint32_t Tail;
	uint8_t huart2_Rxbuffer[CmdLength]; 
	uint8_t huart2_Rxflag;
    uint8_t Rx_Firstflag;
    uint32_t RxCounter;

} USART2_Rxbuffer;

HAL_StatusTypeDef  Usart2Recieve(uint8_t *pData)
{ 
	uint8_t i = 0;

	/* first in , hang the interrupt. */
	if (!USART2_Rx.Rx_Firstflag) 
	{
		if (HAL_UART_Receive_IT(&huart2, &USART2_Rx.huart2_Rxbuffer[USART2_Rx.RxCounter++], 1) == HAL_OK)
		{
			USART2_Rx.Head = USART2_Rx.RxCounter - 1;
			USART2_Rx.Rx_Firstflag = TRUE;
			printf("USART2_Rx interrupt Open\r\n");
		}
	}

	if (USART2_Rx.huart2_Rxflag == TRUE)
	{
		HAL_Delay(1);
		USART2_Rx.huart2_Rxflag = FALSE;
		Head_flag = TRUE;
		
		if (USART2_Rx
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值