首页 » 智能 » STM32开拓从标准库到HAL库的转变_尺度_项目

STM32开拓从标准库到HAL库的转变_尺度_项目

雨夜梧桐 2024-10-18 23:27:39 0

扫一扫用手机浏览

文章目录 [+]

STM32开拓实在也是如此。
在开始学习stm32的时候大部分的人该当都是从stm32的标准库开始学起。
在没有打仗到或者用过其他开拓库的时候我不以为stm32的标准库有什么不好,我从开始学习stm32的时候首先打仗的是STM32的标准库,直接寄存器开拓的办法在开始学STM32的时候教程里的老师就说纯寄存器的开拓办法不适宜STM32的程序开拓,由于stm32的寄存器有上百乃至上千个,寄存器开拓须要清楚寄存器的每一个寄存器位的功能是什么从而设定指定的寄存器值从而使能或者配置成你想要的功能。
也便是说纯寄存器开拓你要清楚上百乃至上千个寄存器的操作,当然你也可以查找相应的STM32数据手册,只是要花点韶光而且。
寄存器开拓也是有好处的,那便是直接,大略,代码比较简洁。
比如单总线的18B20温湿度传感器的总线换向,代码如下所示:

寄存器办法:

STM32开拓从标准库到HAL库的转变_尺度_项目 智能

#define DS18B20_IO_IN() {GPIOB->CRL&=0XFFFFFFF0;GPIOB->CRL|=8<<0;}#define DS18B20_IO_OUT() {GPIOB->CRL&=0XFFFFFFF0;GPIOB->CRL|=3<<0;}

标准库办法:

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);

这两种办法你喜好哪种?寄存器虽然大略但是如果不清楚寄存器的情形是看不懂程序这样配置的目的是什么?以是还是回到标准库吧。

从学stm32后的两三年里无论是公司还是自己的干系项目利用的stm32芯片有STM32F0系列、STM32F103系列、STM32F4、STM32L等等这些芯片在stm的系列里相对来说都是比较旧的基本上都是利用标准库的办法进行开拓。
两三年韶光都在利用标准库,没有特殊设计须要也就没有去学其他的库进行开拓,直到去年开始stm32系列芯片从常用的几个系列开始价格猖獗暴涨,stm32f103c8t6从原来的八九块钱的价格暴涨到如今的100块以上。
STM32F103RCT6从原来的10几块的价格暴涨到如今的200块以上。
十倍百倍的暴涨率不得不找一些之前相比拟较少用而且价格还算正常的芯片来用。

之前有一个项目做方案的时候选用的是stm32f103cbu6当时查的价格是十几块,等设计完事理图画好PCB发出去打样后采购测试元件时创造一两天的韶光stm32f103cbu6的价格已经从10几块升到了50多块,一下子就想把发出去的PCB取消掉,只可惜已经取消不了,那只好找一款替代的芯片来利用,经由查找数据手册比拟创造stm32f411cbu6和stm32f401cbu6芯片只有一个IO口跟stm32f103cbu6的IO口有点差异,而且stm32f411cbu6和stm32f401cbu6的价格当时是22块,价格差不多就选了更精良的stm32f411cbu6。

写程序的时候创造标准库对付stm32f411彷佛并不是那么的适用。
stm32f411的一些核心板的配套例程创造基本上都不因此标准库的办法写的,对付一个陌生的开拓办法一开始肯定不想用,我只想用标准库。
利用标准库经由一番测试后涌现各种问题,末了都是没办法办理。
好吧,看来自己的能力还是不足。
标准库这种办法只能放弃,好好学习新的开拓办法了。

这种不是标准库的开拓办法会是什么。
那便是HAL库。
是STM32最新推出的抽象层嵌入式软件。
对付HAL库有这样的描述:

HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。
HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。
该库供应了一整套同等的中间件组件,如RTOS,USB,TCP / IP和图形等。

HAL库是基于一个非限定性的BSD容许协议(Berkeley Software Distribution)而发布的开源代码。
ST制作的中间件堆栈(USB主机和设备库,STemWin)带有许可轻松重用的容许模式, 只假如在ST公司的MCU 芯片上利用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被许可随便修正,并可以反复利用。
至于基于其它著名的开源办理方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户容许条款。

对付HAL库和标准库的比拟是这样描述的:

比较标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。
HAL库是ST未来主推的库,ST新出的芯片已经没有STD库了,比如F7系列。
目前,HAL库已经支持STM32全线产品。

通过笔墨描述可以知道HAL库的几个点:

最大可移植性。
供应了一整套同等的中间件组件,如RTOS,USB,TCP / IP和图形等。
通用的用户友好的API函数接口。
ST新出的芯片已经没有标准库。
HAL库已经支持STM32全线产品。

第一点,最大可移植性。
对付标准库来说F1系列的标准库与f4和f0的标准库,虽然同样是标准库但是各自又有一定的差异假如想把f1上开拓的程序移植到F4芯片上,事情相对来说比较繁琐,如果是从下往上的话,首先便是要把F1的标准库给更换掉然后就很多的报错,好了我也没这么干过。
一样平常都是把功能模块给搬过去,以是说程序设计的模块化是很有必要的。
HAL库的最大可移植性在于不管你是F1还是F4配置底层的函数都是一样的。

