实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口

目标:

通过CubeMx实现串口收发配置,用Protues运行仿真程序,串口输入a、b、c、d等指令,进行串口调试。

CubeMx配置:

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第1张图片

 

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第2张图片

 

 

 

 

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第3张图片

 

 

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第4张图片

 

 

(1)导出源代码,并在main.c中添加如下定义,用来接收串口数据:

/* USER CODE BEGIN PV */
uint8_t aRxBuffer;			//接收中断缓冲

/* USER CODE END PV */

(2)在int main(void)主函数中,添加开启接收中断的语句:

  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);
  /* USER CODE END 2 */

(3)在main.c下部添加中断回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    unsigned char *pCmd = NULL;
    int len;
    /* Prevent unused argument(s) compilation warning */
    UNUSED(huart);
    /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_UART_TxCpltCallback could be implemented in the user file
    */
 
	switch(aRxBuffer){
        case 'a':
            pCmd = "command a\r\n";
            len  = strlen(pCmd);
            break;
        case 'b':
            pCmd = "command b\r\n";
            len  = strlen(pCmd);
            break;
        case 'c':
            pCmd = "command c\r\n";
            len  = strlen(pCmd);
            break;
        default:
            pCmd = "command cmd\r\n";
            len  = strlen(pCmd);
            break;
	}
	
    HAL_UART_Transmit(&huart1, (uint8_t *)pCmd, len,0xFFFF);
	HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);   //再开启接收中断
}
/* USER CODE END 4 */

然后建立protues工程:

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第5张图片

 

 

设置hex文件路径和单片机晶振(8M)

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第6张图片

 

设置串口物理参数以及和vspd虚拟串口的连接:

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第7张图片

 

设置串口vspd(这一步在之前已经做好了):

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第8张图片

 

启动protues仿真,打开调试串口:

实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口_第9张图片

 

如果希望在接收数据时解析参数,可以采用超时,或者\r\n的方式来分包。

到这里,本文目标就完成了,实际项目中,会加上DMA和队列来提高效率。

本次涉及到的所有代码,都已经上传到如下地址:

https://download.csdn.net/download/qq_39657229/10904927

 

你可能感兴趣的:(实验1:STM32CubeMx+Protues+VSPD仿真实现调试串口)