以前,在STM32F10x的时候,ST的库,是不错的。
后来出了个HAL库,真烂。
也不知道ST公司的人是怎么想的???
它的硬件库,是一种平台,只要提供功能服务就行了。(以前的库,就是这样)
现在的HAL库,把功能服务和实现策略都做到一起,想拆开很难。
比如USART的实现,提供了一个结构,包含一大堆的东西。而实际上,比如初始化时用到的参数,也放在这个结构里面。
要知道,初始化参数,很大的可能是只用一次,以后再也不用到,平白的占用很多内存空间。
把这个结构定义在外部,占用全局内存,放在函数里面,占用栈空间。
在实际实现中,如果把这种结构放在{}中,在{}中进行初始化,栈空间占用会很少。
比如:
void x_Init()
{
{
A a;
............
...........
A_Init(&a);
}
{
B b;
...............
..............
B_Init(&b);
}
}
上述代码,所占栈空间,以结构A、B中,字节数多决定。
STM32的MCU,是单片机,不是PC机,内存能节省的,就要节省。
现在ST公司的HAL库这么一搞,那么个库就基本上是个废库,只能起到参考作用,很多代码得息去改写。这就失去了库的初衷了,意义就不大。
唉!!!!
|
你这种说法很像刚出标准库时,使用寄存器开发的人的说法哦。如果觉得效率低,有没有试过HAL+寄存器混合编程呢?