一、没有发现cortex-m软件装置怎么解决
armcortex-m4处理器内核是在cortex-m3内核基础上发展起来的,其性能比cortex-m3提高了20%。
新增加了浮点、dsp、并行计算等。
用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。
其高效的信号处理功能与cortex-m处理器系列的低功耗、低成本和易于使用的优点相结合。
cortex-m4提供了无可比拟的功能,将32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。
cortex-m4处理器采用一个扩展的单时钟周期乘法累加(mac)单元、优化的单指令多数据(simd)指令、饱和运算指令和一个可选的单精度浮点单元(fpu)。
这些功能以表现
armcortex-m系列处理器特征的创新技术为基础。
包括
·risc处理器内核,高性能32位cpu、具有确定性的运算、低延迟3阶段管道,可达1.25dmips/mhz;
·thumb-2指令集,16/32位指令的最佳混合、小于8位设备3倍的代码大小、对性能没有负面影响,提供最佳的代码密度;
·低功耗模式,集成的睡眠状态支持、多电源域、基于架构的软件控制;
·嵌套矢量中断控制器(nvic),低延迟、低抖动中断响应、不需要汇编编程、以纯c语言编写的中断服务例程,能完成出色的中断处理;
·工具和rtos支持,广泛的第三方工具支持、cortex微控制器软件接口标准(cmsis)、最大限度地增加软件成果重用;
·coresight调试和跟踪,jtag或2针串行线调试(swd)连接、支持多处理器、支持实时跟踪。
此外,该处理器还提供了一个可选的内存保护单元(mpu),提供低成本的调试/追踪功能和集成的休眠状态,以增加灵活性。
嵌入式开发者将得以快速设计并推出令人瞩目的终端产品,具备最多的功能以及最低的功耗和尺寸。
二、嵌入式新手学寄存器还是库函数
如果有相关嵌入式开发基础,可以从寄存器开始学。如果是第一次接触单片机,建议从库函数开始学,这样上手快,等熟练后分析库函数,就可以学习各寄存器了。这还用问吗?当然是寄存器了。
哦,不对,当然是库函数了。
下面是我以前写了一篇汇总文章,可以看一下;
【stm32系列汇总】博主的stm32实战快速进阶之路(持续更新)_greywall-csdn博客
先说一下目前st推出的cubemx;
stm32 基于 cubemx配置gpio点亮led灯(超级详细+图文并茂)
尝试使用cube进行一些开发学习,这里对此做一个梗概,先有一个全面的了解。
cube全家桶
曾几何时,st刚推出cubemx的时候,自动生成的外设初始化代码都会有这样那样的错误,而如今,随着软件的迭代升级,cube生态也越来越完善,并且使用也越来越方便,st推出的stm32cube ecosystem提供了免费整套的开发软件工具和嵌入式软件包,其中可以从芯片的外设配置,程序开发,程序下载以及系统监视一系列的功能。如下图所示;
stm32 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进行程序烧录,主要是支持的协议多啊,还可以吧,感觉是吹的挺厉害的;
第四步:以后可能会出更多的功能插件,目前感觉不是十分必要。
cubemx
stm32 cubemx的安装,十分简单,不过下载需要提交邮箱,基本根据系统提示就可以完成,另外,stm32 cubemx目前自动生成的代码支持官方的hal库和ll库,像以前笔者常用的标准外设库就已经被st抛弃了,最新的stm32f7已经不支持标准外设库了。 同时,cubemx初始化生成c代码项目,最终的工程可以符合iar,keil mdk和gcc,所以这里相对来说比较方便,不用对着手册撸寄存器了,也不用对着官方标准外设库demo进行移植,真的是哪里不会点哪里。
hal库的封装相对来说好一点,但是代码读起来相对比较冗杂,通用性和移植性好,符合软件工程的设计思想,那么会牺牲一点效率了。
ll库会再底层一点,这几个的选择还是看个人喜好和团队的需要了。
cubeide
再官网下载cubeide这个软件并安装,假设你已经成功安装并打开了软件,会看到;
这时候cubeide已经集成了cubemx了,新建stm32工程,step by step即可快速开始了。
cubeprog
整体看了一下 stm32 cubeprog 的介绍,其实有点还是可以的,首先这个软件支持多平台如:windows, linux, macos等等,java 进行开发的有点,这一系列差不多都是用java开发的吧,另外可能对st-link的支持比较好,如果使用jlink的话,用个openocd也无妨,但是毕竟是套装,下面简单罗列一下;
支持擦除,读写flash等等操作;
支持motorola s19, hex, elf 和 二进制格式;
st-link的固件升级;
多平台:windows, linux, macos,其实就看好这一点;
结语
对于cube进行了简单的学习和介绍,目前还有不少坑要爬,建议看一下hal的封装,有必要ll也可以看看,基本上还是符合cmsis那套标准。另外关于开发环境,如果需要使用cubeide进行开发,它已经集成了cubemax,则无需另外下载了,直接一站式服务搞定,如果只需要生成初始化代码,那么cubemax还是有必要单独装一下的。至于寄存器,开发起来比较费时间。
手动码字,严重影响了我拔刀的速度,如果你觉得我走心,文章对您有所帮助,点赞,支持一波吧!
欢迎关注@极客小麦
编辑于 2021-04-09著作权归作者所有
赞同 25