第二点,供应了一整套同等的中间件组件,如RTOS,USB,TCP / IP和图形。
利用标准库的时候你是怎么移植RTOS,怎么利用USB的?利用标准库的时候无论是利用RTOS还是ucos这些第三方功能基本上都是须要自己下载相应的文件然后加入到项目中来,痛楚的是加到项目后编译不过而又不知道哪里有问题。
UCOS HAL库是没有供应的,这里只是用作举例解释。
USB虽然stm32芯片有这个功能但是标准库并没有这部分的支持也是须要移植很多的usb干系的很多文件才能利用。
而HAL库已经把这些功能归纳在一起,利用也非常大略,只须要利用图像软件大略配置就可以正常利用。

第三点,通用的用户友好的API函数接口。
API函数的命名比较合理,便是一看就知道这个API函数是干嘛用的。
还有通用性也比较好。

第四点,这个很好理解。
不管用什么库,都是STM32官方供应,新出的芯片已经没有标准库,也便是说st大概不再对标准库进行更新和掩护。
而更多的是在掩护新的HAL库。
新事物的涌现必将取代往事物。
学习新出的HAL库确实是有必要的。

第五点就不用说了。

利用标准库创建一个项目模板的步骤:新建一个基于 V3.5 版本固件库的 STM32F1 工程模板。
步骤如下:利用MDK创建一个空的项目。
这部分跟8051创建项目基本上一样。
下载对应的芯片标准库包。
把芯片包里面的干系文件复制到项目中来。
然后把干系文件添加到项目,某个项目模板下面的文件如下所示

文件多的时候就非常随意马虎出错,少一个文件,少一个设置编译出的错会让你很难熬痛苦。
以是用标准库开拓一样平常都会直策应用模板,但是对付一些功能的移植还是比较麻烦。
标准库是从底层到运用的功能基本上都是须要自己去写。
当你把底层弄好时已经花了不知多久了。

利用HAL库创建一个项目又是什么样的体验:

利用HAL库前你须要下载STM32CubeMX这个软件,由于项目的创建不须要你自己去复制相应的文件,创建项目的操作基本上在这个软件上面进行。
软件的安装和配置可以在网上找到很多的教程在这就不说了。
下面就以基于HAL库的USB虚拟串口为例。

第一步,打开软件选择对应的芯片。

第二步,配置时钟。

时钟的配置按照自己利用的晶振进行设置。
选择不同的芯片上面会有提示该芯片的最高频率。
软件默认设置25M的外部时钟。

我用的是stm32f411芯片,软件显示时钟最高频为100M,我用的外部晶振是8M晶振,设置如下

USB的时钟固定为48M,须要选择打开了USB设备才能设置USB的时钟,只须要选择得当的分频达到48M即可。

第三步,配置自己要开启的功能。

第四步,然后设置项目导出的干系配置

设置项目名称、保存位置、编译环境等等。
还有一个比较主要的便是保存位置和项目名称不能利用中文,否则导出的项目会涌现问题。
下面设置项目文件干系的设置比较主要。

第五步,设置完就可以导出项目。

导出的项目底层是已经配置好直接编译好下载到芯片就可以。

到此HAL库项目创建完成。
利用这个软件创建项目一开始是有点麻烦,由于不熟习,用多几次就好了。

对付项目创建来说利用HAL库可以节省很多底层配置部分的韶光,对付项目开拓的韶光来说这大概更合理,可以把更多的韶光用在关键的功能实现部分,而不是配置芯片底层功能。

好久没有更新了,对不住关注我的各位好朋友。

自从换了事情后都忙于事情实在是没韶光写了,但是不能不写的。
以是就有了这篇文章。

创作不随意马虎,还是要花点韶光,如果你以为有用就点赞,转发加关注,表示支持,你的支持是我的动力,小箫在此谢过了。

标签:

相关文章

一款赛博朋克VFD时钟_芯片_屏幕

跟LED、LCD比较较,由于它可以做多色彩显示,亮度高,不受周围环境的影响,纵然在晚上,也同样发出鲜亮的光彩。VFD的寿命在3万小...

智能 2025-01-04 阅读0 评论0

剥模器CMS,智能化模具制造领域的革新者

随着我国经济的快速发展,制造业已成为国家经济的支柱产业。模具制造作为制造业的重要组成部分,其发展水平直接关系到国家制造业的整体实力...

智能 2025-01-04 阅读0 评论0

力控脚本语言,开启智能工业新时代的钥匙

随着科技的飞速发展,智能制造已成为全球工业发展的趋势。而力控脚本语言作为智能制造领域的重要技术之一,正逐渐成为开启智能工业新时代的...

智能 2025-01-04 阅读0 评论0

动态语言类型,新时代编程艺术的魅力

随着互联网技术的飞速发展,编程语言在计算机科学领域扮演着越来越重要的角色。而在这其中,动态语言以其独特的魅力,成为了新时代编程艺术...

智能 2025-01-04 阅读0 评论0