CMSIS文件夹:
最近看了几个开发板厂的STM32F1系列的HAL库工程代码。发现关于时钟配置单独手写了一个,对于用惯了标准库的产生一个疑问,时钟配置不都自带的文件里配置好了,非特殊甚至直接拿来用就行。为什么要单独手写了一个呢?从启动文件往下捋,发现HAL库自带的system_f1xx.c里还真有时钟配置函数,头文件也声明了。但是sym32f1xx.h没有加入.....原因未知。好吧,明白了咋回事,觉得需要先捋一捋文件的关系,HAL库文件关系不用对比了。重要是对比一下CMSIS里的文件关系。
再大概的进行一下代码接口大的对比吧。
一.外部中断:
我们看库里面,HAL库不再有类似stm32f1xx_hal_exit.c的文件。
HAL库中EXIT已经归类到GPIO类,只剩下中断回调和清理标志两个函数。
二.串口
1.HAL库进一步将协议和硬件分离。对具体MCU底层硬件相关的配置如引脚、时钟、 DMA、中断等是在HAL_UART_MspInit(UART_HandleTypeDef *huart) 函数中完成的,该函数被 HAL_UART_Init 函数所调用。
2. HAL_UART_Transmit函数与标准库的发送函数不一样,虽然都是死循环,但是hal里加入了长度.超时等一系列封装的代码。