[STM32F1] 求助:STM32F103 AD采样结果不正确

[复制链接]
7265|26
sky.sun.zz 发表于 2018-5-4 16:39 | 显示全部楼层
xxggqq_123 发表于 2018-5-4 16:29
我试了定义成uint32_t也不可以

值得注意的一点是初始化时要先初始化DMA然后初始化ADC。
kingkits 发表于 2018-5-4 16:43 | 显示全部楼层
DMA已经自动把数据处理好了,你在DMA中断里还去处理
kingkits 发表于 2018-5-4 16:51 | 显示全部楼层
    // try to start adc1
    HAL_ADC_Start(&hadc1);

    //try to satrt DMA for adc
    HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adc_dma_data, MAX_ADC_DMA_DATA * EM_ADC_TOTAL_NUM);     //MAX_ADC_DMA_DATA * EM_ADC_TOTAL_NUM
我这个是用的HAlf库,的确数据长度不是按照字节计算的,我这里使用的是循环采样,DMA也是
但是启动DMA后,ADC数据会自动被装入缓冲区,----不需要在中断里单独处理ADC采样的数据。
缓冲区可以直接使用
 楼主| xxggqq_123 发表于 2018-5-4 17:04 | 显示全部楼层
sky.sun.zz 发表于 2018-5-4 16:39
值得注意的一点是初始化时要先初始化DMA然后初始化ADC。

真的可以了,太感谢你了。我以前先初始化ADC再初始化DMA没有问题,只不过芯片型号不一样。真的非常感谢你。
 楼主| xxggqq_123 发表于 2018-5-4 17:08 | 显示全部楼层
kingkits 发表于 2018-5-4 16:51
// try to start adc1
    HAL_ADC_Start(&hadc1);

我先初始化DMA再初始化ADC就可以了,还是非常感谢你,论坛里有你们这样的热心人真是太好了

评论

学习了。  发表于 2020-11-28 22:48
1111111111222 发表于 2018-5-6 12:47 | 显示全部楼层
可以的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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