目 录
1. stm32cube ecosystem
2. cubemx
3. cubeide
4. cubeprog
5. cubeide进行开发
5.1 stm32cubeide home
5.2 生成工程
5.3 程序下载
6. 结语
1. stm32cube ecosystem
记得我在st刚推出cubemx的时候就尝试过,那时候自动生成的外设初始化代码都会有一些小错误,现在,随着这套系统的迭代升级,cube生态也越来越完善,并且使用也越来越方便。st推出的stm32cube ecosystem提供了免费整套的开发软件工具和嵌入式软件包,其中可以从芯片的外设配置,程序开发,程序下载以及系统监视一系列的功能。
stm32cube ecosystemstm32 cubemx 几乎stm32的设备都可以使用这个工具初始化配置代码,这个是基于java开发的图形化界面配置软件,可以为cortex-m自动生成需要配置的c代码,还可以为支持linux系统的cortex-a内核生成设备树。
stm32 cubeide 这是一款st推出的免费的集成开发环境,基于eclipse和gnu c/c++ 等开源工具链,可以编译调试代码,并且官方也将stm32 cubemx集成到ide中,这样整个软件的配置和开发变得浑然一体,便捷非常。
stm32cubeprogrammer 软件编程工具,支持(jtag,swd,uart,usb dfu,i2c,spi,can)等方式对设备和外部存储器进行读写。
stm32cubemonitor 系列工具。强大的监视工具可帮助开发人员实时微调其应用程序的行为和性能,这个目前还没有尝试,暂且先相信官方的自夸吧。
所以使用以上的st cube全家桶进行stm32的软件开发,还是有不少坑要在实践过程中慢慢爬,整体的一个流程基本如下;
开发流程第一步:使用 cubemx初始化相应的芯片外设功能等等;
第二步:使用cubeide进行代码编辑调试等操作,当然,如果你喜欢也可以使用iar,keil,或者vscode,这个完全出自个人喜好和习惯,但是据说cubeide里集成了cubemx,这个难道不香吗? 加上如果想使用 gcc编译器,那也省去了很多配置的麻烦;
第三步:使用cubeprogrammer进行程序烧录,主要是支持的协议多啊,还可以吧,感觉是吹的挺厉害的;
第四步:以后可能会出更多的功能插件,目前感觉不是十分必要。
2. cubemx
stm32 cubemx的安装,十分简单,不过下载需要提交邮箱,基本根据系统提示就可以完成,另外,stm32 cubemx目前自动生成的代码支持官方的hal库和ll库,像以前笔者常用的标准外设库就已经被st抛弃了,最新的stm32f7已经不支持标准外设库了。同时,cubemx初始化生成c代码项目,最终的工程可以符合iar,keil mdk和gcc,所以这里相对来说比较方便,不用对着手册撸寄存器了,也不用对着官方标准外设库demo进行移植,真的是哪里不会点哪里。hal库的封装相对来说好一点,但是代码读起来相对比较冗杂,通用性和移植性好,符合软件工程的设计思想,那么会牺牲一点效率了。ll库会再底层一点,这几个的选择还是看个人喜好和团队的需要了。
3. cubeide
在官网下载cubeide这个软件并安装,假设你已经成功安装并打开了软件,会看到;
cubeide已经集成了cubemx了,新建stm32工程,step by step即可快速开始了。
4. cubeprog
整体看了一下 stm32 cubeprog 的介绍,其实有点还是可以的,首先这个软件支持多平台如:windows, linux, macos等等,java 进行开发的有点,这一系列差不多都是用java开发的,另外可能对st-link的支持比较好,如果使用jlink的话,用个openocd也无妨,但是毕竟是套装,下面简单罗列一下;支持擦除,读写flash等等操作;
支持motorola s19, hex, elf 和 二进制格式;
st-link的固件升级;
多平台:windows, linux, macos,其实就看好这一点;
5. cubeide进行开发
使用stm32cubeide快速创建stm32的hal库工程。
5.1 stm32cubeide home
进入到官网的下载界面,选择符合对应的操作系统和对应的版本,下载安装,
下载界面地址:https://www.st.com/en/development-tools/stm32cubeide.html安装完成之后,打开stm32cubeide会直接进入主页,这里开始创建stm32工程或者导入工程,如下图所示;
read stm32cubeide documentation有大量的官方文档;可以快速入门,包括;安装教程;
用户手册;
5.2 生成工程
设置工程名称和路径之后就基本完成工程的创建了
创建工程在此期间可能会联机下载库文件和相应mcu的外设文件,这里要保持网络畅通,并耐心等待;成功创建工程之后,
在这里插入图片描述可以看到左边是hal库,右边是cubemax的配置界面,至此已经完成了工程的生成了,那么下一步进行进行编译和下载。另外在文件列表中可以看到test.ioc文件,这是cubemax的配置文件,相当于一些软件的ini文件,cubemax主要通过读写该文件将设备的配置保存和加载的软件中,直接用文本编辑器打开可以看到具体的信息如下所示;
#microxplorer configuration settings - do not modify freertos.ipparameters=tasks01 freertos.tasks01=defaulttask,0,128,startdefaulttask,default,null file.version=6
keepuserplacement=false mcu.family=stm32f1 mcu.ip0=freertos mcu.ip1=nvic mcu.ip2
=rcc mcu.ip3=sys mcu.ipnb=4 mcu.name=stm32f103z(c-d-e)tx mcu.package=lqfp144 mcu.pin0=vp_freertos_vs_cmsis_v1 mcu.pin1=vp_sys_vs_nd mcu.pin2=vp_sys_vs_systick mcu.pinsnb=
3 mcu.thirdpartynb=0 mcu.userconstants= mcu.username=stm32f103zetx mxcube.version=5.3.0 mxdb.version=db.5.0.30 nvic.busfault_irqn=true:0:
0:false:false:true:false:false:false nvic.debugmonitor_irqn=true:0:0:false:false:true:false:false:false nvic.hardfault_irqn=true:0:0:false:false:true:false:false:false nvic.memorymanagement_irqn=true:0:0:false:false:true:false:false:false nvic.nonmaskableint_irqn=true
:0:0:false:false:true:false:false:false nvic.pendsv_irqn=true:15:0:false:false:false:true:false:false
nvic.prioritygroup=nvic_prioritygroup_4 nvic.svcall_irqn=true:0:
0:false:false:false:false:false:false nvic.systick_irqn=true:15:0:false:false:true:true:false:true nvic.usagefault_irqn=true:0:0:false:false:true:false:false:false pcc.checker=false pcc.line=stm32f103 pcc.mcu=stm32f103z(c-d-e)tx pcc.partnumber=stm32f103zetx
pcc.seq0=0 pcc.series=stm32f1 pcc.temperature=25 pcc.vdd=3.3 pinoutpanel.rotationangle=0
projectmanager.askformigrate=true projectmanager.backupprevious=false
projectmanager.compileroptimize=6 projectmanager.computertoolchain=false projectmanager.couplefile=false projectmanager.customerfirmwarepackage=
projectmanager.defaultfwlocation=true projectmanager.deleteprevious=true
projectmanager.deviceid=stm32f103zetx projectmanager.firmwarepackage=stm32cube fw_f1 v1.8.0
projectmanager.freepins=false projectmanager.halassertfull=false projectmanager.heapsize=0x200 projectmanager.keepusercode=true projectmanager.lastfirmware=true projectmanager.librarycopy=1
projectmanager.mainlocation=src projectmanager.nomain=false projectmanager.previoustoolchain= projectmanager.projectbuild=false projectmanager.projectfilename=test.ioc
projectmanager.projectname=test projectmanager.stacksize=0x400
projectmanager.targettoolchain=stm32cubeide projectmanager.toolchainlocation= projectmanager.underroot=true projectmanager.functionlistsort=1-systemclock_config-rcc-false-hal-false rcc.apb1freq_value=8000000 rcc.apb2freq_value=8000000 rcc.familyname=m
rcc.ipparameters=apb1freq_value,apb2freq_value,familyname,pllclkfreq_value,pllmcofreq_value,
timsysfreq_value rcc.pllclkfreq_value=8000000 rcc.pllmcofreq_value=4000000
rcc.timsysfreq_value=8000000 vp_freertos_vs_cmsis_v1.mode=cmsis_v1 vp_freertos_vs_cmsis_v1.signal=freertos_vs_cmsis_v1 vp_sys_vs_nd.mode=no_debug
vp_sys_vs_nd.signal=sys_vs_nd vp_sys_vs_systick.mode=systick
vp_sys_vs_systick.signal=sys_vs_systick board=custom isbadioc=false这个不用太关心,因为可以通过图形化界面去配置,软件会自动修改这个配置文件的。
5.3 程序下载
可以在工具栏直接点击锤子
build快速进行构建,最终会自动生成elf的文件,也就是仿真器可以烧录的文件;然后可以在窗口直接查看build的信息,包括报错等等,具体如下;
12:52:59 **** incremental build of configuration debug for project test **** make -j4 all arm-none-eabi-gcc “。。/drivers/stm32f1xx_hal_driver/src/stm32f1xx_hal_cortex.c” -mcpu=cortex-m3 -
std=gnu11 -g3 -dstm32f103xe -duse_hal_driver -ddebug -c -i.。/inc -
i.。/drivers/cmsis/device/st/stm32f1xx/include -i.。/drivers/cmsis/include -
i.。/drivers/stm32f1xx_hal_driver/inc/legacy -i.。/drivers/stm32f1xx_hal_driver/inc -o0 -ffunction-sections -fdata-sections -wall -fstack-usage -mmd -mp -mf“drivers/stm32f1xx_hal_driver/src/stm32f1xx_hal_cortex.d” -mt
“drivers/stm32f1xx_hal_driver/src/stm32f1xx_hal_cortex.o” --specs=nano.specs -mfloat-abi=soft -mthumb -o “drivers/stm32f1xx_hal_driver/src/stm32f1xx_hal_cortex.o” 。。。 finished building
target: test.elf arm-none-eabi-objdump -h -s test.elf 》 “test.list” arm-none-eabi-size test.elf text data bss dec hex filename 3860 20 8228 12108 2f4c test.elf finished building: default.size.stdout
点击工具栏的虫子图标debug进行调试;
工具栏在菜单栏run选项中找到debug configuratons,如下图所示,配置调试用的仿真器和接口方式,最后点击debug即可将test.elf下载到target中。
调试器配置成功开始调试之后,如下图所示;
开始调试
结语
对于cube进行了简单的学习和介绍,目前还有不少坑要爬,建议看一下hal的封装,有必要ll也可以看看,基本上还是符合cmsis那套标准。另外关于开发环境,如果需要使用cubeide进行开发,它已经集成了cubemax,则无需另外下载了,直接一站式服务搞定,如果只需要生成初始化代码,那么cubemax还是有必要单独装一下的。
PCB的单片机控制板有什么设计的原则
如何在封装库中创建3D器件模型
水下LED灯条如何进行密封性防水测试
激光焊锡机对比传统焊接机有何优势
Bug Bash:Bug大扫除的正确用法
能够让STM32更简单的工具
LR-LINK联瑞PoE以太网图像采集卡的优势
我国集成电路市场规模已达1.5万亿元
开关电源测量的经验总结
企业区块链存在哪一些误解
瞬态信号及时捕获 安捷伦创新无线测试
AGM观点:独立FPGA公司将不复存在
立磨摇臂轴承座磨损原因及解决方案
特斯拉回应Model X追尾事故:车主未开启自动辅助驾驶功能
三极管的工作原理及电路应用
魅族首发三星中端处理器对双方都是好事
京东携SunLike进军LED台灯市场
鸿蒙系统4月升级名单
在软件市场,服务商如何才能持续保持更高的收益
led灯珠电阻计算方法详解