STM32
直播中

王越建

8年用户 1530经验值
私信 关注
[问答]

如何利用Proteus+VSPD实现仿真stm32虚拟串口?

如何利用proteus+VSPD实现仿真STM32虚拟串口?

回帖(1)

李超然

2021-11-26 16:32:30
工具软件准备



  • stm32 CubeMX
    用于创建stm32工程,如果不使用Hal库的话也可以直接用keil创建固件库工程,非必需,本实验采用CubeMX建立工程
  • keil5 / IAR
    用于编写程序。
  • Proteus
    用于绘制电路仿真原理图。
  • VSPD
    VSPD是一款虚拟串口软件,VSPD下载链接:

链接:https://pan.baidu.com/s/1AZygJCeWZfQTnxdCb_3TPg 提取码:12pm  安装以后打开,创建虚拟串口。vspd是以串口对形式添加的,比如COM1,COM2成对,那么COM1的数据就只能发到COM2,COM2会自动接收COM1发送的数据。





如图,我们就成功创建了一对虚拟串口。
5. 串口调试助手
如XCOM等均可。
Proteus工程

新建Proteus工程后,快捷键P打开元件库,选择MCU芯片型号,我这里使用stm32f103c6,并且添加其他元件,其中复位电路和外部晶振不是必需的,可以不用添加。
此外,我们需要使用DB9的串口,元件库搜索COMPIM。将stm32的TX与COMPIM的TX相连,RX与RX相连,而不是像实物那样交叉相连(RX连TX,TX连RX)。





COMPIM选项配置:





CubeMX工程配置

















串口收发程序
关于串口通信参考博客:https://blog.csdn.net/weixin_43116606/article/details/104222528


此处仅贴出部分关键代码:


/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);
user_main_printf("hello,"带火星的小木条!");
  /* USER CODE END 2 */
1
2
3
4
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    char *pCmd = NULL;
    uint8_t len;
switch(aRxBuffer){
        case '1':
            pCmd = "command 1rn";
            len  = strlen(pCmd);
            break;
        case '2':
            pCmd = "command 2rn";
            len  = strlen(pCmd);
            break;
        case '3':
            pCmd = "command 3rn";
            len  = strlen(pCmd);
            break;
    case '4':
            pCmd = "command 4rn";
            len  = strlen(pCmd);
            break;
        default:
            pCmd = "command cmdrn";
            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 */


虚拟串口仿真

回到Proteus,双击stm32芯片,加载hex文件,同时设置晶振为8M。





打开串口调试助手,选择COM2,波特率同样为9600。





先打开串口,然后运行Proteus仿真工程。





PS:虚拟串口用完以后要记得删除,不然会一直占用串口哟





最后附上本实验所用的Proteus工程和keil工程文件!
https://download.csdn.net/download/weixin_43116606/12159262
举报

更多回帖

发帖
×
20
完善资料,
赚取积分