(资料图片)
stm32duino 库默认将SPI映射在 STM32 单片机的 SPI1 中。如果不够用可以按照官方教程来解决。 https://github.com/stm32duino/Arduino_Core_STM32/wiki/API
但是,如果 SPI_3 使用了第三方 SPI 库,如 RF24.h库,就不能很好工作了。因为第三方库一般使用默认的 SPI 端口。此时,如果按照官方 API 教程,直接在程序中重映射 SPI 端口,会报错。
上述 SPI 可能不存在。是否存在,在于第三方库是如何实例化 SPI 的。如何解决呢?我们以 RF24.h 库为例。
一般地,库文件在 用户名\Documents\Arduino\libraries\RF24的文件中。打开 RF24.cpp 文件。根据官方教程,重映射 SPI 端口需要在 begin() 函数之前。那我们就找到 begin() 函数,并在其之前重映射端口。打开文件我们看到,实例化 SPI 类的类名是 _spi 或者 _SPI ,那我们就将 2 个都重映射。
然后就可以愉快地在第三方库中使用 SPI2 了。注意,修改过的类文件要避免在其它地方使用,否则可能会报错,最好复制一份,将当前库修改名字重新引用。