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

搜索引擎推广一般包括( )seo竞价排名

搜索引擎推广一般包括( ),seo竞价排名,东莞网站设计怎么做?,怎样做网站流量单片机学习#xff01; 目录 文章目录 前言 一、ADC配置步骤 二、详细步骤 2.1 开启RCC时钟 2.2 配置GPIO 2.3 配置多路开关 2.4 配置ADC转换器 2.5 开启ADC电源 2.6 ADC进行校准 2.6.1 复位校准 2.6.2 等待复位校准完成 2.6.3 开始校准 2.6.4 等待校准完成 三、启动AD转换函数… 单片机学习 目录 文章目录 前言 一、ADC配置步骤 二、详细步骤 2.1 开启RCC时钟 2.2 配置GPIO 2.3 配置多路开关 2.4 配置ADC转换器 2.5 开启ADC电源 2.6 ADC进行校准         2.6.1 复位校准         2.6.2 等待复位校准完成         2.6.3 开始校准 2.6.4 等待校准完成 三、启动AD转换函数设计 3.1 软件触发转换 3.2 等待转换完成 3.3 读取ADC数据寄存器 3.4 启动AD转换函数块总结 总结 前言 本文介绍AD单通道函数设计的基础内容。 一、ADC配置步骤 参照结构框图在原理上将ADC外设运转起来。 第一步开启RCC时钟包括ADC和GPIO的时钟。另外ADCCLK的分频器也需要配置。 第二步配置GPIO把需要用到的GPIO配置成模拟输入的模式。 第三步配置多路开关把通道接入到规则组列表里。 第四步配置ADC转换器库函数中用结构体来配置电路参数包括ADC是单次转换还是连续转换扫描还是非扫描有几个通道触发源是什么数据对齐是左对齐还是右对齐。 如果需要模拟看门狗可以用几个库函数来配置阈值和监测通道如果需要开启中断在中断输出控制里用 ITConfig 函数开启对应的中断输出然后再在NVIC里配置一下优先级。这样就能触发中断了。 最后开关控制调用一下ADC_Cmd函数开启ADC. 在开启ADC之后根据STM32手册的建议还可以对ADC进行一下校准这样可以减小误差。 在ADC工作的时候如果想要软件触发转换有库函数可以触发如果想读取转换结果也会有函数可以读取结果。 二、详细步骤 2.1 开启RCC时钟 第一步开启RCC时钟。包括ADC和GPIO的时钟。另外ADCCLK的分频器也需要配置。 代码示例 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//开启ADC1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//还需要开启PA0口的时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADCCLK RCC_APB2PeriphClockCmd函数开启ADC1的时钟ADC都是APB2上的设备所以这里用APB2开启时钟的函数。 RCC_APB2PeriphClockCmd函数用于开启PA0口的时钟。 以上时钟就配置好了还需要配置ADCCLK用RCC_ADCCLKConfig/函数来配置函数有四个参数分别是2、4、6、8分频 RCC_PCLK2_Div2: ADC clock PCLK2/2RCC_PCLK2_Div4: ADC clock PCLK2/4RCC_PCLK2_Div6: ADC clock PCLK2/6RCC_PCLK2_Div8: ADC clock PCLK2/8 函数参数配置好之后ADC的CLOCKPCLK2/2、PCLK2/4、PCLK2/6、PCLK2/8参数的PCLK2就是APB2时钟的意思。 代码示例中选择6分频分频之后ADCCLK72MHz/612MHz 2.2 配置GPIO 第二步配置GPIO把需要用到的GPIO配置成模拟输入的模式。 代码示例 GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode GPIO_Mode_AIN;//选择模拟输入GPIO_InitStruct.GPIO_Pin GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStruct); 代码示例中选择GPIO_Mode_AIN模拟输入这个模式在GPIO_Mode_AIN模式下GPIO是无效的断开GPIO口防止GPIO口的输入输出对模拟电压造成干扰。GPIO_Mode_AIN模式就是ADC的专属模式。 2.3 配置多路开关 第三步配置多路开关把通道接入到规则组列表里。 代码示例 ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5); 用ADC_RegularChannelConfig函数可选择规则组的输入通道。 函数参数 第1个参数选择ADC。第2个参数指定通道通道0~通道17.第3个参数Rank规则组序列器里的次序在1~16之间。若只有PA0一个通道使用的是非扫描模式那指定的通道就放在第一个序列1的位置。第4个参数指定通道的采样时间采样时间参数根据需求调整需要更快的转换就选择小的参数需要更稳定的转换就选择大的参数。 代码示例的配置是再ADC1中在规则组菜单列表的第一个位置写入通道0这个通道指定通道的采样时间参数选择的采样时间为55.5个ADCCLK的周期。 如果想在序列2的位置写入其他通道就可以复制一下这个代码把序列数改成2然后指定你想要的通道若还需要继续填充序列可以再复制这个函数修改序列和通道另外每个通道也可以设置不同的采样时间在函数最后一个参数修改即可。 2.4 配置ADC转换器 第四步、用结构体初始化ADC。 代码示例 ADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_ModeADC_Mode_Independent;//ADC的工作模式ADC_InitStructure.ADC_DataAlignADC_DataAlign_Right;//数据对齐ADC_InitStructure.ADC_ExternalTrigConvADC_ExternalTrigConv_None;//外部触发转换选择ADC_InitStructure.ADC_ContinuousConvModeDISABLE;//连续/单次转换模式ADC_InitStructure.ADC_ScanConvModeDISABLE;//扫描/非扫描转换模式ADC_InitStructure.ADC_NbrOfChannel1;//通道数目ADC_Init(ADC1,ADC_InitStructure); ADC_Mode 是ADC的工作模式这个参数是配置ADC是工作在独立模式还是双ADC模式代码示例选择独立模式。 ADC_DataAlign 数据对齐这里介绍是指定ADC数据是左对齐还是右对齐。 ADC_DataAlign_Right右对齐ADC_DataAlign_Left左对齐  ADC_ExternalTrigConv 外部触发转换选择就是触发控制的触发源定义用于启动规则组转换的外部触发源。参数对应结构框图中的外部触发源选择。代码示例选择 ADC_ExternalTrigConv_None 参数就是不使用外部触发也就是使用内部软件触发的意思。 ADC_ContinuousConvMode 连续/单次转换模式这个参数可以选择是ENABLE连续转换模式还是DISABLE单次转换模式。 ADC_ScanConvMode 扫描/非扫描转换模式这个参数可以选择是ENABLE扫描模式多通道还是DISABLE非扫描模式单通道。 ADC_NbrOfChannel 通道数目这个是在指定扫描模式下总共会有几个通道需要扫描参数必须在1~16之间。这个参数仅在扫描模式下使用因为非扫描模式整个列表就只有第一个序列有效无论写多少数目最终都只有序列1的位置有效。 后三个参数设置可以对应四种模式 单次转换非扫描。连续转换非扫描。单次转换扫描。连续转换扫描。 2.5 开启ADC电源 第五步、开关控制调用一下ADC_Cmd函数开启ADC. 代码示例 ADC_Cmd(ADC1,ENABLE); 以上配置完后ADC准备就绪。 2.6 ADC进行校准 在开启ADC电源之后根据手册的建议还需要对ADC进行校准校准分为以下四步。 复位校准等待复位校准完成开始校准等待校准完成 2.6.1 复位校准 代码示例 ADC_ResetCalibration(ADC1);//复位校准 2.6.2 等待复位校准完成 代码示例 while(ADC_GetResetCalibrationStatus(ADC1)SET); ADC_GetResetCalibrationStatus函数是返回复位校准的状态要等待复位完成的话还需要加一个while循环若没校准完成的话就在这个while空循环里一直等待。 获取的标志位和是否校准完成的对应关系需参考函数定义和寄存器说明。 函数定义 ADC_GetResetCalibrationStatus函数定义中返回值的说明是ADC复位校准寄存器的状态SET或RESET。 函数代码 /*** brief Gets the selected ADC reset calibration registers status.* param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.* retval The new state of ADC reset calibration registers (SET or RESET).*/ FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx) {FlagStatus bitstatus RESET;/* Check the parameters */assert_param(IS_ADC_ALL_PERIPH(ADCx));/* Check the status of RSTCAL bit */if ((ADCx-CR2 CR2_RSTCAL_Set) ! (uint32_t)RESET){/* RSTCAL bit is set */bitstatus SET;}else{/* RSTCAL bit is reset */bitstatus RESET;}/* Return the RSTCAL bit status */return bitstatus; }在此函数代码中也可以看出来它获取的就是CR2寄存器里的RSTCAL标志位。 寄存器说明 在ADC的CR2寄存器里RSTCAL复位校准位的说明是该位由软件设置并由硬件清除在校准寄存器被初始化后该位将被清除。 所以该标志位的用法就是软件置改位为1那硬件就会开始复位校准当复位校准完成后该位就会由硬件自动清0. 因为校准的第一条代码ADC_ResetCalibration(ADC1);开始复位校准就是将RSTCAL标志位置1然后获取复位校准状态就是读取RSTCAL标志位这一位所以在读取这一位的时候 如果它是1那就需要一直空循环等待如果它变为0了那就说明复位校准完成可以跳出等待了。 所以校准第二条代码while(ADC_GetResetCalibrationStatus(ADC1)SET);中while的条件就是获取标志位函数 ADC_GetResetCalibrationStatus 的返回值是不是SET如果等于SETwhile条件为真就会一直空循环。一旦标志位被硬件清0了这个空循环就会自动跳出来。这样就实现了等待复位校准完成的效果。这里SET也是可以省略的因为返回值SET直接作为条件和是不是SET作为条件效果是一样的。 2.6.3 开始校准 代码示例 ADC_StartCalibration(ADC1); 调用ADC_StartCalibration函数就开始校准了之后内部电路就会自动进行校准。 2.6.4 等待校准完成 while(ADC_GetCalibrationStatus(ADC1)SET);//调用函数获取校准状态 调用ADC_GetCalibrationStatus函数获取校准状态也需要将函数放于while循环内和校准的第二步同理循环条件是校准标志位是不是SET这样就可以等待校准是否完成了。 三、启动AD转换函数设计 上文描述的代码设置使ADC已处于准备就绪的状态以下设计启动转换获取转换结果的函数块。 函数块里执行以下流程 第一步、软件触发转换。第二步、等待转换完成。第三步、读取ADC数据寄存器。 3.1 软件触发转换 调用ADC_SoftwareStartConvCmd函数实现软件触发。 代码示例 ADC_SoftwareStartConvCmd(ADC1,ENABLE); 调用ADC_SoftwareStartConvCmd函数之后就可以触发ADC就已经开始进行转换了。转换需要一段时间。 3.2 等待转换完成 等待转换完成也就是等待EOC标志位置1. 代码示例 while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)RESET); ADC_GetFlagStatus是获取标志位状态的函数函数的第二个参数可选择以下参数 ADC_FLAG_AWD: 模拟看门狗标志位ADC_FLAG_EOC: 规则组转换完成标志位ADC_FLAG_JEOC:注入组转换完成标志位ADC_FLAG_JSTRT: 注入组开始转换标志位ADC_FLAG_STRT: 规则组开始转换标志位 这一步也需要套一个while空循环来实现一个等待的过程返回标志位与转换是否完成的对应关系需参考函数定义和STM32手册的寄存器说明. 函数定义 ADC_GetFlagStatus函数定义中返回值的说明是ADC状态寄存器的状态SET或RESET。 函数代码 /*** brief Checks whether the specified ADC flag is set or not.* param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.* param ADC_FLAG: specifies the flag to check. * This parameter can be one of the following values:* arg ADC_FLAG_AWD: Analog watchdog flag* arg ADC_FLAG_EOC: End of conversion flag* arg ADC_FLAG_JEOC: End of injected group conversion flag* arg ADC_FLAG_JSTRT: Start of injected group conversion flag* arg ADC_FLAG_STRT: Start of regular group conversion flag* retval The new state of ADC_FLAG (SET or RESET).*/ FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG) {FlagStatus bitstatus RESET;/* Check the parameters */assert_param(IS_ADC_ALL_PERIPH(ADCx));assert_param(IS_ADC_GET_FLAG(ADC_FLAG));/* Check the status of the specified ADC flag */if ((ADCx-SR ADC_FLAG) ! (uint8_t)RESET){/* ADC_FLAG is set */bitstatus SET;}else{/* ADC_FLAG is reset */bitstatus RESET;}/* Return the ADC_FLAG status */return bitstatus; }寄存器说明 在ADC状态寄存器里有EOC转换结束标志位这里获取的就是EOC标志位EOC标志位由硬件在规则或注入通道组转换结束时设置。 意思是EOC标志位在规则组或注入组完成时都会置1这一位由软件清除或由读取ADC_DR时清除。 ADC_DR是数据寄存器一般EOC标志位置1程序就会来读取数据所以EOC标志位就多设计了一个功能这一位可以在读取数据寄存器之后自动清除无需手动清除可以省一条代码。 当EOC标志位为0时表示转换未完成当EOC标志位为1时表示转换完成。 所以在代码中当ADC_GetFlagStatus函数的返回值也就是EOC标志位RESET时转换未完成while条件为真执行空循环。转换完成后EOC由硬件自动置1while循环自动跳出。这样等待转换完成的代码就OK了。 具体等待的时间ADC配置时通道的采样周期是55.5转换周期是固定的12.5加在一起就是68个周期。ADCS时钟配置的ADCCLK是72MHz的6分频就是12MHz12MHz进行68个周期转换才能完成。最终的时间1/12M再×68结果大概是5.6us可参考之前博文算转换时间的内容STM32 ADC数模转换器-CSDN博客 3.3 读取ADC数据寄存器 等待完成之后就可以取结果了调用ADC_GetConversionValue函数可取得结果。 代码示例 return ADC_GetConversionValue(ADC1); ADC_GetConversionValue函数也就是ADC获取转换值函数的返回值就是AD转换的结果。函数直接读取ADC的DR数据寄存器因为读取DR寄存器会自动清除EOC标志位所以在函数之后就不需要手动清除标志位了。 3.4 启动AD转换函数块总结 代码示例 uint16_t AD_GetValue(void) {ADC_SoftwareStartConvCmd(ADC1,ENABLE);while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)RESET);return ADC_GetConversionValue(ADC1); } 调用一次这个函数块就相当于执行了一次图单次转换非扫描模式的流程。 总结 以上就是今天要讲的内容本文仅仅简单介绍了AD单通道函数设计的步骤和代码含义。
http://www.pierceye.com/news/172687/

