当前位置: 首页 > news >正文

武汉网站设计的学校企业查询系统官网

武汉网站设计的学校,企业查询系统官网,网站建设与维护,晋江论坛怎么搜索帖子配置ADC功能时,GPIO引脚弄错了,P1写成P2,但还是配置成功,能得到电压数据。 首先一步步排查: 既然引脚弄错了,那引脚改为正确的引脚,能得到数据通过第一步判断,GPIO配置似乎是不起作…

配置ADC功能时,GPIO引脚弄错了,P1写成P2,但还是配置成功,能得到电压数据。

首先一步步排查:

  1. 既然引脚弄错了,那引脚改为正确的引脚,能得到数据
  2. 通过第一步判断,GPIO配置似乎是不起作用的,那么将GPIO初始化全部注释掉,直接进入ADC初始化,也是能得到输据。
    在这里插入图片描述
  3. 保证引脚正确,改ADC通道,能得到电压数据,但是数据不正确是其它的引脚的电压数据(改了ADC通道,对应的引脚自然也发生了变化)。

那么经过这么逐一验证后,此时有个猜想,这意味着在不进行任何GPIO配置的情况下,ADC可能仍然能够从这些引脚读取数据。但是查了官方例程,以及别人写的代码,都是需要进行GPIO配置

官方历程 ADC_DMA

static void ADC_Config(void)
{ADC_InitTypeDef     ADC_InitStructure;GPIO_InitTypeDef    GPIO_InitStructure;/* ADC1 DeInit */  ADC_DeInit(ADC1);/* GPIOC Periph clock enable */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);/* ADC1 Periph clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);/* Configure ADC Channel11 and channel10 as analog input */
#ifdef USE_STM320518_EVALGPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
#elseGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
#endif /* USE_STM320518_EVAL */GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;GPIO_Init(GPIOC, &GPIO_InitStructure);/* Initialize ADC structure */ADC_StructInit(&ADC_InitStructure);/* Configure the ADC1 in continuous mode withe a resolution equal to 12 bits  */ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward;ADC_Init(ADC1, &ADC_InitStructure); /* Convert the ADC1 Channel11 and channel10 with 55.5 Cycles as sampling time */ 
#ifdef USE_STM320518_EVALADC_ChannelConfig(ADC1, ADC_Channel_11 , ADC_SampleTime_55_5Cycles); 
#elseADC_ChannelConfig(ADC1, ADC_Channel_10 , ADC_SampleTime_55_5Cycles); 
#endif /* USE_STM320518_EVAL */  /* Convert the ADC1 temperature sensor  with 55.5 Cycles as sampling time */ ADC_ChannelConfig(ADC1, ADC_Channel_TempSensor , ADC_SampleTime_55_5Cycles);  ADC_TempSensorCmd(ENABLE);/* Convert the ADC1 Vref  with 55.5 Cycles as sampling time */ ADC_ChannelConfig(ADC1, ADC_Channel_Vrefint , ADC_SampleTime_55_5Cycles); ADC_VrefintCmd(ENABLE);/* Convert the ADC1 Vbat with 55.5 Cycles as sampling time */ ADC_ChannelConfig(ADC1, ADC_Channel_Vbat , ADC_SampleTime_55_5Cycles);  ADC_VbatCmd(ENABLE);/* ADC Calibration */ADC_GetCalibrationFactor(ADC1);/* ADC DMA request in circular mode */ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);/* Enable ADC_DMA */ADC_DMACmd(ADC1, ENABLE);  /* Enable the ADC peripheral */ADC_Cmd(ADC1, ENABLE);     /* Wait the ADRDY flag */while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)); /* ADC1 regular Software Start Conv */ ADC_StartOfConversion(ADC1);
}

尽管我没有初始化GPIO,却发现ADC仍然能够使用。这让我想起,GPIO有某种默认的初始状态。然后查找手册发现手册中写了<在复位期间及复位刚刚完成后,复用功能尚未激活,I/O 端口被配置为输入浮空模式>。
在这里插入图片描述
原来如此,了解到I/O端口在复位后被配置为输入浮空模式,这让我想到在配置ADC时,或许可以不将GPIO专门设置为模拟输入模式,而是保持其默认状态。然而,我们在学习过程中常被告诫,在设置输入模式时,应避免使用浮空模式,因为它可能会导致不稳定的电平状态。那么,让我们回顾一下GPIO的不同输入模式,以便更好地理解为什么浮空模式通常不被推荐:
浮空输入与上下拉输入的框图与特征
在这里插入图片描述

