四、【stm32】串口--以蓝桥杯13届省赛为例

题目要求:

首先打开CubeMX,配置箭头处引脚。

 按照题目要求,设置为要求的波特率:

 打开串口中断:

 设置箭头处位置:

 然后,生成代码。

 会看到串口初始化了。

 按照题目要求定义接受和发送字符长度:(usart.h)

#define Rx_Len 1  //串口接收
#define Tx_Len 40 //串口发送

在usart.c中定义如下变量:

char RxEnd_Flag = 0; // 是否接受完毕标志,若为一则接收完毕 
char USART_RxBuf[Rx_Len]; //接收
char USART_TxBuf[Tx_Len]; //发送

在usart.c中添加如下函数,是否接收完毕的回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
        RxEnd_Flag = 1;
}

逻辑部分busi.c

unsigned char Rx_Right(){
	if(USART_RxBuf[0] == '?'){
		USART_RxBuf[0] = '\0';//ÖÿÕ
		return 1;
	}
	else{
		sprintf(USART_TxBuf,"Symbol transmission error\n");
		HAL_UART_Transmit(&huart1,(unsigned char *)USART_TxBuf, strlen(USART_TxBuf), Tx_Len);
	}
	return 0;
}

void Busi_Proc(){
	if(RxEnd_Flag == 1){
		RxEnd_Flag = 0;
		if(Rx_Right()==1){//·¢ËÍÊý¾Ý
			sprintf(USART_TxBuf,"X:%d.%d,Y:%d.%d\n",X_Price/10,X_Price%10,Y_Price/10,Y_Price%10);
			HAL_UART_Transmit(&huart1,(unsigned char *)USART_TxBuf, strlen(USART_TxBuf), Tx_Len);
		}
	}
	HAL_UART_Receive_IT(&huart1, (uint8_t *)USART_RxBuf, Rx_Len);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值