[STM32H7]

使用CubMX和Proteus学习STM32单片机(三)------虚拟串口

[复制链接]
1409|20
手机看帖
扫描二维码
随时随地手机跟帖
欢乐家园|  楼主 | 2021-10-26 22:21 | 显示全部楼层 |阅读模式
项目简介        利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第三部分针对串口通信的一个实例,虚拟串口其实只是计算机以软件的方式模拟串口通信的功能,可以基本等同于实际的串口。本文主要用于对STM32串口通信的理解。

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 22:22 | 显示全部楼层
硬件模块        STM32F103R4
        串口模块

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 22:24 | 显示全部楼层
软件工具        CubMX
        Proteus
        KEIL

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 22:27 | 显示全部楼层
电路连接图        STM32F103R4
573261780fa1c0f4c.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:05 | 显示全部楼层
串口模块 26605617810624f54f.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:08 | 显示全部楼层
工作流程        首先是下载相应的虚拟串口,这里下载的是Virtual Serial Port Driver
49245617819e507c0f.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:09 | 显示全部楼层
安装好后,其使用期限是14天,后续超过这个期限重新安装即可。其使用方法也很简单,使用的时候点击“Add pair”即可,这里是已经Add了COM1和COM2之后的情况,需要注意的是用完这个虚拟串口之后记得点击“Delate All”否则会一直占用。  

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:11 | 显示全部楼层
2736861781a4943efb.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:13 | 显示全部楼层
然后创建CubMX工程,首先设置好串口      

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:14 | 显示全部楼层
9602761781b33937c6.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:14 | 显示全部楼层
     在CubMX中配置好串口中断。

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:15 | 显示全部楼层
9545461781b710739b.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:15 | 显示全部楼层
然后就是在生成的KEIL工程里面编写相应的程序啦。这部分在“程序代码”标题中有。
        最后就是在Proteus和串口调试助手上验证啦,验证结果如下图所示。

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:16 | 显示全部楼层
3791861781bb1d6c39.png

使用特权

评论回复
欢乐家园|  楼主 | 2021-10-26 23:17 | 显示全部楼层
程序代码
//重定向printf()到串口发送和接收,方便应用int fputc(int ch, FILE *f){ uint8_t temp[1] = {ch}; HAL_UART_Transmit(&huart1, temp, 1, 0xffff);return ch;}//重定向scanf()函数和getchar()函数,方便应用int fgetc(FILE * f){  uint8_t ch = 0;  HAL_UART_Receive(&huart1,&ch, 1, 0xffff);  return ch;}/**  * [url=home.php?mod=space&uid=247401]@brief[/url]  The application entry point.  * @retval int  */int main(void){  /* MCU Configuration--------------------------------------------------------*/  /* Reset of all peripherals, Initializes the Flash inteRFace and the Systick. */  HAL_Init();  /* USER CODE BEGIN Init */  /* USER CODE END Init */  /* Configure the system clock */  SystemClock_Config();  /* USER CODE BEGIN SysInit */  /* USER CODE END SysInit */  /* Initialize all configured peripherals */  MX_GPIO_Init();        MX_USART1_UART_Init();  /* USER CODE BEGIN 2 */  /* USER CODE END 2 */  /* Infinite loop */  /* USER CODE BEGIN WHILE */        printf("Hello World\n");  while(1)  {            /* USER CODE BEGIN 3 */  }  /* USER CODE END 3 */}

使用特权

评论回复
一刀一级| | 2021-11-1 09:19 | 显示全部楼层
学习学习

使用特权

评论回复
kxsi| | 2021-11-8 16:27 | 显示全部楼层
可以虚拟很多个吗

使用特权

评论回复
tfqi| | 2021-11-8 16:28 | 显示全部楼层
这个用的最广泛了

使用特权

评论回复
qcliu| | 2021-11-8 16:29 | 显示全部楼层
这种添加代码非常方便

使用特权

评论回复
nawu| | 2021-11-8 16:30 | 显示全部楼层
如何虚拟多个串口啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

879

帖子

1

粉丝