你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

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

硬件模块
        STM32F103R4
        串口模块

软件工具
        CubMX
        Proteus
        KEIL

电路连接图
        STM32F103R4

E}T(C04BJ5VL5$XWHF0HRQU.png   

        串口模块

Q5[8P6WBF7SIA%_79{6OYD1.png
        
工作流程
        首先是下载相应的虚拟串口,这里下载的是Virtual Serial Port Driver软件。

$TOV2[@MHDR%FXV0KSWD{63.png

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

7_90JQQ@DSHV1VWQEF]9M(0.png

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

7%)THV_Q)5RXA)D9V`@G%U6.png

        在CubMX中配置好串口中断。

V(1FT5H$SAJ()NETE$P@0ZR.png

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

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

ZDL}VZCU1E)Q]4]{@ZDW.png   

程序代码

  1. //重定向printf()到串口发送和接收,方便应用
  2. int fputc(int ch, FILE *f){
  3. uint8_t temp[1] = {ch};
  4. HAL_UART_Transmit(&huart1, temp, 1, 0xffff);
  5. return ch;
  6. }
  7. //重定向scanf()函数和getchar()函数,方便应用
  8. int fgetc(FILE * f)
  9. {
  10.   uint8_t ch = 0;
  11.   HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
  12.   return ch;
  13. }

  14. /**
  15.   * @brief  The application entry point.
  16.   * @retval int
  17.   */
  18. int main(void)
  19. {
  20.   /* MCU Configuration--------------------------------------------------------*/

  21.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  22.   HAL_Init();

  23.   /* USER CODE BEGIN Init */

  24.   /* USER CODE END Init */

  25.   /* Configure the system clock */
  26.   SystemClock_Config();

  27.   /* USER CODE BEGIN SysInit */

  28.   /* USER CODE END SysInit */

  29.   /* Initialize all configured peripherals */
  30.   MX_GPIO_Init();
  31.         MX_USART1_UART_Init();
  32.   /* USER CODE BEGIN 2 */

  33.   /* USER CODE END 2 */

  34.   /* Infinite loop */
  35.   /* USER CODE BEGIN WHILE */
  36.         printf("Hello World\n");
  37.   while(1)
  38.   {

  39.     /* USER CODE BEGIN 3 */
  40.   }
  41.   /* USER CODE END 3 */
  42. }
复制代码

转载自:jxjajl

收藏 评论0 发布时间:2022-12-31 18:51

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版