stm32duino 在第三方库中使用 SPI2
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 了。注意,修改过的类文件要避免在其它地方使用,否则可能会报错,最好复制一份,将当前库修改名字重新引用。