[AT32F407] AT32F407的GPIO翻转,大家用什么方式?

[复制链接]
 楼主| 记忆花园 发表于 2025-6-30 16:43 | 显示全部楼层 |阅读模式
新上了一个项目,不知不觉中,硬件组的设计人员发挥了“聪明才智”导致放着好好的驱动外设不使用,非要让我使用GPIO模拟。得,这就涉及到了GPIO翻转了!现在考虑有两种方式:一种方式使用驱动库,简单易用;另一种,使用传说中的bit-banding方式。前者在参考官方的示例io_toggle.c倒是非常轻松就实现了。
  1. #define SPI_CS_LOW()        GPIOA->clr = GPIO_PINS_4
  2. #define SPI_CS_HIGH()        GPIOA->scr = GPIO_PINS_4

  3. #define SPI_MISO_LOW()        GPIOA->clr = GPIO_PINS_6
  4. #define SPI_MISO_HIGH()        GPIOA->scr = GPIO_PINS_6

  5. #define SPI_MOSI_LOW()        GPIOB->clr = GPIO_PINS_15
  6. #define SPI_MOSI_HIGH()        GPIOB->scr = GPIO_PINS_15

  7. #define SPI_CLK_LOW()                GPIOA->clr = GPIO_PINS_5
  8. #define SPI_CLK_HIGH()        GPIOA->scr = GPIO_PINS_5
后者 bit-banding还在研究中!我就想问问,大家遇到这个应用场景 如何做软件设计啊?



我是一颗胖蘑菇 发表于 2025-7-3 21:57 | 显示全部楼层
我建议使用驱动库,因为它更简单,而且官方提供的示例代码已经非常成熟,可以减少开发时间和出错率。
寂静之回响 发表于 2025-7-8 13:42 | 显示全部楼层
不管你用什么方法,自己写还是用库,最后都是写寄存器,看你自己习惯吧
HarmonySage 发表于 2025-7-11 20:44 | 显示全部楼层
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
wangshujun 发表于 2025-7-14 09:43 | 显示全部楼层
软件模拟spi总是不如硬件的速度快呀,现在mcu早都普及了硬件spi的
懒癌晚期患者 发表于 2025-7-15 23:50 | 显示全部楼层
我倾向于使用驱动库,因为它确实简单易用,而且官方的示例代码已经提供了很好的参考。对于不熟悉bit-banding的人来说,直接使用库函数可以节省很多时间。
 楼主| 记忆花园 发表于 2025-7-29 16:46 | 显示全部楼层
懒癌晚期患者 发表于 2025-7-15 23:50
我倾向于使用驱动库,因为它确实简单易用,而且官方的示例代码已经提供了很好的参考。对于不熟悉bit-bandin ...

效率有点低。
我试过了,还是寄存器方便要快很多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

32

帖子

0

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