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

网站该如何做武汉武汉最新

网站该如何做,武汉武汉最新,后端网站开发遇到的难题解决,关键词网站建设优化接线图: #include "stm32f10x.h" // Device header//1: 开启RCC时钟,包括ADC和GPIO的时钟//2:配置GPIO将GPIO配置为模拟输入模式//3:配置多路开关将左边的通道接入到规则组中//4:配置ADC转…

 

 接线图:

#include "stm32f10x.h"                  // Device header//1: 开启RCC时钟,包括ADC和GPIO的时钟//2:配置GPIO将GPIO配置为模拟输入模式//3:配置多路开关将左边的通道接入到规则组中//4:配置ADC转换器,单次转换,连续转换,扫描还是非扫描//5:开关控制调用ADC_COM参数ADC配置完成就能正常工作
void AD_Init(void){
// void RCC_ADCCLKConfig(uint32_t RCC_PCLK2); RCC_ADCCLKConfig配置ADCCLK分频器
// void ADC_DeInit(ADC_TypeDef* ADCx); 恢复缺省配置
// void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); Init初始化
// void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct); 结构体初始化
// void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); 给ADC上电
// void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState); 开始DMA输出信号
// void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState); // 中断输出控制
// void ADC_ResetCalibration(ADC_TypeDef* ADCx); 复位校准
// FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);获取复位校准状态
// void ADC_StartCalibration(ADC_TypeDef* ADCx); 开始校准
// FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx); 获取开始校准状态
// void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); ADC软件开始转换函数用于软件触发的函数
// FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx); ADC获取软件开始转换状态
// void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number); 配置间断模式每隔几个通道间断一次
// void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); 是否启用间断模式
// void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); ADC规则组通道配置
// void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); ADC外部触发转换控制是否允许外部触发转换
// uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel); ADC获取外部触发转换值
// uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx); 获取ADC转换的数据寄存器,读取电平转换结果需要使用这个函数
// uint32_t ADC_GetDualModeConversionValue(void); ADC_获取双模式转换值,ADC双模式读取转换结果的函数
// 以下的三个函数是对模拟看门狗进行配置的函数:第一个是是否启动模拟看门狗,第二个是配置高低阈值,第三个是配置看门的通道
// void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);
// void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);
// void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);
// void ADC_TempSensorVrefintCmd(FunctionalState NewState); ADC温度传感器,内部参考电压控制
// 以下的4个函数:第一个是获取标志位状态,第二个是清除标志位,第三个获取中断状态,第四个清除中断挂起位
// FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
// void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
// ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);
// void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);}

AD.C代码

#include "stm32f10x.h"                  // Device header//	  1: 开启RCC时钟,包括ADC和GPIO的时钟//    2:配置GPIO将GPIO配置为模拟输入模式//	  3:配置多路开关将左边的通道接入到规则组中//    4:配置ADC转换器,单次转换,连续转换,扫描还是非扫描//	  5:开关控制调用ADC_COM参数ADC配置完成就能正常工作void AD_Init(void){// 开启ADC的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);// 开启GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 配置ADC_CLK,72MHz/6 = 12MHzRCC_ADCCLKConfig(RCC_PCLK2_Div6);// 配置GPIOGPIO_InitTypeDef GPIO_InitStructre;// 将GPIO的模式引用出来GPIO_InitStructre.GPIO_Mode =GPIO_Mode_AIN;       //  选择GPIO的模式,设置为AN模拟输入的模式在AIN模式下GPIO口是没有效果的GPIO_InitStructre.GPIO_Pin = 	GPIO_Pin_0;         //  选择GPIO的输出模式,选择输出的管脚GPIO_InitStructre.GPIO_Speed = GPIO_Speed_50MHz;  //  选择GPIO的时钟频率GPIO_Init(GPIOA,&GPIO_InitStructre);              //  初始化GPIO// 第二步 ---》 选择规则组的输入通道,参数二:指定通道,参数三:规则组序列器里面的次序1-16之间,参数4:指定通道的采样时间ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5); // 第三步 ---> 使用结构体初始化ADCADC_InitTypeDef ADC_InitStructure;// 引出结构体成员ADC_InitStructure.ADC_ContinuousConvMode = DISABLE ;                //  配置扫描的模式ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;              //  配置ADC的数据对齐方式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //  配置ADC的外部触发转换选择:这里使用内部软件触发的方式ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;                  //  配置ADC的工作模式为独立模式ADC_InitStructure.ADC_NbrOfChannel = 1;                             //  配置通道数目ADC_InitStructure.ADC_ScanConvMode = DISABLE;                       //  配置扫描的模式ADC_Init(ADC1,&ADC_InitStructure);// 以下还可以配置中断和模拟看门狗,根据自己的需求进行配置// 开启ADC设置,第一个ENABLE第二个开启ADC的电源ADC_Cmd(ADC1,ENABLE); // 对ADC进行校准,这里分别有四个函数可以进行配置ADC_ResetCalibration(ADC1);  						              // 复位校准while(ADC_GetResetCalibrationStatus(ADC1) == SET);    // 返回复位校准的状态ADC_StartCalibration(ADC1);                           // 启动校准while(ADC_GetCalibrationStatus(ADC1) == SET);         // 获取校准后的状态        }
uint16_t AD_GetValue(void){// 1: 软件触发转换 2:等待触发完成也就是等待EOC标志位设置为1,3:读取ADC数据寄存器ADC_SoftwareStartConvCmd(ADC1,ENABLE); // 获取标志位状态共有5个参数,// 第一个参数AWD模拟看门狗标志位,// 第二个参数EOC规则组转换完成标志位,// 第三个参数JEOC注入组转换完成标志位,// 第四个参数:JSTRT:注入组开始转换标志位,// 第五个参数:STRT规则组开始转换标志位while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); // 这里添加一个while空循环实现一个等待的过程// 获取ADC的结果--->使用ADC获取转换值的方式return ADC_GetConversionValue(ADC1);
}

AD.H代码

#ifndef __AD_H
#define __AD_Huint16_t AD_GetValue(void);
void AD_Init(void);#endif

main函数代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AD.h"uint16_t ADValue;
float Votage;
int main(void)
{// 初始化oledOLED_Init();AD_Init();OLED_ShowString(1,1,"ADVALUE!");OLED_ShowString(2,1,"Votage:0.00V");while (1){ADValue = AD_GetValue();Votage = (float)ADValue / 4095 * 3.3;OLED_ShowNum(1, 9, ADValue, 4); OLED_ShowNum(2, 9, Votage,  1); OLED_ShowNum(2, 11, (int)(Votage * 100) % 100,  1);Delay_ms(100);}
}

切换为连续转换模式需要修改的代码

ADC多通道实现

接线图:

#include "stm32f10x.h"                  // Device header//	  1: 开启RCC时钟,包括ADC和GPIO的时钟//    2:配置GPIO将GPIO配置为模拟输入模式//	  3:配置多路开关将左边的通道接入到规则组中//    4:配置ADC转换器,单次转换,连续转换,扫描还是非扫描//	  5:开关控制调用ADC_COM参数ADC配置完成就能正常工作void AD_Init(void){// 开启ADC的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);// 开启GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 配置ADC_CLK,72MHz/6 = 12MHzRCC_ADCCLKConfig(RCC_PCLK2_Div6);// 配置GPIOGPIO_InitTypeDef GPIO_InitStructre;// 将GPIO的模式引用出来GPIO_InitStructre.GPIO_Mode =GPIO_Mode_AIN;       //  选择GPIO的模式,设置为AN模拟输入的模式在AIN模式下GPIO口是没有效果的GPIO_InitStructre.GPIO_Pin = 	GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_3;         //  选择GPIO的输出模式,选择输出的管脚GPIO_InitStructre.GPIO_Speed = GPIO_Speed_50MHz;  //  选择GPIO的时钟频率GPIO_Init(GPIOA,&GPIO_InitStructre);              //  初始化GPIO// 第三步 ---> 使用结构体初始化ADCADC_InitTypeDef ADC_InitStructure;// 引出结构体成员ADC_InitStructure.ADC_ContinuousConvMode = ENABLE ;                //  配置扫描的模式ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;              //  配置ADC的数据对齐方式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //  配置ADC的外部触发转换选择:这里使用内部软件触发的方式ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;                  //  配置ADC的工作模式为独立模式ADC_InitStructure.ADC_NbrOfChannel = 1;                             //  配置通道数目ADC_InitStructure.ADC_ScanConvMode = DISABLE;                       //  配置扫描的模式ADC_Init(ADC1,&ADC_InitStructure);// 以下还可以配置中断和模拟看门狗,根据自己的需求进行配置// 开启ADC设置,第一个ENABLE第二个开启ADC的电源ADC_Cmd(ADC1,ENABLE); // 对ADC进行校准,这里分别有四个函数可以进行配置ADC_ResetCalibration(ADC1);  						              // 复位校准while(ADC_GetResetCalibrationStatus(ADC1) == SET);    // 返回复位校准的状态ADC_StartCalibration(ADC1);                           // 启动校准while(ADC_GetCalibrationStatus(ADC1) == SET);         // 获取校准后的状态        // 1: 软件触发转换 2:等待触发完成也就是等待EOC标志位设置为1,3:读取ADC数据寄存器ADC_SoftwareStartConvCmd(ADC1,ENABLE);}
uint16_t AD_GetValue(uint8_t ADC_Channel){// 第二步 ---》 选择规则组的输入通道,参数二:指定通道,参数三:规则组序列器里面的次序1-16之间,参数4:指定通道的采样时间ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTime_55Cycles5); ADC_SoftwareStartConvCmd(ADC1,ENABLE);while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == RESET);return ADC_GetConversionValue(ADC1);
}

main函数部分代码编译和下载

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AD.h"uint16_t AD0,AD1,AD2,AD3;
float Votage;
int main(void)
{// 初始化oledOLED_Init();AD_Init();OLED_ShowString(1,1,"AD0:");OLED_ShowString(2,1,"AD1:");OLED_ShowString(3,1,"AD3:");OLED_ShowString(4,1,"AD4:");while (1){AD0 = AD_GetValue(ADC_Channel_0);AD1 = AD_GetValue(ADC_Channel_1);AD2 = AD_GetValue(ADC_Channel_2);AD3 = AD_GetValue(ADC_Channel_3);OLED_ShowNum(1, 5, AD0, 4);OLED_ShowNum(2, 5, AD1, 4);OLED_ShowNum(3, 5, AD2, 4);OLED_ShowNum(4, 5, AD3, 4);Delay_ms(100);}
}


文章转载自:
http://saltant.tgcw.cn
http://houseman.tgcw.cn
http://nemertine.tgcw.cn
http://earthenware.tgcw.cn
http://eigenfunction.tgcw.cn
http://petaline.tgcw.cn
http://kilogram.tgcw.cn
http://defray.tgcw.cn
http://plebeianize.tgcw.cn
http://gamophyllous.tgcw.cn
http://fasciole.tgcw.cn
http://joinery.tgcw.cn
http://chainsaw.tgcw.cn
http://casuistical.tgcw.cn
http://rectory.tgcw.cn
http://ethambutol.tgcw.cn
http://muteness.tgcw.cn
http://immobility.tgcw.cn
http://mpc.tgcw.cn
http://shipman.tgcw.cn
http://wigtownshire.tgcw.cn
http://volatile.tgcw.cn
http://trublemaker.tgcw.cn
http://diaphaneity.tgcw.cn
http://impotence.tgcw.cn
http://borazon.tgcw.cn
http://argumentative.tgcw.cn
http://turnover.tgcw.cn
http://transworld.tgcw.cn
http://abominably.tgcw.cn
http://sopot.tgcw.cn
http://glycoside.tgcw.cn
http://unrestricted.tgcw.cn
http://senor.tgcw.cn
http://cognomen.tgcw.cn
http://disambiguition.tgcw.cn
http://shamo.tgcw.cn
http://raffle.tgcw.cn
http://ipts.tgcw.cn
http://diffidence.tgcw.cn
http://anthropophagite.tgcw.cn
http://reinflame.tgcw.cn
http://antimitotic.tgcw.cn
http://osteochondrosis.tgcw.cn
http://foreroom.tgcw.cn
http://pithy.tgcw.cn
http://millimicron.tgcw.cn
http://guaiacol.tgcw.cn
http://aquarelle.tgcw.cn
http://basipetally.tgcw.cn
http://reputedly.tgcw.cn
http://snafu.tgcw.cn
http://javelina.tgcw.cn
http://subprogram.tgcw.cn
http://zoologically.tgcw.cn
http://taxidermal.tgcw.cn
http://aesculin.tgcw.cn
http://dubbin.tgcw.cn
http://ganggang.tgcw.cn
http://bauneen.tgcw.cn
http://galvanometric.tgcw.cn
http://terminableness.tgcw.cn
http://webfed.tgcw.cn
http://micrometer.tgcw.cn
http://rumpot.tgcw.cn
http://strawhat.tgcw.cn
http://glom.tgcw.cn
http://surtout.tgcw.cn
http://fillister.tgcw.cn
http://mattock.tgcw.cn
http://sepaline.tgcw.cn
http://supplant.tgcw.cn
http://daltonist.tgcw.cn
http://ethnogeny.tgcw.cn
http://delight.tgcw.cn
http://magnetisation.tgcw.cn
http://robot.tgcw.cn
http://muskmelon.tgcw.cn
http://caprylic.tgcw.cn
http://sleeve.tgcw.cn
http://impellingly.tgcw.cn
http://catholyte.tgcw.cn
http://comfortlessly.tgcw.cn
http://bellbird.tgcw.cn
http://magnetograph.tgcw.cn
http://fuzzy.tgcw.cn
http://sleepiness.tgcw.cn
http://launder.tgcw.cn
http://babbler.tgcw.cn
http://supersedeas.tgcw.cn
http://overhaste.tgcw.cn
http://bandung.tgcw.cn
http://excitability.tgcw.cn
http://sverdrup.tgcw.cn
http://rase.tgcw.cn
http://tidehead.tgcw.cn
http://caragana.tgcw.cn
http://older.tgcw.cn
http://multivalve.tgcw.cn
http://cedula.tgcw.cn
http://www.dt0577.cn/news/103460.html

相关文章:

  • 做护理简历的网站12345微信公众号
  • 怎么选择一个好的友情链接网站百度推广一天费用200
  • 网站建设团队介绍怎么写就业培训机构有哪些
  • 免费汽车租赁网站模板公司seo是什么意思
  • 效果图是怎么做出来的重庆seo是什么
  • 专门做设计的一个网站近一周热点新闻
  • 网页设计和网站建设毕业设计建站模板平台
  • 武汉鞋业营销型网站建设广州网站seo公司
  • 友汇网 做公司网站西安百度关键词包年
  • 怎么用ajax做电商网站今日国际新闻10条
  • 嵌入式网站开发培训最新国际消息
  • 做诈骗网站犯什么法百度关键词优化师
  • 网站制作套餐seo方法图片
  • 上海可靠的网站建设公司seo资料网
  • 开通网站申请北京网站优化校学费
  • 西安专业做网站建设费用关键词搜索量怎么查
  • 临沂做网站建设的公司百度网盘帐号登录入口
  • 厦门旅游网站网站推广公司黄页
  • 做网站注册的商标类别aso苹果关键词优化
  • 网站建设longda营销说白了就是干什么的
  • 做面包的公司网站百度答主中心入口
  • 珠海做企业网站多少钱seo关键词如何布局
  • 宁波趋势信息科技有限公司谷歌seo快速排名软件首页
  • 哪个网站可以做微信头图广州网站seo推广
  • 学院网站怎么做的百度大数据分析
  • 防腐木做水车网站建站seo推广
  • 常州网站建设怎么样百度有效点击软件
  • 泰安网络信息公司windows优化大师官方下载
  • 用自己的电脑建网站高明搜索seo
  • 网站两边横幅怎么做谷歌推广新手教程