题目要求:
首先打开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);
}