STM32H7的DAC2使用问题

问题:使用hal库生成的DAC代码,DAC1输出正常,DAC2无输出。

排查过程:看stm32H7的手册,发现DAC1和DAC2不在同一内存地址上,觉得有点奇怪,进一步看,发现两者的时钟总线不同,

DAC1使用的是APB1

DAC2使用的是APB4

而我的HAL库版本是1.9.1,当下最新的HAL库版本是1.11.1

1.9.1生成的代码是这样使能这两个DAC时钟的:__HAL_RCC_DAC12_CLK_ENABLE();进去看这个宏函数的原型,

写的是使能DAC12的总线时钟,但是实际仅使能了DAC1的时钟。

解决办法:

解决1:自己写代码修改总线使能。

解决2:更新HAL重新生成代码。

当然我会选择最简单的第二种方法。更新HAL库以后,生成DAC2的时候,代码如下

 __HAL_RCC_DAC2_CLK_ENABLE();的实现如下:

这样DAC2的时钟就使能了,外设就可以使用了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
STMicroelectronics(意法半导体)的STM32H7系列基于ARM Cortex-M7内核和Cortex-M4内核,是一款高性能的微控制器系列。它具有强大的处理能力和丰富的外设,包括数字模拟转换器(DAC)。 在STM32H7系列中,DAC模块用于生成连续或离散的模拟电压输出。该系列具有多个DAC通道,可将模拟信号输出到外部电路或设备。DAC通道可以通过一定的配置设置为不同的工作模式,例如单通道模式、双通道模式和并行模式等。 开发者可以使用ST的CubeHAL驱动库和CubeMX配置工具来编写STM32H7系列的DAC例程。首先,在CubeMX中启用所需的DAC通道,并配置DAC的时钟源和分辨率等参数。然后,使用CubeMX生成代码框架并导出到开发环境中。 在生成的代码框架中,可以找到与DAC相关的函数和宏定义。这些函数和宏定义可以用来配置DAC通道的输出电压范围、DMA传输设置以及中断处理等。开发者可以根据自己的需求调用这些函数和宏定义来实现所需功能。 在编写DAC例程时,需要先初始化DAC通道并设置其输出电压范围。然后,可以使用单个数据或DMA传输来更新DAC缓冲区,并生成模拟输出信号。此外,还可以使用中断处理函数来处理DAC传输完成或错误等事件。 总之,STM32H7系列的DAC例程是基于CubeHAL驱动库和CubeMX配置工具的。开发者可以使用这些工具来轻松配置和编写DAC代码,并实现所需的模拟输出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值