相关文章:

  • 政协网站建设更改wordpress管理员用户名
  • 网站浏览器兼容性通用有那种网站么
  • 网站中全景是怎么做的云南网络营销文化优化
  • 苏州网站优化哪家好换空间对网站的影响
  • 如何做黑客攻击网站专业的网站建设运营
  • 门户网站建站流程做网站在哪里做比较好
  • 青创网站首页wordpress用户发文章
  • wordpress 仿站 主题网站建设拍金手指排名贰拾
  • 自己的网站怎么做跳转广州白云建方舱医院
  • 免费搭建购物网站网页游戏网站打不开
  • 专业的东莞网站设计wordpress extra script
  • 嘉兴网站开发公司电话从零开始创建wordpress主题.pdf
  • 备案号怎么添加到网站自己做网站原始代码
  • 可以做exe的网站邯郸做紧固件网站
  • 电子商务网站开发的说法移动端首页尺寸
  • 普通网站服务器房地产营销门户网站开发
  • 免费做公司网站wordpress文章格式
  • 制作网站教学设计金湖县城乡建设局网站
  • 微商城网站建设咨询网站做的不满意
  • 装企工长网站开发互联网营销师考试内容
  • 广州高端网站定制公司哪家好全椒县城乡规划建设局网站
  • 物流网站毕业设计论文论坛网站模板下载
  • 代理上网蜗牛精灵seo
  • 网站怎么做用qq登录接入网络舆情监测分析系统
  • 怎么把几个网站做互通wordpress 英文站
  • 建设高端网站需要多少钱wordpress检测
  • 如何学习网站建设app嘉兴建站软件
  • 驻马店市建设工程网站平面设计培训班学费一般多少百度贴吧
  • 长沙网络建设的网站免费的个人简历模板word下载
  • 网站维护简单吗wordpress绿色两栏响应式主题