内核558 发表于 2025-5-22 22:54

STM32F0 上 SPI 端口的 GPIO I/O 控制

用stm32cubeMX生成代码,在项目中想要服用IO口

在 SPI_Init()初始化函数之后,
是否可以在 SPI 的MOSI端口引脚上重新定义IO进行 GPIO 控制?

公羊子丹 发表于 2025-5-24 09:05

完全可以,SPI初始化后你可以随时用 HAL_GPIO_WritePin 来控制这些IO,只要先改成GPIO模式。

周半梅 发表于 2025-5-24 09:05

要想用作普通IO,得先用 HAL_GPIO_DeInit() 把原来的复用功能释放掉。

帛灿灿 发表于 2025-5-24 09:06

我以前就这么干过,把MOSI用作其他功能前手动改GPIO_Mode就行。

童雨竹 发表于 2025-5-24 09:07

SPI不用时可以把MOSI配置成输出模式,比如推挽输出,想拉高拉低随便控制。

万图 发表于 2025-5-24 09:08

CubeMX生成的代码默认是AF模式,你得在用作GPIO之前改成GPIO_MODE_OUTPUT。

Wordsworth 发表于 2025-5-24 09:08

注意千万不要SPI正在通信的时候去强行改引脚模式,不然可能锁死总线。

Bblythe 发表于 2025-5-24 09:09

我推荐封装个函数,根据状态切换MOSI引脚的GPIO/SPI模式,更安全一些。

Pulitzer 发表于 2025-5-24 09:10

STM32F0的IO复用比较简单,直接改寄存器或者用HAL函数都可以操作。

Uriah 发表于 2025-5-24 09:11

如果SPI初始化之后你还要改为GPIO,记得同时关闭SPI外设,不然可能会冲突。

Clyde011 发表于 2025-5-24 09:12

你也可以在设计时就用一个非AF引脚模拟MOSI行为,用软件模拟SPI节省资源。
页: [1]
查看完整版本: STM32F0 上 SPI 端口的 GPIO I/O 控制