秦淮电工培训学校,秦淮电工培训班
专注于电工培训、为秦淮地区电工的求学者提供专业的电工培训课程和充电平台!
主页 > 电工 >

秦淮电工培训学校,秦淮电工培训班

  • 课程介绍

  • 参考资料

  • 2021-01-17 14:31
湖南阳光电工培训学校常年面向秦淮招生!
【推荐】秦淮快速学电工技术,从湖南阳光电工培训学校开始。秦淮电工培训学校、秦淮电工培训班,首选湖南阳光电工培训学校!电话:13807313137,13308461099

【温馨提示】湖南阳光电工培训学校地址:湖南省长沙市雨花区车站南路红花坡路176号。目前没有在秦淮地区设立分校。热忱欢迎秦淮的学员来湖南阳光电工培训学校长沙总校区参加学习!

秦淮电工培训学校,秦淮电工培训班

详情请进入 湖南阳光电子学校 已关注: 咨询电话:13807313137 微信号:yp941688, yp94168

秦淮电工培训班,秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训班

秦淮电工学校

秦淮电工培训班,秦淮电工培训学校简介:书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。 ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个

秦淮电工培训学校,秦淮电工培训班

秦淮电工培训学校,秦淮电工培训班

秦淮电工培训学校信息内容:,

书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。

ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个通道时候,使用DMA可以较好地避免将采集到的数据丢失。当ADC的DMA功能被使能的时候,每个通道转换完毕时都会发出一个DMA请求。DMA方式也不能完全避免数据丢失问题,要实现数据不丢失需要在DMA的同时开启OVERRUN模式,当数据丢失时就停止数据转换。我们只需要检测是否有OVR时间发生,就能解决采样数据丢失造成的问题。比如,通道错位什么的。

在STM32F4的Reference manual中可以查到ADC1 的DMA映射在DMA1、CH0、Stream0上。

【实验1、DMA方式采集单一通道数据】

配置ADC1的DMA初始化设置如下:

//DMA初始化
DMA_InitStructure.DMA_BufferSize = 4;
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&adcvalue1; //目标数据位
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_BASE+0x4C; //ADC->DR地址
DMA_InitStructure.DMA_PeripheralBurst =DMA_PeripheralBurst_Single;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_Init(DMA2_Stream0,&DMA_InitStructure);
DMA_Cmd(DMA2_Stream0,ENABLE);

在ADC寄存器中开启DMA传输,使用两个函数一个是设置CR2的DDS位,使得每次ADC数据更新时开启DMA传输;

另一个是设置ADC CR2的DMA位,使能ADC的DMA传输。

分别使用以下两个函数:

ADC_DMARequestAfterLastTransferCmd(ADC1,ENABLE); //源数据变化时开启DMA传输
ADC_DMACmd(ADC1,ENABLE);//使能ADC的DMA传输

后,还是在adcvalue中读出ADC的采样值,可以看到,没有使用函数ADC_GetConversionValue来读ADC的DR寄存器,照样能输出ADC采样到的值:

while(1)
{
for(i = 0;i.

(编辑:秦淮电工培训学校)

秦淮电工培训学校


秦淮电工培训学校

湖南阳光电子学校教学特色

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

秦淮电工培训学校

百度收录查询: 秦淮电工培训学校

  • 扫码分享
  • 新资讯
  • 热点资讯
电工培训学校 电动车维修学校 摩托车维修学校 手机维修培训学校 水电工培训学校 电脑维修培训学校 电动工具维修培训学校 液晶电视维修培训学校 安防监控培训学校 空调维修培训学校 电焊培训学校 手机维修培训学校 电工培训学校 摩托车维修培训学校 电器维修培训学校 家电维修学校 焊工培训学校 电工培训学校 木工培训学校 瓦工培训学校 摩托车维修学校 电工培训学校 木工培训学校 电器维修学校 电工培训学校