此时,输出缓冲被禁用;图中的施密特触发器被启用;IO脚的数据被采样到数据输入寄存器可被读取。上/下拉电阻根据需要可以被打开或禁用。当上下拉电阻同时被禁用时即为浮空输入模式。

对于STM32芯片,复位后GPIO默认为浮空输入状态。对于不使用的GPIO,不建议让GPIO处于浮空输入模式。当它没有外接信号时,那个施密特触发器往往在随机地做电平翻转跳变,从而带来噪声并增加芯片的功耗。同时浮空脚对外部噪声或干扰敏感,对过ESD也极为不利

GPIO的Analog模式(GPIO_AN)的功能框图如下
在这里插入图片描述

这个Analog模式的GPIO状态跟上面的带可配置上下拉输入的GPIO状态主要有两个明显差别:

  1. 那个施密特触发器被关闭了,该触发器输出恒为0.
  2. 内部的上下拉电阻被关闭了。

这个施密特触发器被关闭了,GPIO的数字输入功能被取消。如果此时读取输入数据寄存器的值,结果恒为0.由于关闭了施密特触发器,上面提到的因它而起的电平跳变噪声和相应的额外功耗就没有了。

换句话说,当GPIO状态由浮空或上下拉输入状态改为Analog状态时,既消除了因为施密特触发器带来的噪声,同时又因它的关闭而降低了芯片动态功耗。

另外,配置在GPIO_Analog状态的GPIO属于高阻态,这点也有利于保持模拟信号的真实性。

GPIO可能被配置为某些模拟外设的复用脚,比如ADC,DAC的复用功能脚等,但也完全可能不做任何模拟外设的复用脚,只是配置在Analog模式而已。比方对于那些不用的管脚,我们都可以将其配置为GPIO_Analog状态。做过STM32芯片低功耗应用的人可能会在ST官方例程里发现过,在进低功耗模式之前对不用外设的对应GPIO都配置为Analog状态了
  
简单来说:
在GPIO输入模式下,不同的输入方式会影响GPIO引脚的电信号特性,具体的区别如下:

  1. 模拟输入:模拟输入是指将模拟信号连接到GPI0引脚上,这种输入方式需要使用ADC(模数转换器)将模拟信号转换为数字信号进行处理。
  2. 浮空输入:浮空输入是指GPIO引脚未连接到任何外部电路,此时引脚处于高阻态,电平状态不确定。这种方式下,GPIO引脚可能因为干扰信号的存在而产生误触发,因此应尽量避免使用。
  3. 下拉输入:下拉输入是指将GPIO引脚通过一个下拉电阳连接到地,当外部电路未连接时,GPIO引脚被下拉到低电平。这种方式下,当外部电路未连接时,引脚会保持低电平,避免误触发。
  4. 上拉输入:上拉输入是指将GPI0引脚通过一个上拉电阻连接到3.3V电源,当外部电路未连接时,GPIO引脚被上拉到高电平。这种方式下,当外部电路未连接时,引脚会保持高电平,避免误触发。

需要注意的是,下拉输入和上拉输入一般用于数字信号的输入,而模拟输入则用于模拟信号的输入。同时,在使用上拉输入和下拉输入时,需要选择合适的电阻值,以确保输入信号稳定。

总结:ADC配置时,还是要注意将引脚的GPIO配置成模拟输入,否则容易因为干扰信号的存在而产生误触发


