STM32F0 上 SPI 端口的 GPIO I/O 控制
用stm32cubeMX生成代码,在项目中想要服用IO口在 SPI_Init()初始化函数之后,
是否可以在 SPI 的MOSI端口引脚上重新定义IO进行 GPIO 控制?
完全可以,SPI初始化后你可以随时用 HAL_GPIO_WritePin 来控制这些IO,只要先改成GPIO模式。 要想用作普通IO,得先用 HAL_GPIO_DeInit() 把原来的复用功能释放掉。 我以前就这么干过,把MOSI用作其他功能前手动改GPIO_Mode就行。 SPI不用时可以把MOSI配置成输出模式,比如推挽输出,想拉高拉低随便控制。 CubeMX生成的代码默认是AF模式,你得在用作GPIO之前改成GPIO_MODE_OUTPUT。 注意千万不要SPI正在通信的时候去强行改引脚模式,不然可能锁死总线。 我推荐封装个函数,根据状态切换MOSI引脚的GPIO/SPI模式,更安全一些。 STM32F0的IO复用比较简单,直接改寄存器或者用HAL函数都可以操作。 如果SPI初始化之后你还要改为GPIO,记得同时关闭SPI外设,不然可能会冲突。 你也可以在设计时就用一个非AF引脚模拟MOSI行为,用软件模拟SPI节省资源。
页:
[1]