打印
[STM32F4]

STM32CubeF4如何学?

[复制链接]
1343|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近看了一下那个标准库和新的HAL库,还是有很大差别的。新版的库支持全系列,这个是ST规划的方向。那个老的标准库,已经不支持新推出的几个系列了。
沙发
734774645|  楼主 | 2015-11-6 19:10 | 只看该作者
我下载了这个库后解压发现一共有六个文件夹和两个孤立文件。我截图给大家看看。

-------------------------
其中那个网页文件打开后就是对这个东西的说明,会调用这些文件夹里的部分文件。
第一个是网页资源文件夹,几个图片而已
第二个是文档:STM32CubeF4GettingStarted  就这一个PDF。
第三个是驱动,包括BSP、CMSIS、STM32F4xx_HAL_Driver   一共这三个文件夹。
第四个是中间设备:包括ST、Third_Party两个文件夹,都是第三方的玩意儿,各种系统。
第四个工程文件夹:各种官方开发板的相关文件,打开后发现每个下面是应用程序、DEMO、例程、模板
第五个,公共文件夹,里面有CPU、字体、日志、多媒体和PC软件。

使用特权

评论回复
板凳
734774645|  楼主 | 2015-11-6 19:11 | 只看该作者
其实最蛋疼的,要学的东西都在第三个驱动文件夹的。Drivers。

使用特权

评论回复
地板
734774645|  楼主 | 2015-11-6 19:17 | 只看该作者

这个图就是固件成分图,就这么翻译吧。
不会洋文真不行,都不给提供中文手册,坑中国爹啊。

使用特权

评论回复
5
734774645|  楼主 | 2015-11-6 19:21 | 只看该作者
我们看上图,底层就是硬件,就是你用的哪个芯片,然后上面就是HAL层了,包括BSP(板子支持包)、HAL(硬件抽象层)
我都是查过中学生英语词典的,应该没错的。这里两个东西在哪儿呢?看板凳上的图就知道了。
然后就是哪个CMSIS不好理解了。一开始我真不知道这是什么单词的简写。问了度娘才知道:
ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。

使用特权

评论回复
6
734774645|  楼主 | 2015-11-6 19:22 | 只看该作者
使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。软件的创建被嵌入式行业公认为主要成本系数。通过在所有Cortex-M 芯片供应商产品中标准化软件接口,这一成本会明显降低,尤其是在创建新项目或将现有软件迁移到新设备时。
-------------------------------------
CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。
CMSIS软件层次

CMSIS可以分为多个软件层次,分别由ARM公司、芯片供应商提供。
其中ARM提供了下列部分,可用于多种编译器:
● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。
● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。 芯片供应商扩展下列软件层:
● 微控制器外设访问层:提供片上所有外设的定义。
● 外设的访问函数(可选):为外设提供额外的助手函数。CMSIS为Cortex-Mx微控制器系统定义了:
● 访问外设寄存器的通用方法和定义异常向量的通用方法。
● 内核设备的寄存器名称和内核异常向量的名称。
● 独立于微控制器的RTOS接口,带调试通道。
● 中间设备组件接口(TCP/IP协议栈,闪存文件系统)。
CMSIS包含的组件

1、外围寄存器和中断定义: 适用于设备寄存器和中断的一致接口
2、内核外设函数:特定处理器功能和内核外设的访问函数
3、DSP 库:优化的信号处理算法,并为 SIMD 指令提供Cortex-M4 支持
4、系统视图说明(SVD):描述设备外设和中断的XML 文件。
该标准完全可扩展,可确保其适合于所有 Cortex-M处理器系列微控制器,从最小的8 KB 设备到具有复杂通信外设(如以太网或USB)的设备。(内核外设函数的内存要求少于1 KB 代码,少于10 字节RAM)。

使用特权

评论回复
7
734774645|  楼主 | 2015-11-6 19:32 | 只看该作者
根据地板的图来看,中间件和公用件应该在一个层次上的。
----------------------------
下图是Cube固件包里的东西,这个东西可以说明开发时候软件的层次结构。


使用特权

评论回复
8
734774645|  楼主 | 2015-11-6 20:06 | 只看该作者

-------------------------------
这个就是CMSIS内部的分类。再说一次CMSIS:ARM Cortex™ 微控制器软件接口标准

使用特权

评论回复
9
734774645|  楼主 | 2015-11-6 20:23 | 只看该作者
Board Support Package (BSP): this layer offers a set of APIs related to the hardware
components on the hardware boards (Audio codec, I/O expander, Touchscreen, SRAM
driver, LCD drivers. etc…) and composed of two parts:
– Component: is the driver related to the external device on the board and not
related to the STM32, the component driver provides specific APIs to the BSP
driver’s external components and can be ported to any board.
– BSP driver: it enables the component driver to be linked to a specific board and
provides a set of user-friendly APIs. The API naming rule is
BSP_FUNCT_Action(): ex. BSP_LED_Init(),BSP_LED_On()
It's based on a modular architecture that allows it to be ported easily
-------------------
BSP板级支持包,听的都是开发板上用到的API接口,比如自带的音频解码,IO扩展了,触摸屏了,LCD驱动了,
使用方法命名都是BSP开头的。
比如板子上的东东BSP_FUNCT_Action(): ex. BSP_LED_Init(),BSP_LED_On()
这是板子上的LED的命名方法。。。如果你用自己的板子,也可以这么命名这么改。

使用特权

评论回复
10
734774645|  楼主 | 2015-11-6 20:24 | 只看该作者
Hardware Abstraction Layer (HAL): this layer provides the low level drivers and the
hardware interfacing methods to interact with the upper layers (application, libraries
and stacks). It provides generic, multi instance and function-oriented APIs which allow
to offload the user application implementation by providing ready-to-use processes. For
example, for the communication peripherals (I2S, UART…)
---------------------------
HAL,硬件抽象层,这提供了底层的驱动,也就是底层硬件接口的方法,一般就是芯片内部外设如何调用的函数集。比如串口了,I2S了,PWM了,乱七八糟了。
实际上这就是我们学习这个系列芯片的主打内容了。

使用特权

评论回复
11
734774645|  楼主 | 2015-11-6 20:29 | 只看该作者
关于自带那个例程的包包里都是关于哪些呢?主要是:
Basic peripheral usage examples: this layer contains examples of basic operation of
the STM32F4 peripherals using only the HAL and BSP resources.
基于外设的,主要用到了HAL和BSP
HAL是芯片内部的定义,BSP板级的,就是芯片之外的。

使用特权

评论回复
12
734774645|  楼主 | 2015-11-6 20:31 | 只看该作者
那些系统了,解码JPEG的库了,RTOW了,图形界面了,都是基于这些底层东西的上层建筑。
今天先说到这,明天我深入了解后,再慢慢介绍,还请高手出来指点一下。。想学HAL啊,这个是未来的发展。

使用特权

评论回复
13
grant_jx| | 2015-11-7 22:22 | 只看该作者
给了你中文的帮助也是白搭啊,难道函数名也能给你中文的?
函数命名已经很直观了。

HAL的参考范例还是太少了,里面的弯弯,上层应用靠CubeMX倒是可以快速,可惜细节了解需要花时间。

使用特权

评论回复
14
hpdell| | 2015-11-11 16:30 | 只看该作者
目前也在慢慢的捣鼓这个mx的库

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

3414

帖子

14

粉丝