Ubuntu下使用STM32CubeMX和SW4STM32进行开发_weixin_34377919的博客-程序员秘密

技术标签: java  开发工具  嵌入式  

选择STM32CubeMX和SW4STM32的原因:因为都支持Linux啊,这就够了!

STM32CubeMX:可快速生成Project,用户可以直接使用图形化工具对外设进行配置,而它会自动生成相应初始化代码。

SW4STM32:基于eclipse的IDE,用惯了java,感觉其实eclipse还是蛮好用的,就是运行起来慢了点!

 

1 软件安装

1.1 安装Java运行环境

由于STM32CubeMX和SW4STM32都是Java写的,所以需要安装JRE才能运行。

直接用apt安装:

$ sudo apt install openjdk-8-jre

1.2 安装STM32CubeMX

由于STM32CubeMX官网下载需要先注册,而我又不想注册,毕竟想到当年公司刚开始用STM32时,同事在评估各个开发工具时,在某工具官网填写相关信息下载试用后,就收到了这公司的推销电话,而我早就不做这行了,也不想接这类电话,所以还是多一事不如少一事!

我是参考了STM32CubeMX介绍、下载与安装这篇博客,在博主提供的百度网盘下载的。

下载解压后直接双击SetupSTM32CubeMX-4.22.0.linux进行安装。

刚开始双击后毫无反应,于是又在终端里试了下,提示如下错误:

$ ./SetupSTM32CubeMX-4.22.0.linux
bash: ./SetupSTM32CubeMX-4.22.0.linux: No such file or directory

网上搜了下,这是因为64位系统运行32位程序但又缺少32位库引起的,那么就先安装libc6-i386

$ sudo apt install libc6-i386

再运行就OK了。

230659_jyRR_1041082.png

安装过程比较简单,就略过了。

安装完成后是不能直接使用的,我们还需要为其安装相关库文件。

231613_gs7c_1041082.png

这个库是用于配置和管理STM32的,无论你用的哪款STM32芯片都要安装。

232418_1yFd_1041082.png

接下来是和芯片相关的库,不同系列的芯片安装的库也不一样,以STM32F103C8T6为例,就需要安装STM32CubeF1 Releases的库。

232400_4BYt_1041082.png

完成后重启STM32CubeMX就可以了。

1.3 安装SW4STM32

下载地址

图形界面安装需要先安装gksu

$ sudo apt install gksu

我双击文件无反应,只好在终端执行

$ ./install_sw4stm32_linux_64bits-v2.1.run

233822_4LQY_1041082.png

安装完成后,初次建project时会提示使用标准库还是HAL库,我们使用HAL库。

 

2 开始使用

我用的是STM32F103C8T6,因此也以此芯片为例。

2.1 使用STM32CubeMX生成一个Project

点击File -> Now Project,进入如下界面,搜索对应芯片型号并创建project。

然后就来到了如下界面:

按下图进行配置

RCC:外部晶振

SYS:配置调试引脚

USART1:用于输出log进行 调试

LED:板子上的LED灯,单击管脚 -> GPIO_Output,再右击管脚编辑label

再切换到Clock Configuration页面,设置时钟为72M

再来看Configuration页面,这里面可对我们使能了的模块进行配置,如USART波特率等,我们都保持默认值。

172903_IKYh_1041082.png

最后一页是功耗计算,暂时不管它。

接下来就是生成代码了,先进行一些设置: Project -> Settings

002926_3bQY_1041082.png

173113_45Po_1041082.png

然后生成code:Project -> Generate Code

2.2 SW4STM32使用

SW4STM32的使用没啥好说的,用过eclipse的都会用,主要是记录一下使用ST-LINK V2烧写程序时遇到的问题。

写好代码后,直接Run,本以为会神奇地跑起来,但eclipse却向我弹出一个窗口,并报了一堆错误。

173556_4RA8_1041082.png

感觉像是权限问题,然后就试了试用sudo运行SW4STM32,抱着慢慢希望点了下Run,结果还是出错。

173828_AxEl_1041082.png

从错误提示可发现是因为不能给板子复位,然后就按网上说的把ST-LINK的RESET和板子的RESET连接起来,不过还是不行!

网上也有说可以修改cfg文件中的reset_config来解决,但我修改后再build时却又被恢复成默认值了。

就在我快要放弃的时候,突然脑子一抽,试了试在点击Run后,手动复位,居然烧写成功了,谢天谢地,菩萨保佑,哈哈!

174022_eh1N_1041082.png

总结一下,还是以sudo运行SW4STM32,然后点击Run -> Run,当然,点击工具栏图标也可以,约1秒后对板子进行手动复位(这个间隔时间要多练几次才好掌握),烧写成功!

虽然烧写成功后还是不能复位,不过没关系,我们手动给它复位一下就行了。

 

最后,又在Ubuntu左侧启动栏中添加了个以sudo启动SW4STM32的快捷方式。

参考:Ubuntu添加自定义快捷方式

 

转载于:https://my.oschina.net/igiantpanda/blog/1618140

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34377919/article/details/92569217

智能推荐

Ogre学习教程:Ogre第一个程序_小熊不去实验室的博客-程序员秘密

1. 已经安装了Ogre工程向导,VS2010 新建项目就可以看得OGRE的工程模版了,建立一个空项目,由于安装了Orge工程助手,所以免去了麻烦的配置过程(安装Orge工程助手步骤可以参考 Ogre1.8.1+VS2010环境配置):2. 首先在项目中建立一个OgreDemo1.c和OgreDemo1.h文件。分别填入如下代码:OgreDemo1.h:

python分布式学习记录_IT_life_mike的博客-程序员秘密

