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

[复制链接]
 楼主| 内核558 发表于 2025-5-22 22:54 | 显示全部楼层 |阅读模式
gp, pi, GPIO, IO, ST, STM
用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节省资源。
gaonaiweng 发表于 2025-5-31 17:58 | 显示全部楼层
一旦需要SPI正常通信,必须重新配置回复用功能。
小迷糊仙 发表于 2025-6-4 12:26 | 显示全部楼层
学习了 感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部