搜索
bottom↓
回复: 7

请教:STM32H750定时器3与DAC结合不到一起

[复制链接]

出0入17汤圆

发表于 2022-10-2 18:03:18 | 显示全部楼层 |阅读模式
淘宝上买的凌智电子的STM32H750VBT6的最小系统板
我的目标是在定时器中断里面更新DAC值产生相应的波形,想组合例程中的定时器3中断例程和DAC例程来使用
这块板子所有例程的主函数的前5行都是下面这样的
        CPU_CACHE_Enable();
        HAL_Init();                                  // 初始化HAL库
        MPU_Memory_Protection();        // MPU内存保护
        SystemClock_Config();                 // 设置时钟,400Mhz
        SysTick_clkconfig(400);         // SysTick参数配置
原定时器例程是中断函数中闪烁LED,原DAC例程就是输出一个电压值,上面5行之后我写了下面5行,工程0 error 0 warning
        LED_Init();               // 初始化LED
        TIM3_Init(5000-1,20000-1);// 定时器3初始化,定时器时钟为200M,分频系数为20000-1,
                                                                                                                // 所以定时器3的频率为200M/20000=10K,自动重装载为5000-1,那么定时器周期就是500ms
                // 开启2.048V的内部参考电压(如果使用外部基准电压的话,请屏蔽开启内部参考电压的程序)
        MY_VREFBUF_Init(SYSCFG_VREFBUF_VOLTAGE_SCALE0);       
        DAC_Init();                                                        // 初始化DAC1通道1
        DAC_Set_Vol(3000);                        // DAC输出电压
现象:LED正常闪烁,DAC没有输出,只要保留这两行LED_Init();TIM3_Init(5000-1,20000-1);中的任意一行DAC就没有输出,两行都屏蔽掉,DAC正常输出,鼓捣了好几天了,实在不知道哪里冲突了,从原理图上看也没有I/O冲突
板子带的例程中有一个信号源的,使用的定时器6 DMA触发的,码表写死的,中断函数都找不到在哪里(玩51过来的,能力有限,第一次用stm32,也不想深入研究了),这个有点不太满足我的需求
求助:解决问题的,充点话费意思一下,非常感谢

出0入17汤圆

 楼主| 发表于 2022-10-2 18:04:47 | 显示全部楼层
就是想带学生做一些简单的信号处理实验,我知道这样不合理,但FPGA和DSP实在上手周期太长,难度太大,只想着用这个凑合一下,以速度换性能吧,对学生来说stm32友好很多,客观的说现在玩这些的学生以后95%以上也不会从事这些工作,所以就当熟悉一下信号处理的基础理论吧,这点不展开了
我自己限于年龄、精力、能力这些有限,也不能做多深入的研究了,顶多是给学生一些宏观的指导,疫情原因,学生进不了实验室,基本是我自己在鼓捣,全部是在已有的例程上修修改改,原例程是基于HAL库的,我没有使用STM32CubeMX,也不会用
工程太大了,需要的话我想办法上传,或者只传关键的几个函数

出0入228汤圆

发表于 2022-10-3 01:36:45 来自手机 | 显示全部楼层
看看树莓派的 单片机  rp2040 。你这应用,用它很简单就搞出来了。而且更不用让学生去死记硬背。

出0入300汤圆

发表于 2022-10-3 03:11:16 来自手机 | 显示全部楼层
既然是公家的事情,直接花钱雇造开发板的人就可以了

出0入17汤圆

 楼主| 发表于 2022-10-3 10:29:22 | 显示全部楼层
奶奶的,把DAC初始化放在LED初始化前面就好了,其实写51代码也碰到过这种情况,但那个一定能找到根本原因,估计这个是没有能力找到根本原因了

出0入102汤圆

发表于 2022-10-3 10:45:10 | 显示全部楼层
MYQQ2021 发表于 2022-10-3 10:29
奶奶的,把DAC初始化放在LED初始化前面就好了,其实写51代码也碰到过这种情况,但那个一定能找到根本原因, ...
(引用自5楼)

不会吧,我看Armfly的例程是这样初始化的,
  1.       
  2.         bsp_InitKey();            /* 按键初始化,要放在滴答定时器之前,因为按钮检测是通过滴答定时器扫描 */
  3.         bsp_InitTimer();         /* 初始化滴答定时器 */
  4.         bsp_InitUart();           /* 初始化串口 */
  5.         bsp_InitExtIO();        /* 初始化FMC总线74HC574扩展IO. 必须在 bsp_InitLed()前执行 */        
  6.         bsp_InitLed();           /* 初始化LED */        
  7.         
  8.         bsp_InitDAC();         /* 初始化DAC */        
复制代码

出0入17汤圆

 楼主| 发表于 2022-10-3 10:50:26 | 显示全部楼层
N_EMBED 发表于 2022-10-3 10:45
不会吧,我看Armfly的例程是这样初始化的,
(引用自6楼)

我没有能力找到根本原因,只能得过且过了

出0入0汤圆

发表于 2022-10-4 12:10:17 | 显示全部楼层
代码应该能看出,特别是是link,跑完一个初始化,看看dac gpio的数值,再先跑led初始化后dac初始化,查两组有何差别,你可以试试把定时器初始化放最后面,也许dac led前后就没关联
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 15:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表