首页 > 系统相关 >在linux系统下搭建STM32单片机开发环境

在linux系统下搭建STM32单片机开发环境

时间:2023-04-17 18:44:57浏览次数:34  
标签:文件 keil vscode STM32 单片机 报错 linux

在linux系统下搭建STM32单片机开发环境的记录

目录

前言

懒得说了,过后再补

准备

ubuntu系统,vscode,交叉编译工具链gcc-arm-none-eabi,还需要一个下载软件,我还没装

安装交叉编译工具链

ubuntu系统可直接运行下面的命令直接安装

sudo apt install gcc-arm-none-eabi  #这里不知道为什么apt-get安装显示没找到包,apt就找到了。

这里是通过系统命令安装的,会安装在/usr/bin目录下,我们就不需要配置环境变量了,通过官网那个下载的还需要配置环境变量。

vscode的配置

编码问题

使用vscode打开现有的或者创建一个STM32工程会出现中文乱码的情况,需要我们点击屏幕左下角齿轮->设置,在上面搜索encoding,将Files:Encoding选项内更换成GB2312,因为日常使用的keil预设为GB2312编码,这里我们将vscode的编码也改称GB2312就可以避免打开时中文乱码,或创建一个新工程后在keil打开乱码的情况了。再勾选Files:Auto Guess Encoding前的选项,这部分没弄明白什么作用,但是很多教程都说要勾上,那就勾上。

image-20230415173605778

设置完之后我们就可以退出vscode重新打开,中文乱码不见了,文件的编码格式也会自动以GB2312打开。

image-20230415174051483

include问题

在打开STM32项目的时候会面临很多引用报错问题,这是因为我们没有将需要引用的文件添加到includepath路径内,在keil下我们需要设置,在vscode下我们也需要设置一下,在项目的根目录下创建.vscode目录,并在.vscode目录下创建c_cpp_properties.json文件,如果已经有这个目录或这个文件就不需要创建,接着下一步进行设置就可以了。

image-20230415174252387

文件内的内容填写下图中的代码即可,主要的部分是在includepath后的中括号内添加"${workspaceFolder}/**",这行代码的意思是工作区下的每一个文件夹以及子文件夹都添加到includepath。这样我们就解决掉了文件内include报错的问题了。

image-20230415174527914

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",  //添加工作区目录下所有文件夹以及自文件夹到includepath
            ],
            "defines": [
                
                "STM32F103xE"
            ],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

关于其他报错处理

除了中文乱码以及include报错,还会有个别的未定义报错,如:RCC未定义,GPIOB未定义等,这部分错误的解决办法我没有找到,但是不处理这部分也可以正常运行代码,文件内的引用和定义也都可以通过CTRL+鼠标单击跳转,只是红色波浪线实在让人难以天天看着忍受,这里我们可以选择关闭红色波浪线提示。

在c_cpp_properties.json文件下的"defines"目录下添加对应的单片机型号按理说是可以实现去除红色波浪线的,我在windows系统上实现了,但是linux系统没实现,可能是硬盘读取速度慢的原因。也不确定和c语言环境有没有什么直接关系,配置都相似。

有的时候CTRL+鼠标单击没有实现跳转,但是我们确定有另一个文件声明,我遇到过在其他文件下打开stm32f103xe.h文件的声明时有可能打不开,这个文件有上万行代码,个人判定为代码过多,系统有的时候加载不出来。

这里我们在.vscode目录下新建settings.json文件,并在文件内添加下面的代码,如果已经有了settings.json文件可以在最外侧的大括号内添加下面的语句就可以了。

image-20230415175426095

{
    "C_Cpp.errorSquiggles": "enabled"  //enable为关闭
}

将enabled更换为disabled即可开启红色波浪线提示。

makefile

既然我们要脱离windows系统进行编写STM32程序,那么我们肯定是要抛弃keil的,那我们的编译代码的过程就要更换到使用makefile文件来达到和keil编译相同的效果。

我们可以在linux系统下使用touch来创建makefile文件,在文件内编写相关的配置文件就可以实现与keil的编译相同的作用。关于makefile文件的编写这里不多赘述。

标签:文件,keil,vscode,STM32,单片机,报错,linux
From: https://www.cnblogs.com/gosel/p/17326781.html

相关文章

  • linux开发之ls -l命令实现
    效果大致思路首先,程序需要通过参数接受一个文件名。接着通过stat函数获取文件的信息,通过处理,进行合适的输出。转换时间戳可以用localtime函数来进行。判断文件类型时候要按位与S_IFMT。判断权限时候,也要按位与对应的宏。具体流程判断程序用法是否正确通过stas函数获取文......
  • Linux常用命令大全
    Linux常用命令大全最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。为了方便大家查找linux的相关命令,我就将我了解到的命令......
  • linux系统升级
    3.8内核升级所有节点升级系统并重启(线上环境必须升级)yumupdate-y--exclude=kernel*wgethttp://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpmwgethttp://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.1......
  • Linux-文本编辑vim
    vim使用流程vim默认机器是不安装的,需要手动安装这个工具命令yuminstallvim-y #通过yum软件管理工具进行安装当vim打开不存在的文件的时候,默认会创建文件语法1.vim文件名2.输入字母i,进入编辑模式,代表insert输入字母o,在光标下一行开始编辑3.写完代码......
  • linux系统查找文件命令find,xargs
    FIND命令形式:findpathname-options[-print-exec-ok]pathname要查找的路径(.表示当前目录,/表示系统根目录)-print输出-exec 对匹配的文件执行该参数所给出的shell命令-execrm{}\;注意{}和\;之间的空格-ok以一种更为安全的模式来执行shell命令find命令有很多选项或表达式,每一......
  • 服务器为什么用Linux?其优势有哪些?
    Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,拥有上百种不同的发行版本,同时也是服务器都会采用的操作系统。那么服务器为什么选择用Linux系统?本文为大家简单的解答一下。1、稳定性高业界公认:Linux服务器比Windows服务器稳定性高;多年使用经验,Linux稳......
  • redis在linux的操作
    redisredis特性速度快,10wops(秒读写)数据都是内存操作,c语言实现。单线程模型,所有的读写是同步的,不会出现脏读脏写持久化:rdb和aof策略多种数据结构:5大数据结构支持多种编程语言:基于tcp通信协议,各大编程语言都支持通信功能丰富:发布订阅(消息)Lua脚本,事务(pipeline)操作简单:不依......
  • linux_virtual_env
    虚拟环境+工具链CygwinMSYSWSL仅工具链MinGW安装:验证:特点:TMD-GCC安装:官网找最新版下载安装即可验证:gcc-v(正确输出:specsCOLLECT_GCC=D:\Software\TDM-GCC-64\bin\gcc.exeCOLLECT_LTO_WRAPPER=D:/Software/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/10.......
  • 强制linux修改密码
    强制Linux用户在下次登录时更改密码原创 入门小站 入门小站 2023-04-1421:30 发表于湖北收录于合集#Linux761个入门小站分享运维技巧及10k+Stars的开源项目236篇原创内容公众号密码管理是保持安全的重要一环。为了确保您的Linux系统的安全性,可能需......
  • 1 redis介绍 、2 redis linux下安装 、3 redis启动方式、4 redis典型场景 、5 redis通
    目录1redis介绍2redislinux下安装3redis启动方式3.1最简启动3.2动态参数启动3.3配置文件启动3.4客户端连接命令4redis典型场景5redis通用命令6数据结构和内部编码7redis字符串类型1redis介绍#特性Redis特性(8个)#速度快:10wops(每秒10w读写),数据存在内存中,c语言实现......