本人初学STM32F1系列单片机,打算上手HAL库,应大四学长之约在寒假制作一个音乐播放器(MP3)。STM32F103RCT6是学长选的MCU型号,本来想着自己画板子,但是芯片管脚太细不好焊接就放弃了。最终在某宝上找到了一款STM入手的开发板。但是商家提供的LCD驱动(LCD使用硬件SPI接口,具体接在SPI2上)是建立在标准库之上的,无法直接使用。尝试了一下将HAL库和标准库合并,发现两个库文件并不兼容。这就需要对LCD驱动进行移植才能使用HAL库。捣鼓了三天(因为我的C语言实在是没什么基础),摸索出来HAL库最基本的用法,总算是移植成功了。实际上修改的地方并不多,现将修改的地方说明如下:
lcd.c
首先要删除#include "delay.h" ,因为HAL库自带一个延时函数HAL_Delay(),没有必要再定义一个延时函数。同时替换所有的delay_ms()为HAL_Delay()。
然后便是要删除函数void SPI2_Init(void),这个函数是用于配置SPI2接口和需要用到的GPIO的,但是标准库与HAL库函数接口不同,故不再适用。
删除以后,SPI2以及GPIO的初始化可以交付给STM32CubeMX进行配置,具体操作方法如下:
首先新建一个STM32Cube工程,选择芯片型号为STM32F103RCTx
这个软件有个坑,默认配置是不开启调试功能的!!如果你使用J-Link或ST-Link,默认设置下会导致下载一次后无法调试或下载。
正确的配置方式在SYS设置中开启调试功能的!!!
如果不慎没有开启调试功能,Under Reset模式下擦写即可
进行RCC设置
开启SPI2模块(全双工模式)