根据网上资料学习了python分布式进程,大体使用方法总结,以及注意点如下:首先是master部分:继承multiprocessing模块的managers子模块中的BaseManager, 如类名为QueueManagerfrom multiprocessing.managers import BaseManagerclass QueueManager(BaseManager):p...

软件加密授权工具_senseshield是什么软件_senseshield的博客-程序员秘密

公司研发一套软件,需要开始往外卖,苦于上市后盗版压力比较大。于是寻找了一款软件加密授权工具-Virbox LM。Virbox LM在加密方面,能快速的完成加密工作,不需要编写代码,安全强度也很高。授权方面,也能做到适应各种环境下的安全授权,如在线/离线,绑定设备,限时,限次等。使用体验Virbox LM提供了三种加密授权形式:云锁/软锁/加密锁。三种形式,适用于不同的软件使用场景。价格...

ciscn_2019_c_1(类型:ret2libc)_沫忆末忆的博客-程序员秘密

和之前做的题目不太一样,这是一道Return2libc的题目,有很多问题还是不太懂,这里做一个记录。首先进入到题目环境里面,看看程序大概功能,这样方便了解程序。有三个功能选项,只有选项1才有具体的作用,会对输入进行加密,加密输出之后继续返回到程序用IDA分析程序checksec查看一下,开启了NX先看到主函数,汇编代码的大致意思也就是选项处输入1就可以进入到encrypt函数,下面给出主函数伪代码,输入的是v4,如果v4=1 调用encrypt函数进入到encrypt分析这里发现了ge

《后端从入门到熟悉-序言》_简凡丶的博客-程序员秘密

一、写在前面的话嗨喽,大家好呀!我是简凡,一位游走于各互联网大厂间的新时代农民工。这是我初写博客的第一个系列,做为曾经编程小白我,也经历了长期的困惑迷惘,想学点什么做点什么,但又无从下手???? 。所以想在此分享下这一路走来的成长之路,希望能帮助到正在观看文章的你。为了让成长变得更加可以操作,所以我不想直接扔一篇什么后端成神之路的路线图xmind出来,而是通过成长的第一人称视角去一步步完成这个系列。首先介绍先这个系列的标题,后端从入门到熟悉,为什么要用熟悉呢?因为程序员要学会的第一件事就是低调?

scipy 科学计算库_Donnameng的博客-程序员秘密

文档学习资源汇总聚类分析 kmeans来源:https://zhuanlan.zhihu.com/p/78798251?utm_source=qqK-means 有一个著名的解释:牧师—村民模型:有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移

随便推点

vscode 中git解决冲突,合并代码的两种方法_vscode中操作git合并分支冲突怎么解决_铁锤妹妹@的博客-程序员秘密

一. 背景:今天在把pre-master分支代码合并到master分支时候,出现了代码冲突,当时在没有先解决冲突的情况下,稀里糊涂点击了vscode工具栏左侧的 暂存,现在记录一下。下图是稀里糊涂暂存的然后 push 到了master分支上,提交git;导致保留了两份代码,这肯定是不行的二. 报错信息:有文件冲突的话,会报错: git merge pre-master //合并pre-master分支到master主分支 CONFLICT (content): Merge conflict

移动物联网卡构建智慧医疗体系,加强医院管理效率_shy中亿物联网的博客-程序员秘密

生活品质的提升,促进了人们对医疗健康领域的进一步关注。然而我国人口基数庞大、医疗资源缺稀,“看病难、看病贵”一直是政府、社会与民众难以调和的矛盾。移动物联网卡的出现使医疗救治难题出现新的曙光。作为实现万物互联的核心节点,移动物联网卡智慧医疗把医疗设备、监控系统、医疗数据等内容连接压缩起来,架构新型的物联网卡智慧医疗体系。移动物联网卡智慧医疗的出现是一项利国利民的重要项目,对促进和谐社会、构建智慧城...

HTML5-布局_html5布局_luckxing的博客-程序员秘密

absolute  绝对坐标relative 相对坐标padding: 0;margin: 0;style="font-size: 16px;position:absolute;right:5px; top: 30px;"左右放置 spanid="">span> 组合文档中的行内元素上下放置 divid="">div>

全卷积神经网络FCN模型Unet 图像分割项目实践_unet实践__marcel的博客-程序员秘密

前言本文基于下面链接的项目, 实践一次基于Unet模型的图像分割.个人在实现时遇到很多问题, 许多问题在网上并没有找到解答, 所以写下本文, 记录了在实现过程中遇到的问题和大部分代码的注解, 主要从代码逻辑入手, 分析整个实践过程.我的实现代码放在文章最后, 供大家参考项目参考链接效果展示一些声明本文实现的代码仅考虑灰度图, 即单通道图本文中涉及到的数据增强, Unet...

Qt 标题栏(标题、图标)设置_qt windowtitle_yuanzhangmei1的博客-程序员秘密

1. 标题设置MainWindow::setWindowTitle(tr("your title"));2. 标题栏图标设置步骤如下(在windows环境下):首先选择一个icon图标,假设为title.ico;然后新建一个文本文件,在文本中加上这样一句话:IDI_ICON1  ICON   DISCARDABLE   "title.ico"    注意就只加这一句,关闭文本,

归并_YY_belief的博客-程序员秘密

归并与逆序数前言简介归并排序求逆序数前言归并排序是一种非常重要的排序,因此,我觉得学会归并排序十分重要。简介一般排序会用到冒泡排序,虽然冒泡排序是一种稳定的排序算法,但是时间复杂度是O(log(n2)),时间复杂度就有一点点高,也许你会说用快速排序,没错,快速排序也能很快的将一串数字排序好,但是快速排序针对一些数据很快,也会针对有些数据很慢,因为快速排序并不是稳定的排序算法,而今天我...

推荐文章

热门文章

相关标签