ubuntu中安装配置STM32开发环境

3 篇文章 0 订阅
3 篇文章 0 订阅

笔者做嵌入式开发的,主要用到linux系统来做开发,有时候遇到既要开发arm linux,又要挂载MCU的情况(主要是STM32这款),这两个芯片跨平台,指令不兼容。以前开发STM32是在windows下的IDE,使用keil或者IAR来开发,自从搞arm linux以来,很少开windows系统,两个系统切来切去着实麻烦。这篇文章主要针对长期使用Linux系统的用户,有什么不对的地方,欢迎指正。

接下教教大家怎么在linux下部署STM32开发环境

首先安装一个stm32cubemx,该软件可以在st官网下载,要注册账号,还要搞邮件的乱七八糟的步骤就不说了,自行解决

下载下来的文件中就用到下面两个文件

SetupSTM32CubeMX-4.23.0.exe

SetupSTM32CubeMX-4.23.0.linux

顺便提一下,cubemx是用java编写的,安装需要较新的java环境,这个问题读者自行解决


命令行下运行SetupSTM32CubeMX-4.23.0.linux,也可以鼠标双击,但是命令行更有逼格一些,推荐使用


安装完之后/home下面有个STM32CubeMX文件夹,打开文件夹,双击图中可执行文件



选择芯片型号,就选一个stm32f103c8的芯片好了,不嫌累可以在右下方的型号表里面翻,也可以从左上角的搜索框直接查找。

确认型号后点start project开启一个工程



打开新世界的大门后是这样一个界面,推荐把PD0,PD1,PC14,PC15设置为RCC管脚,接外部晶振,并在左边RCC选项下打开。接着点上乱七八糟的管脚配置,笔者比较喜欢勾选上freertos操作系统



时钟配置为外部时钟,倍频到72Mhz



NVIC DMA等看情况配置,都不傻,瞎配着多踩几下坑就会了,就不啰嗦了



点击这个齿轮生成工程,并选择生成makefile版本的工程,工具链暂时先按默认处理吧,后面再讲讲工具链怎么搞


 

你以为这就搞好了吗,嘿嘿,STM32cubeMX还有点bug,生成工程的时候有几条是重复的,如果不管会导致编译出错的,比如图中选中的部分,75行和108行是一样的,要手动把Makefile重复的部分删掉一个



--------------------------------------------------

接下来配置一下交叉工具链,STM32的交叉工具链是arm-none-eabi-

可以从 https://launchpad.net/gcc-arm-embedded/+download

下载工具链,笔者比较喜欢下载源码自己编译,但是这里一不小心下载成bin文件了,没关系,可以运行就好。需要折腾的选择src版本自行编译。



找到工具链位置,export 一下。或者打开STM32cubeMX,点击load project,打开之前生成工程的.ioc文件,在生成工程时指定工具链位置



或者简单粗暴一点,在makefile里面直接指定路径



之后make 一下,生成hex和bin,没问题~~~~~~oh yeah



----------------------------------------------------------

接下来安装stlink驱动。

准备工作,先装上libusb

sudo apt-get install libusb-dev

sudo apt-get install libusb-1.0-0-dev

获取源码

git clone https://github.com/texane/stlink

编译方法参考https://github.com/texane/stlink/blob/master/doc/compiling.md

编译安装完成后,./st-flash erase 擦一擦芯片试试


makefile里面加上一段

#---------------------------- write to mcu -----------------------------#
flash:
    st-flash write build/ $( TARGET ).bin 0x8000000



使用命令make flash就能下载程序到MCU里面去了

需要jlink来调试的,到http://www.segger.com/jlink-software.html下载linux版本安装包,具体用法我就告诉你,这道题太难了,我不会做,不会做,读者自行解决,有好的教程也可以分享给我。

后面还有仿真之类的乱七八糟的,就呵呵了,不会配也很少用。

在这里可以教大家一个debug技巧,重定向一下printf函数,这里需要敲一下黑板,在keil下,printf的底层是fputc函数实现的,但gnu下面是_write函数,注意不要搞错了。


//gnu下用此函数重定向printf
int _write ( int fd, char *pBuffer, int size)
{
   int i;
     for (i = 0; i < size; i++)
    {
         while((USART1-> SR& 0X40)== 0); //等待上一次串口数据发送完成
        USART1-> DR = ( uint8_t) pBuffer[i];   //写DR,串口1将发送数据
    }
     return size;
}
//end


最后喜欢写寄存器代码的,可以参考我的开源代码,我就不喜欢ST的库,函数名老是变来变去的,今年写的代码明年不能编译,蛋蛋受不了

https://github.com/MagicPrince666/STM32_LCD.git



  • 23
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
1. 安装VS Code 在Ubuntu打开终端,输入以下命令安装VS Code: ``` sudo apt update sudo apt install software-properties-common apt-transport-https wget wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" sudo apt update sudo apt install code ``` 2. 安装插件 在VS Code安装以下插件: - C/C++(Microsoft) - Cortex-Debug(marus25) 可以通过按下Ctrl + Shift + X键或点击左侧菜单栏的扩展图标来打开扩展面板。 3. 配置环境 在VS Code打开终端(Ctrl + Shift + `),输入以下命令安装必要的工具: ``` sudo apt-get install build-essential gdb-arm-none-eabi openocd ``` 在VS Code打开工作目录,创建一个名为“.vscode”的文件夹,然后在该文件夹创建一个名为“launch.json”的文件。 将以下JSON代码复制并粘贴到“launch.json”: ``` { "version": "0.2.0", "configurations": [ { "name": "STM32F1", "cwd": "${workspaceRoot}", "executable": "${workspaceRoot}/.pioenvs/stm32f1/firmware.elf", "request": "launch", "type": "cortex-debug", "servertype": "openocd", "device": "STM32F103C8", "configFiles": [ "interface/stlink.cfg", "target/stm32f1x.cfg" ] } ] } ``` 注意:修改“executable”字段以匹配你的工程路径和生成的二进制文件名。 4. 开始调试 连接STM32开发板到电脑上,并通过USB转串口线将开发板连接到电脑上。启动OpenOCD调试服务器,以便VS Code可以使用它来与STM32设备通信。在终端输入以下命令: ``` openocd -f interface/stlink.cfg -f target/stm32f1x.cfg ``` 在VS Code打开工程文件夹,然后按下F5键或点击左侧菜单栏的调试图标来启动调试器。如果一切正常,你应该能够在VS Code开始调试STM32设备。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值