关于我这种曾经只触摸过51和AVR单片机编程的小菜来说,现在开端学习STM32的编程,关于函数的功用以及C言语的语法都还好了解,难的是它供给的那一套硬件笼统层(HAL)驱动是怎样和其他的东东调配在一起组成一个又一个的工程。
首先上两张从ST官方供给的HAL固件库文档截图
从这两张图的话,能对它的构架看出个一二,下面稍稍详细一点剖析
HAL固件库编程,它的文件安排大致分三个部分
– HAL驱动
– CMSIS驱动
– 用户编写程序
而假设你运用的是ST官网的开发板,那么你还有一套现成的驱动可供运用,板级支撑包(BSP),那么正好向我相同,可是,我不太喜爱运用这个东西,能自己写仍是自己写的好。
HAL驱动毫无疑问便是ST供给的一些包装好的硬件笼统层的驱动,这个便是ST供给的利器,有必要有,不必是不可能的。CMSIS的话,这个大概是ARM内核相关的一些驱动吧,这个一般咱们编程都操作不到,咱们大部分都是调用HAL的程序。除了这两个有必要有的,当然主函数也是有必要有的,还有其他的一些东东,这些还比较多,但都能够自己参照ST给的例程或是模板自己从零开端写。
下面就其中一些用户装备,但涉及到驱动的文件做一些阐明。
有一个stm32f3xx_hal_conf.h(以F3系列为例阐明)的HAL驱动装备文件,这个究竟是算HAL驱动仍是用户自定义文件呢,我更倾向于后者。在固件库中会模板,能够去修正里边的内容,我就喜爱自己从头写,东西也不多,可是现在自己写还不成功,再看看,这块应该问题不大。
stm32f3xx_it.c,这个文件在模板给的文件里有,可是东西不是许多,看姓名就知道这个是和中止有关,关于我的现阶段,用到的中止不多,用到就自己写就好了。
startup_xxx便是以startup最初的一个什么文件,这个貌似是整个工程的开始文件,默许是放在CMSIS下,仍是一个.s类型的文件。
有个system什么的文件,它也是包含在CMSIS下的,这个和上一个的文件都比较特别吧,不过好在这两都不必咱们去修正,只要到对应的文件夹下复制出来就好了。
总归,便是分三部分,CMSIS,HAL和用户自定义文件,这不管是在文件夹安排,仍是在工程结构安排上都能够依照这个逻辑。