打印
[STM32F7]

stm32外设之ADC|DAC总结

[复制链接]
楼主: 慢动作
手机看帖
扫描二维码
随时随地手机跟帖
41
慢动作|  楼主 | 2022-11-23 15:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
现在我们对配置做一些小修改,打开连续转换模式

使用特权

评论回复
42
慢动作|  楼主 | 2022-11-23 15:58 | 只看该作者
因为使能了连续转换,故而不在需要我们手动的去使能转换了

使用中断触发

使用特权

评论回复
43
慢动作|  楼主 | 2022-11-23 16:00 | 只看该作者
在前面的配置中加入中断

使用中断采集

使用特权

评论回复
44
慢动作|  楼主 | 2022-11-23 16:01 | 只看该作者
使用中断采集

使用特权

评论回复
45
慢动作|  楼主 | 2022-11-23 16:02 | 只看该作者
中断采集函数,可以看到这里我又注释了启动中断采集函数,因为前面已经使能了连续转换,所以ADC本身就会不断地触发中断,就不需要我们自己在中断函数里面手动采集了

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
        HAL_ADC_PollForConversion(&hadc1, 50);
        singel_adc = HAL_ADC_GetValue(&hadc1);
//        HAL_ADC_Start_IT(&hadc1);
}

使用特权

评论回复
46
慢动作|  楼主 | 2022-11-23 16:03 | 只看该作者
使用DMA来传输
下面我们关掉中断,并打开DMA传输,这里使用半字即可,注意开启循环模式,因为我们前面使能了连续转换模式,所以这里要使能循环模式,那么如果不使能循环模式咋办呢,那就直接也不使能连续转换模式,然后在while循环里面轮询呗,但这样DMA存在的意义就很弱了!!!

使用特权

评论回复
47
慢动作|  楼主 | 2022-11-23 16:03 | 只看该作者
下面是代码设置

使用特权

评论回复
48
慢动作|  楼主 | 2022-11-23 16:10 | 只看该作者
可以看到单次转换跟是否使用循环模式息息先关啊

使用特权

评论回复
49
慢动作|  楼主 | 2022-11-23 16:11 | 只看该作者
使用定时器触发

无需设置任何中断,事件触发后不断地将数据转移到内存中,所以这里就需要配置DMA来传输,DMA配置如下,这里因为传输大小是16位的,所以设置为半字节即可。

使用特权

评论回复
50
慢动作|  楼主 | 2022-11-23 16:12 | 只看该作者

使用特权

评论回复
51
慢动作|  楼主 | 2022-11-23 16:19 | 只看该作者
ADC设置如下,无需设置任何中断

使用特权

评论回复
52
慢动作|  楼主 | 2022-11-23 16:20 | 只看该作者
定时器设置如下

使用特权

评论回复
53
慢动作|  楼主 | 2022-11-23 16:25 | 只看该作者
在main.c中添加代码

使用特权

评论回复
54
慢动作|  楼主 | 2022-11-23 16:28 | 只看该作者
这里接收的数据我们根据我们在DMA中设置的来就行DMA中设置的是半字,所以这里设置为uint16_t即可

使用特权

评论回复
55
慢动作|  楼主 | 2022-11-23 16:30 | 只看该作者
但是他这里用的DMA接收函数,接收的数据参数是32位的,所以要强制转换下,如下所示

使用特权

评论回复
56
慢动作|  楼主 | 2022-11-23 16:33 | 只看该作者
之后我们启用debuge,将变量放到现场表达式查看,可以看到功能正常

使用特权

评论回复
57
慢动作|  楼主 | 2022-11-23 16:34 | 只看该作者
、多通道采集

多通道轮询采集
配置多通道轮询模式,这里我关闭连续转换,这里配置各个通道要改为对应的通道1234哦

使用特权

评论回复
58
慢动作|  楼主 | 2022-11-23 16:37 | 只看该作者
编写采集函数代码如下:
          for(uint8_t i=0;i<4;i++)
          {
                HAL_ADC_Start(&hadc1);
                  HAL_ADC_PollForConversion(&hadc1, 50);
                  adc_value[i] = HAL_ADC_GetValue(&hadc1);
          }
          HAL_Delay(10);

使用特权

评论回复
59
慢动作|  楼主 | 2022-11-23 16:38 | 只看该作者
下面我们开启连续转换模式试试

使用特权

评论回复
60
帛灿灿| | 2024-10-21 08:27 | 只看该作者

当电路出现异常过压并达到其击穿电压时

使用特权

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

本版积分规则