STM32G474 STM32CubeMX DMA

参考教程:【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)_cubemx dma-优快云博客

【工具使用】STM32CubeMX-DMA配置(ADC+DMA 和 UART+DMA)_stm32cubemx adc dma-优快云博客

STM32CubeMX配置

1. 在需要打开外设的地方点击 DMA Settings - Add 添加通道

2. 基础设置

  • Channel:传输通道
  • Direction:数据传输方向
    • 外设到内存 Peripheral To Memory
    • 内存到外设 Memory To Peripheral
    • 内存到内存 Memory To Memory
    • 外设到外设 Peripheral To Peripheral
  • Piority:优先级
    • ​​​​​最高优先级 Very High
    • 高优先级 Hight
    • 中等优先级 Medium
    • 低优先级 Low

2. DMA Request Settings

  • Mode
    • Normal 正常模式
      当一次DMA数据传输完后,停止DMA传送 ,也就是只传输一次

      Circular 循环模式

      传输完成后又重新开始继续传输,不断循环永不停止

  • Increment Address

    • Src Memory 外设地址寄存器

      • 勾选Increment Address(递增)时,下一次传输时外设地址加 Data Width 个字

    • Dst Memory 内存地址寄存器(即代码中定义的数组)

      • 勾选Increment Address(递增)时,下一次传输时内存地址加 Data Width 个字,Data Width的值取决于传输的数据。

        • ​8位(Byte)​​:每次传输1字节(如uint8_t类型数据)。
        • ​16位(Half-Word)​​:每次传输2字节(如uint16_t类型数据)。
        • ​32位(Word)​​:每次传输4字节(如uint32_t类型数据)。

3. DMA Request Synchronization Settings 

特别高级的设置,默认即可

代码编写

外设的所有对应函数都使用带有DMA的版本。

### 配置 STM32G474VET6 的 PWM 功能 通过 STM32CubeMX 工具可以轻松配置 STM32G474VET6 微控制器的 PWM 输出功能。以下是关于如何实现这一目标的具体说明。 #### 使用 TIM 定时器生成 PWM 波形 STM32G474VET6 提供多个定时器模块用于生成 PWM 信号。在 CubeMX 中,可以通过图形化界面完成基本设置并生成初始化代码。具体操作如下: 1. **选择定时器外设** 打开 STM32CubeMX 软件,在项目创建完成后进入 Pinout & Configuration 页面。找到需要使用的高级控制定时器(如 TIM8),将其模式更改为 *PWM Output* 或其他相关选项[^2]。 2. **参数设定** 在 Clock Configuration 下调整系统时钟频率以满足应用需求;接着切换到 Peripherals -> TIMx (此处假设为 TIM8),按照实际应用场景填写以下字段: - Prescaler:预分频系数决定计数周期长度; - Counter Period:自动重装载寄存器值影响波形周期; - Pulse Width:比较匹配值对应占空比调节范围。 ```c htim8.Instance = TIM8; htim8.Init.Prescaler = 83; // 设置预分频数值 htim8.Init.CounterMode = TIM_COUNTERMODE_UP; htim8.Init.Period = 999; // 自动重载值 ``` 3. **启用通道与中断服务程序** 对于单极性输出仅需调用 `HAL_TIM_PWM_Start()` 函数即可开启指定信道工作状态;而双互补型则还需额外启动死区管理单元以及相应反相路径支持函数`HAL_TIMEx_PWMN_Start()`. 同时如果希望实时监控事件触发情况,则可激活 IT 版本接口方法来注册回调处理逻辑: ```c HAL_TIM_Base_Start(&htim8); HAL_TIM_Base_Start_IT(&htim8); // 开启更新中断请求 HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1); // CH1 正常方向使能 HAL_TIMEx_PWMN_Start(&htim8,TIM_CHANNEL_1); // CH1 反向同步驱动允许 __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,850); // 修改初始脉宽比例至约85% ``` 4. **GPIO 引脚映射确认** 确认所选定时器对应的 GPIO 外设已被正确定义成复用功能角色,并且其物理连接端口编号同软件内部声明一致。例如 PA6 和 PB14 均可能作为 TIM8_CH1 的候选绑定对象之一[^3]. --- ### 注意事项 - 不同型号芯片间存在资源差异,请务必查阅官方数据手册核实可用硬件特性列表。 - 当涉及外部中断源分配规划时要注意共享机制可能导致冲突现象发生,合理安排优先级顺序有助于规避此类风险. - 若计划利用 DMA 技术进一步优化性能表现,则应提前预留好必要的缓冲存储空间大小估算依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值