首页 > 编程语言 >记录STM32串口通信调试的若干问题(基于HAL库)(一)硬件选型和编程环境配置

记录STM32串口通信调试的若干问题(基于HAL库)(一)硬件选型和编程环境配置

时间:2025-01-20 12:55:11浏览次数:1  
标签:插件 HAL VSCode 配置 STM32 下载 模块 串口 调试

由于遇人不淑,项目经验坑爹(永远不要指望学校和导师),本电子类科班生硬是被整成了四不像工程师,不得不自学来找到对口的工作。本文记录STM32开发的历程,有一样的初学者可以参考借鉴。
一. 硬件设施
1.STM32F103C8T6最小系统 系统板采用stm32f103c8t6最小系统板,某宝某猫上一杯奶茶的钱即可买到

最小系统包含了电源电路(3.3V稳压),外部时钟晶振,复位电路,SWD调试接口,USB接口(串行下载),启动(BOOT)模式选择, 启动模式的选择是通过跳帽控制引脚电平实现的,串行模式要把BOOT0置1,用仿真器的不用改动。

  1. STLink-V2仿真器

    这个是ST公司发行的配套STM8和STM32系列控制器的仿真器,可以调试和下载程序,把V3,GND,SWDIO,SWCLK与系统板上 的引脚连接即可下载和调试程序,最好买进口的,略贵但兼容性好。 3. 其他外设 带有UART串口的外设,本次使用EBYTE的E32-433T20S模块测试无线传输,注意该模块需要买两个同型号的,否则无法通 信,略贵,为了学习还是忽略这点成本。。
  • 该模块支持透明/定点传输
  • 带唤醒帧的透明/定点传输
  • 省电模式,休眠模式(配置模式)
  • 带有UART通信接口,可外接天线
  • 5V/3.3V供电,AUX信号输出,AT命令配置

典型接线如下,M0,M1两个引脚用于选择工作模式:
另一个无线模块通过TTL转USB接到PC端,这个模块使用前记得安装CH341驱动:
安装驱动后接上USB口电脑就会扫描到串行设备,可以用串口调试工具向模块发送数据测试功能是否正常:
使用AT命令可以看到设备返回了型号,说明模块能正常响应命令,再打开一个COM口测试两个模块的定点传输功能,使用16 进制发送数据,可以观察到两方都能接收到对方发送的AA BB CC,这说明无线通信功能正常。

二. 开发软件

开发软件选择VSCode,相比于MDK有着舒服的编程界面,相比于其他IDE轻便许多,缺点是对于计算机知识不够的入门 程序员来说配置过程非常痛苦。。。对于学生来说,MDK应该是更好的选择,之所以我选择VSCode是因为MDK界面实在太 丑,关键是写代码提示太少,有时候还不响应,32的HAL库很多宏和变量名都巨长,在记忆不深的情况下非常影响编程效 率,而且VSCode还能写其它语言的代码,一举多得。 VSCode本身是不具备嵌入式开发功能的,它只是个编辑器,编译依赖于用户设置的外部编译器,为了在VSCode中实现 STM32的开发工作,需要先安装一些必要的插件:

(必选项)

  1. EIDE(Embedded IDE)
    国人开发的插件,操作简单界面简洁,必须五星好评,支持导入MDK工程,cubeIDE工程,当然也可以用Makefile编译(目前 不会),安装后可以在界面上看到左边栏多了一个芯片的图标,打开就是EIDE,可以在EIDE的工程栏配置项目文件,设置编 译器,设置烧写及debug工具,在代码区的右上角也能看到编译,下载的按钮。

  2. C/C++
    无需多言,嵌入式没有C等于四肢不健全。

  3. Cortex-Debug
    调试Cortex-M内核的芯片必备的插件,提供了寄存器、内存单元的监控功能,也提供了Jlink,STlink等仿真器的调试功 能,安装了这个插件后会提示缺少几个依赖项,把它们都装好即可。

  4. code Runner
    image
    代码想跑起来得依靠这个插件

(可选项)
5. Serial Monitor
可装可不装,因为它就是一个串口调试器,为了方便在一个窗口下调试就安装。
6. Tabnine AI
AI辅助工具,能自动联想补全代码,可以提高编程效率。

其他的插件根据使用者的习惯可自行添加。

三、环境配置

VSCode的环境配置对于用惯了IDE的人来说非常不友好,在VS中只要代码一写,F5,F7直接就跑起来了,可惜的是VSCode中这样连一米都滚不出去,首先你得有高级语言的代码支持,然后编辑器想要让代码跑起来要有编译环境,还得用脚本语言告诉编辑器,编译器在哪,调用gdb还是gcc,头文件从哪里引入,生成什么文件;使用IDE只要安装了某一种高级语言支持,后面这些都不是你考虑得事,相当于使用VSCode编程就是自己动手,丰衣足食,每天要想着吃什么,买什么菜,优点是高度的自由性,而使用IDE就像雇保姆,保姆有自己的一套法则,你想改变可不容易,而且还占用你家资源(庞大的体积)。为了自由和空间,我们还是选择了VSCode,在安装第二章的插件后,还有一些环境需要配置。

  1. 下载GCC工具链
    前往Arm官网下载GCC工具链交叉编译工具链这个压缩包解压后,需要添加到环境变量,配置在系统->系统信息->高级系统设置->环境变量->系统变量->Path中输入压缩包bin文件的路径。
    image

