打印
[STM32H7]

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

[复制链接]
1530|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
项目简介        利用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

使用特权

评论回复
5
欢乐家园|  楼主 | 2021-10-26 23:05 | 只看该作者
串口模块

使用特权

评论回复
6
欢乐家园|  楼主 | 2021-10-26 23:08 | 只看该作者
工作流程        首先是下载相应的虚拟串口,这里下载的是Virtual Serial Port Driver

使用特权

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

使用特权

评论回复
8
欢乐家园|  楼主 | 2021-10-26 23:11 | 只看该作者

使用特权

评论回复
9
欢乐家园|  楼主 | 2021-10-26 23:13 | 只看该作者
然后创建CubMX工程,首先设置好串口      

使用特权

评论回复
10
欢乐家园|  楼主 | 2021-10-26 23:14 | 只看该作者

使用特权

评论回复
11
欢乐家园|  楼主 | 2021-10-26 23:14 | 只看该作者
     在CubMX中配置好串口中断。

使用特权

评论回复
12
欢乐家园|  楼主 | 2021-10-26 23:15 | 只看该作者

使用特权

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

使用特权

评论回复
14
欢乐家园|  楼主 | 2021-10-26 23:16 | 只看该作者

使用特权

评论回复
15
欢乐家园|  楼主 | 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 */}

使用特权

评论回复
16
一刀一级| | 2021-11-1 09:19 | 只看该作者
学习学习

使用特权

评论回复
17
kxsi| | 2021-11-8 16:27 | 只看该作者
可以虚拟很多个吗

使用特权

评论回复
18
tfqi| | 2021-11-8 16:28 | 只看该作者
这个用的最广泛了

使用特权

评论回复
19
qcliu| | 2021-11-8 16:29 | 只看该作者
这种添加代码非常方便

使用特权

评论回复
20
nawu| | 2021-11-8 16:30 | 只看该作者
如何虚拟多个串口啊

使用特权

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

本版积分规则

102

主题

918

帖子

1

粉丝