第一次接触HAL库函数,这里只是小记一下,有不对的地方还请各位大侠指出。
首先HAL表面上看即是硬件抽象层的缩写,在CubeMX官方的给出的第一个ADC_DMA例子中SRC文件夹中首先看到的是main.c文件,其次是xxmsp.c文件、xxit.c文件和System_xx.c文件。
刚开始就犯了个严重错误
只是注意到了main文件里面的代码,感觉HAL还挺简单只是一个ADC_HandleTypeDef和ADC_ChannelConfTypeDef的配置就搞定了ADC_DMA功能,但是觉得好像少了点东西,不对……是少了太多东西了,在主函数里只看到了一些简单ADC工作模式通道的配置,然而并没有看到DMA的配置和GPIO的配置还有时钟开启等操作。SRC文件夹里有四个文件,那么打开另外一个文件msp.c文件,bsp是板级支持包那么msp的M应该是MCU,果然配置文件在这里,前面所缺少的配置在这里基本都可以找到,HAL_ADC_MspInit函数里面。
HAL的这种构架比起原先的库函数好像又抽象了一层
,配合CubeMX会使硬件配置更加快捷,不过前提是要掌握硬件的使用方法和HAL函数的这种结构方式。总之CubeMX只是配置外设的工作方式,具体怎么工作什么时候工作还要自行敲代码。