注意与自己处理器的指令集对应,或者可以直接在EIDE中选择安装实用工具->GNU Arm Embedded ToolChain,相比于手动下载不会出现环境配置问题,傻瓜式操作即可。
image

  1. 下载OpenOCD
    这个压缩包内包含了debug所需的配置文件,OpenOCD下载压缩包解压后,在VSCode的配置中搜索EIDE扩展项,找到OpenOCD路径设置:
    image
    选择解压的路径即可。

至此,项目前期准备工作基本完成,下一次将分享项目创建和功能实现的若干内容。

未完待续……

标签:插件,HAL,VSCode,配置,STM32,下载,模块,串口,调试
From: https://www.cnblogs.com/memleak/p/18664775

相关文章

  • STM32江科大————DMA数据转运(实现AD多通道)
    声明:本人跟随b站江科大学习,本文章是观看完视频后的一些个人总结和经验分享,也同时为了方便日后的复习,如果有错误请各位大佬指出,如果对你有帮助可以点个赞小小鼓励一下,本文章建议配合原视频使用❤️如果你也正在学习STM32可以订阅本专栏,后续将不定期更新(˘³˘)❤️......
  • 树莓派串口通信开发记录
    树莓派开发记录:开发系统及代码编辑软件安装1.通过安装软件RasperryPiImager实现系统镜像流程化烧写进SD卡2.在VScode官网选择相对应的基于树莓派ARM64或32架构的版本,下载相应的deb文件:sudodpkg-iDesktop/code_1.60.2-1632316275_armhf.deb(替换为自己的路径)3.在命......
  • STM32之CubeMX新建工程操作(十八)
    STM32F407系列文章- STM32CubeMX(十八)目录前言一、STM32CubeMX二、新建工程​编辑1.创建工程2.选择芯片型号3.Pinout引脚分配1.SYS配置2.RCC配置3.定时器配置4.GPIO引脚配置5.中断配置6.通讯接口配置7.插件Middleware配置4.Clock时钟树配置5.工程管理Proje......
  • STM32单片机学习记录(1.17)
    一、STM32        10.3- I2C通信外设        1. I2C外设简介        (1)STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担;        (2)支持......
  • STM32单片机的学习总结
    从计算机基础、寄存器知识、汇编指令、中断以及各外设驱动的开发,单片机底层经过这段时间的学习做一个总结。计算机组成计算机由输入设备、输出设备、控制器、运算器、存储器组成,存储器分为外部存储器、内部存储器、高速缓存、寄存器,在单片机底层开发中,主要使用寄存器对某一地......
  • 【STM32-学习笔记-7-】USART串口通信
    文章目录USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART......
  • 【STM32-学习笔记-8-】I2C通信
    文章目录I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元①起始条件②终止条件③发送一个字节④接收一个字节⑤发送应答⑥接收应答Ⅲ、IIC时序①指定地址写②当前地址读③指定地址读Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地址3、软件模拟IIC①......
  • 【STM32-学习笔记-9-】SPI通信
    文章目录SPI通信Ⅰ、SPI通信概述1、SPI技术规格2、SPI应用3、硬件电路移位示意图Ⅱ、SPI时序基本单元①、起始条件②、终止条件③、交换一个字节(模式0)④、交换一个字节(模式1)⑤、交换一个字节(模式2)⑥、交换一个字节(模式3)Ⅲ、SPI时序①、发送指令②、指定地址写③、指......
  • 单片机毕业设计之stm32单片机物联网远程心率血氧MAX30102健康监控系统,老人健康监测+行
    一、设计简介        本项目旨在利用STM32F103C8T6微控制器为核心,构建一个实时人体健康监测系统。该系统集成了多种传感器和模块,能够全面、准确地监测并显示人体的关键健康数据,同时提供异常报警功能,还通过蓝牙通信功能实现了数据的远程传输和记录,方便用户随时了解自己......
  • STM32CUBEIDE编译出现elf has a LOAD segment with RWX permissions警告
    问题:STM32CubeIDE更新到1.15.0后在链接时会warning:xxx.elfhasaLOADsegmentwithRWXpermissions。解决办法:设置Project->Properties->C/C++Build->Settings->ToolSettings->MCUGCCLinker->Miscellaneous->Add…添加:-Wl,–no-warn-rwx-segment然后重新编......