[STM32F4] 如何使用HAL库在CubeIDE中设置DMA到GPIO的传输?

[复制链接]
323|2
Treasure101 发表于 2025-9-22 13:49 | 显示全部楼层 |阅读模式
我用的是STM32 F4 Discovery开发板(STM32F407VG)。
我的目标是将一个整型数组(8位)的内容传输到8个GPIO引脚。
在的CubeMX界面中,我配置了DMA2与Timer1配合使用,采用存储器到外设模式。
我需要一个简单的示例,演示如何将数组的一个值推送到GPIO引脚。使用的GPIO引脚是GPIOE的8到15引脚。
如果数组的值为(0xFF),GPIO引脚的值应为"1 1 1 1 1 1 1 1"。
如何配置呢

海滨消消 发表于 2025-9-22 14:41 | 显示全部楼层
c
#include "main.h"

DMA_HandleTypeDef hdma_tim1_up;
TIM_HandleTypeDef htim1;

uint8_t data[] = {0xFF, 0x00, 0xAA, 0x55}; // 测试数据

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_DMA_Init();
    MX_TIM1_Init();

    // 启动 TIM1 和 DMA
    HAL_TIM_Base_Start(&htim1);
    HAL_DMA_Start(&hdma_tim1_up, (uint32_t)data, (uint32_t)&(GPIOE->ODR), 4);
    __HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_UPDATE);

    while (1) {
        // 主循环可空转,DMA 自动传输
    }
}
豌豆爹 发表于 2025-9-22 14:41 | 显示全部楼层
✅ GPIOE 8~15 配置为输出
✅ TIM1 触发 DMA 传输
✅ DMA 从数组读取数据并写入 GPIOE->ODR
✅ 测试数据 0xFF 使 PE8~PE15 全部输出 1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

58

帖子

1

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