搭建网站需要的软件,wap文字游戏搭建教程,淄博网站建设网站推广优化,网站备案单位查询系统陆陆续续搞这个已经很久了。
因为自己新电脑是linux系统无法使用keil#xff0c;一开始想使用vscode里的eide但感觉不太好用#xff1b;后面想直接使用cudeide但又不想妥协#xff0c;想趁着这个机会把linux上的其他单片机开发配置也搞明白#xff1b;而且非常想搞懂cmake…陆陆续续搞这个已经很久了。
因为自己新电脑是linux系统无法使用keil一开始想使用vscode里的eide但感觉不太好用后面想直接使用cudeide但又不想妥协想趁着这个机会把linux上的其他单片机开发配置也搞明白而且非常想搞懂cmake编译的一些原理顺便可以看看bootloader的内容并且厌倦了再用库函数的方式写hal库的代码想更加专注于代码逻辑
综上所述其实是在强迫自己重新学一遍cortex-m3/m4这类单片机的基本原理和他们不同的烧录方式并把一些基础概念过一遍比如说mpu,mmu,mcu,soc的含义之类。
这篇文章大概是这个追根究底系列里的第一篇内容。 clion的下载
去官网下载即可或者用命令行下载。 yay -S clion openocd的下载
这是用来烧录的 yay -S openocd STM32cubemx的下载
当然是去官网下载但是yay库其实真的很包罗万象也可以用命令行下载 yay -S stm32cubemx GCC编译器与工具链的下载 绝对不可以使用自带的x86 gcc工具链编译stm32工程交叉编译时也需要再设置一下CMakeLists.txt否则会出现如下问题
cc: 警告已弃用‘-mcpu’请改用‘]8;;https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/x86-Options.html#index-mtune-17-mtune]8;;’或‘]8;;https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/x86-Options.html#index-march-16-march]8;;’
cc: 错误unrecognized command-line option ‘-mthumb’
cc: 错误unrecognized command-line option ‘-mthumb-interwork’
make[2]: *** [CMakeFiles/stm32project1.elf.dir/build.make:79CMakeFiles/stm32project1.elf.dir/Core/Src/can.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:87CMakeFiles/stm32project1.elf.dir/all] 错误 2
make: ***
如果使用x86的gcc编译器完成交叉编译会发现即使所有都设置好了也会出现上述报错。
所以需要下载arm-none-eabi-bin或者到官方网站下载工具链版本是14.2.1。 sudo pacman -S gcc-arm-none-eabi-bin sudo vim /etc/profile 在这个文件的最后添加环境变量确保系统可以找到新下载的工具链。/usr/arm-none-eabi/bin是安装的工具链的目录可以改成自己安装的目录。 export PATH$PATH:/usr/arm-none-eabi/bin 之后验证一下确保自己已经安装上了 如果出现arch什么的说明这并不是arm的工具链需要重新下载。 创建工程 打开clion,新建一个项目这里可以直接新建关于cubemx的新项目 这个项目的mcu是固定的改不了所以我们需要在弹出的窗口内新建一个cubemx项目并在配置完之后覆盖保存project需要注意这里面project名字要和一开始一致。我这里新建了一个f407vet6的项目。 之后就是配置并生成代码了这里要按照cubeide的方式生成代码。 我自己更喜欢设置分别生成代码而不是把代码堆在同一个文件里 。 编译配置
打开file-setting-toolchain新建一个设置这是我的相关设置 这个构建工具可以选择make或ninja如果什么都没有设置就会自动选择ninja)最终都是使用cmake完成整个构建过程。
其实使用ninja也可以顺利生成工程文件和build.ninja但是cubemx会自动生成一个makefile文件。我认为使用unix makefile的方式调试和构建会更好。
点开下面cmake选项卡设置相同的工具链和生成器。 理论来说到这步直接运行编译应该是没有什么问题的。cubemx自己生成的cmakelist.txt和makefile也一切正常但如果还会出现
cc: 警告已弃用‘-mcpu’请改用‘]8;;https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/x86-Options.html#index-mtune-17-mtune]8;;’或‘]8;;https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/x86-Options.html#index-march-16-march]8;;’
cc: 错误unrecognized command-line option ‘-mthumb’
cc: 错误unrecognized command-line option ‘-mthumb-interwork’
make[2]: *** [CMakeFiles/stm32project1.elf.dir/build.make:79CMakeFiles/stm32project1.elf.dir/Core/Src/can.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:87CMakeFiles/stm32project1.elf.dir/all] 错误 2
make: ***
这个问题说明交叉编译失败默认使用的还是x86的gcc编译器。可以通过改cmakelist.txt强行让他使用arm工具链。
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR arm)
cmake_minimum_required(VERSION 3.29)# specify cross-compilers and tools
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_AR arm-none-eabi-ar)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
set(SIZE arm-none-eabi-size)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_FLAGS -mcpucortex-m4 -mthumb)
# project settings
project(stm32project1 C CXX ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)
注意不要运行makefile而是运行OCD project需要改一下调试配置如下图让他生成elf文件先编译再运行最后调试。
可以改面板配置文件我这里的配置文件是示例的配置文件。 更新cubemx工程更新cmake(这俩功能在工具-cmake选项里
重新编译结果如下hex文件可以用于烧录 这几天一直使用远程控制电脑的方式完成编译配置并写出这篇文章体验感很好。
远程控制电脑的配置文章在这里
如何在linux系统上完成定时开机和更新github端口的任务-CSDN博客 问题集锦
1. 发现cubemx生成代码后没有driver文件夹
cubemx未下载资源包
需要打开help-embedded software package manager并下载相关资源包 看一下生成文件夹 2. 怎么快速把linux上写的项目环境搬运到win系统
当然不是通过ioc文件重新生成keil环境代码
使用cubeide就可以了下载最新版的然后在里面加载project文件
记得设置生成hex文件默认只生成elf文件
我目前有点嫌费劲暂时使用flymcu烧录hex文件今天就会配置使用软件烧录的方式