STM32单片机学习笔记(3):虚拟串口

控制/MCU

1882人已加入

描述

项目简介

利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第三部分针对串口通信的一个实例,虚拟串口其实只是计算机以软件的方式模拟串口通信的功能,可以基本等同于实际的串口。本文主要用于对STM32串口通信的理解。

硬件模块

STM32F103R4

串口模块

软件工具

CubMX

Proteus

KEIL

威廉希尔官方网站 连接图

STM32F103R4

Proteus

串口模块

Proteus

工作流程

首先是下载相应的虚拟串口,这里下载的是Virtual Serial Port Driver软件。

Proteus

安装好后,其使用期限是14天,后续超过这个期限重新安装即可。其使用方法也很简单,使用的时候点击“Add pair”即可,这里是已经Add了COM1和COM2之后的情况,需要注意的是用完这个虚拟串口之后记得点击“Delate All”否则会一直占用。

Proteus

然后创建CubMX工程,首先设置好串口

Proteus

在CubMX中配置好串口中断。

Proteus

然后就是在生成的KEIL工程里面编写相应的程序啦。这部分在“程序代码”标题中有。

最后就是在Proteus和串口调试助手上验证啦,验证结果如下图所示。

Proteus

程序代码

//重定向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;
}


/**
  * @brief  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 Worldn");
  while(1)
  {

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分