STM32 面向对象外设驱动

  • 本项目为个人编写的一套 STM32 外设驱动集合,采用 C 语言实现“结构体+函数指针”的面向对象编程思想,可大幅度提高代码的模块化与可复用性。
  • 代码链接:https://github.com/903257958/stm32_oop_driver (如果对你有帮助,请给仓库点个 ⭐ 吧,感谢支持,让我更有动力继续更新。)

项目特点

  • 提供 STM32 与 GD32 部分型号标准外设库的测试例程;
  • 驱动文件高度可移植:无需修改初始化函数内部代码,只需参考所提供例程的 app 目录内文件,通过结构体在初始化阶段传入自定义的引脚接口与配置信息(部分驱动还需根据实际硬件修改 xxx.h 中的”用户配置“部分),即可快速适配任意开发板
  • 驱动兼容多型号:所有芯片都使用相同的驱动代码,也可通过修改驱动文件 xxx.c 中的“硬件抽象层”来适配其他型号 MCU,甚至迁移至 HAL 库;
  • 本仓库专注于驱动,所以 app 目录只是对驱动的使用做最简单直接的演示,你在项目中完全可以用更规范的形式使用驱动(例如用接口函数将 bsp 层的设备结构体指针提供给其他层);
  • 适配 VSCode 插件 EIDE,如果不使用 VSCode 开发,eide文件夹可直接删除。

驱动列表

驱动模块 简要说明
xxx_gpio GPIO 基础输入输出控制
xxx_led_and_delay LED 驱动与 SysTick /定时器延时函数
xxx_exti 外部中断
xxx_exti_encoder 外部中断控制旋转编码器
xxx_timer_irq 定时器中断
xxx_timer_oc_pwm_servo 定时器输出比较 PWM 驱动舵机
xxx_timer_oc_pwm_tb6612 定时器输出比较 PWM 驱动 TB6612(直流电机驱动)
xxx_timer_oc_pwm_rgb 定时器输出比较 PWM 驱动 RGB 灯
xxx_timer_oc_pwm_dma_ws2812b 定时器输出比较 PWM + DMA 驱动 WS2812B 灯带
xxx_timer_ic_sr04 定时器输入捕获驱动 SR04 超声波测距模块
xxx_key 按键扫描+延时消抖
xxx_key_fifo 按键环形缓冲区+定时器中断消抖
xxx_key_fifo_event 支持双击/长按的按键事件处理(基于 xxx_key_fifo
xxx_adc ADC采集
xxx_uart 串口发送+空闲中断+ DMA 接收
xxx_esp8266 ESP8266 AT指令(时间天气获取/TCP透传)
xxx_i2c_soft_aht21 软件 I2C 驱动 AHT21(温湿度)
xxx_i2c_soft_ap3216c 软件 I2C 驱动 AP3216C(光照/距离/红外)
xxx_i2c_soft_bmp280 软件 I2C 驱动 BMP280(温度/气压)
xxx_i2c_soft_eeprom 软件 I2C 读写 EEPROM(AT24C02)
xxx_i2c_soft_mpu6050 软件 I2C 驱动 MPU6050(陀螺仪)
xxx_i2c_soft_max30102 软件 I2C 驱动 MAX30102(心率/血氧)
xxx_i2c_soft_ssd1306 软件 I2C 驱动 0.96 寸 OLED(SSD1306, 128×64)
xxx_spi_dma_ssd1306 硬件 SPI + DMA 驱动 0.96 寸 OLED(SSD1306, 128×64)
xxx_spi_dma_st7735 硬件 SPI + DMA 驱动 1.8 寸 LCD(ST7735, 128×160)
xxx_spi_dma_st7789v 硬件 SPI + DMA 驱动 1.69 寸 LCD(ST7789V, 240×280)
(+软件 I2C 驱动 CST816T 触摸屏)
xxx_spi_w25qx 硬件 SPI 读写外部 Flash(W25QX)
xxx_spi_soft_w25qx 软件 SPI 读写外部 Flash(W25QX)
xxx_fsmc_ili9341 FSMC 驱动2.8寸LCD(ILI9341, 240×320)
xxx_can CAN 通信
xxx_flash 内部 Flash 读写
xxx_rtc RTC 实时时钟
xxx_dht11 DHT11 驱动(温湿度)
xxx_ds18b20 DS18B20 驱动(温度)
xxx_stepper_motor 步进电机驱动
xxx_vibration_motor 振动马达驱动
posted @ 2025-12-05 16:43  函数指针  阅读(0)  评论(0)    收藏  举报