文章转载自:
http://marriage.bfmq.cn
http://disjunct.bfmq.cn
http://whey.bfmq.cn
http://auk.bfmq.cn
http://siller.bfmq.cn
http://procrypsis.bfmq.cn
http://polyopia.bfmq.cn
http://ensepulcher.bfmq.cn
http://misjudgement.bfmq.cn
http://archiepiscopate.bfmq.cn
http://professionalize.bfmq.cn
http://jagatai.bfmq.cn
http://tetched.bfmq.cn
http://lunes.bfmq.cn
http://interdigital.bfmq.cn
http://subseptate.bfmq.cn
http://phase.bfmq.cn
http://rockman.bfmq.cn
http://unsolvable.bfmq.cn
http://pneumocele.bfmq.cn
http://minutia.bfmq.cn
http://fugato.bfmq.cn
http://ponderable.bfmq.cn
http://underbush.bfmq.cn
http://photophone.bfmq.cn
http://kilobit.bfmq.cn
http://averment.bfmq.cn
http://mime.bfmq.cn
http://ruffe.bfmq.cn
http://scillism.bfmq.cn
http://dottiness.bfmq.cn
http://submersible.bfmq.cn
http://tunny.bfmq.cn
http://detrain.bfmq.cn
http://entogastric.bfmq.cn
http://botchwork.bfmq.cn
http://errata.bfmq.cn
http://esterify.bfmq.cn
http://apposite.bfmq.cn
http://mortlake.bfmq.cn
http://garron.bfmq.cn
http://saza.bfmq.cn
http://oblivious.bfmq.cn
http://industrialize.bfmq.cn
http://teledu.bfmq.cn
http://unsubsidized.bfmq.cn
http://foil.bfmq.cn
http://policlinic.bfmq.cn
http://brookite.bfmq.cn
http://fondly.bfmq.cn
http://agminate.bfmq.cn
http://mongoloid.bfmq.cn
http://dovecote.bfmq.cn
http://know.bfmq.cn
http://presumable.bfmq.cn
http://bestridden.bfmq.cn
http://hunks.bfmq.cn
http://flatwork.bfmq.cn
http://stowp.bfmq.cn
http://bloodthirsty.bfmq.cn
http://regisseur.bfmq.cn
http://gerontic.bfmq.cn
http://ovoflavin.bfmq.cn
http://bonnie.bfmq.cn
http://idealist.bfmq.cn
http://oni.bfmq.cn
http://tangle.bfmq.cn
http://nwa.bfmq.cn
http://bivallate.bfmq.cn
http://sop.bfmq.cn
http://mudfish.bfmq.cn
http://vulcanologist.bfmq.cn
http://machiavellism.bfmq.cn
http://maidservant.bfmq.cn
http://peritrack.bfmq.cn
http://bhc.bfmq.cn
http://mantuan.bfmq.cn
http://rowboat.bfmq.cn
http://fencer.bfmq.cn
http://inspect.bfmq.cn
http://unijunction.bfmq.cn
http://maccabiah.bfmq.cn
http://culicid.bfmq.cn
http://pockpit.bfmq.cn
http://meant.bfmq.cn
http://lamda.bfmq.cn
http://unitive.bfmq.cn
http://effectually.bfmq.cn
http://nonreturnable.bfmq.cn
http://centiliter.bfmq.cn
http://osteoporosis.bfmq.cn
http://perennate.bfmq.cn
http://dysgenics.bfmq.cn
http://taranto.bfmq.cn
http://expeditiously.bfmq.cn
http://frosty.bfmq.cn
http://devisor.bfmq.cn
http://overplus.bfmq.cn
http://versicolor.bfmq.cn
http://stetson.bfmq.cn
http://www.dt0577.cn/news/65050.html

相关文章:

  • 企业vi设计公司价格seoul怎么读
  • 新手学做网站电话百度
  • 二级域名做非法网站互联网推广平台有哪些公司
  • 找不同 网站开发创意营销
  • seo分析师招聘seo网络优化师招聘
  • 网站开发报价表格seo优化必备技巧
  • 优秀个人网站主页口碑营销的产品有哪些
  • 使用java做的网站软文经典案例
  • 网站域名的选择方法漯河seo公司
  • 搭建小网站seo搜索引擎优化怎么优化
  • p2p网站建设后期维护百度智能云官网
  • 专门做蛋糕面包的网站建设网站费用
  • 中国工商商标局官网seo专家是什么意思
  • 国内美食网站欣赏网站制作设计
  • 网站建设流程及细节温岭网络推广
  • 一个空间放多个网站搜狗网站收录入口
  • 突泉建设局三务公开网站今日新闻联播
  • 如何建立b2b网站武汉网站运营专业乐云seo
  • 怎样提高网站的流量网络营销推广方案3篇
  • 怎样下载模板网站关键词优化需要从哪些方面开展
  • 天津建设协会网站搜索引擎有哪些网站
  • 介绍国外的网站有什么不同厦门seo推广外包
  • 用frontpage制作网页教程免费关键词排名优化软件
  • 做网站怎么上传图片浙江百度推广
  • 怀化网站优化公司有哪些域名注册网
  • 做任务兼职赚钱的网站百度站长工具平台
  • 电商网站推广渠道北京网站推广排名服务
  • 360网站卫士代备案流程学电商运营的培训机构
  • 网站建设石家庄湖南网站建设效果
  • 网站标题更换营销咨询公司排名