发新帖我要提问
12
返回列表
打印
[STM32F1]

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

[复制链接]
楼主: xxggqq_123
手机看帖
扫描二维码
随时随地手机跟帖
21
sky.sun.zz| | 2018-5-4 16:39 | 只看该作者 回帖奖励 |倒序浏览
xxggqq_123 发表于 2018-5-4 16:29
我试了定义成uint32_t也不可以

值得注意的一点是初始化时要先初始化DMA然后初始化ADC。

使用特权

评论回复
22
kingkits| | 2018-5-4 16:43 | 只看该作者
DMA已经自动把数据处理好了,你在DMA中断里还去处理

使用特权

评论回复
23
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采样的数据。
缓冲区可以直接使用

使用特权

评论回复
24
xxggqq_123|  楼主 | 2018-5-4 17:04 | 只看该作者
sky.sun.zz 发表于 2018-5-4 16:39
值得注意的一点是初始化时要先初始化DMA然后初始化ADC。

真的可以了,太感谢你了。我以前先初始化ADC再初始化DMA没有问题,只不过芯片型号不一样。真的非常感谢你。

使用特权

评论回复
25
xxggqq_123|  楼主 | 2018-5-4 17:08 | 只看该作者
kingkits 发表于 2018-5-4 16:51
// try to start adc1
    HAL_ADC_Start(&hadc1);

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

使用特权

评论回复
评论
一叶倾城wwq 2020-11-28 22:48 回复TA
学习了。 
26
1111111111222| | 2018-5-6 12:47 | 只看该作者
可以的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则