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

营销建设网站制作快速搭建网站模板 下载

营销建设网站制作,快速搭建网站模板 下载,云南seo简单整站优化,wordpress 插件 朋友圈前言#xff1a;博主在使用STM32F4加薄膜压力传感器用来测量压力时#xff0c;发现给的例程只有STM32F1系列的#xff0c;而STM32F4系列库函数程序不太一致#xff0c;博主实战解决了该问题#xff0c;用STM32F4标准库开发。有关ADC模数转换器的详细知识点详情点击我的博文…前言博主在使用STM32F4加薄膜压力传感器用来测量压力时发现给的例程只有STM32F1系列的而STM32F4系列库函数程序不太一致博主实战解决了该问题用STM32F4标准库开发。有关ADC模数转换器的详细知识点详情点击我的博文 ADC模数转换器详解链接https://archie.blog.csdn.net/article/details/136723340?spm1001.2014.3001.5502 STM32F4薄膜压力传感器(FSR)AO模拟输出程序 main.c main.c是用于读取薄膜压力传感器FSR的模拟输出并将其映射到实际压力值范围内。主要功能是读取薄膜压力传感器的模拟输出并将其转换为相应的压力值。 首先包含了一些必要的头文件包括STM32的相关头文件以及自定义的延迟、串口、ADC和FSR的头文件。 定义了一些常量如最小和最大量程、最小和最大电压范围等。 在main()函数中初始化延迟、中断和串口并进行ADC的初始化。 进入主循环后通过Get_Adc_Average()函数获取ADC的10次平均值并将其映射到电压值范围内。然后根据电压值的情况计算相应的压力值。 使用printf()函数输出ADC值、电压值和压力值。 最后通过延迟一段时间实现数据的周期性读取。 #include stm32f4xx.h // Device header #include stdint.h #include stdbool.h #include Delay.h #include LED.h #include Key.h #include OLED.h #include usart1.h #include adc.h//最小量程 #define PRESS_MIN 20 //最大量程 #define PRESS_MAX 6000 #define VOLTAGE_MIN 100 #define VOLTAGE_MAX 3300 u8 state 0; u16 val 0; u16 value_AD 0;long PRESS_AO 0; int VOLTAGE_AO 0;long map(long x, long in_min, long in_max, long out_min, long out_max);int main(void) {I2C_Configuration();//配置CPU的硬件I2C OLED_Init();Adc_Init();OLED_CLS();//清屏while(1){value_AD Get_Adc_Average(13,10); //10次平均值VOLTAGE_AO map(value_AD, 0, 4095, 0, 3300);if(VOLTAGE_AO VOLTAGE_MIN){PRESS_AO 0;}else if(VOLTAGE_AO VOLTAGE_MAX){PRESS_AO PRESS_MAX;}else{PRESS_AO map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);}//printf(AD值 %d,电压 %d mv,压力 %ld g\r\n,value_AD,VOLTAGE_AO,PRESS_AO);OLED_ShowNum(1,1,value_AD,5);OLED_ShowNum(2,1,VOLTAGE_AO,5);OLED_ShowNum(3,1,PRESS_AO,5);Delay_ms(500);} } long map(long x, long in_min, long in_max, long out_min, long out_max) {return (x - in_min) * (out_max - out_min) / (in_max - in_min) out_min;} adc.c 博主使用的adc通道是PC3-ADC123_IN13(adc1和adc2和adc3的通道13) 首先Adc_Init初始化adc 定义了需要用到的结构体GPIO_InitTypeDef、ADC_InitTypeDef和ADC_CommonInitTypeDef。使能了ADC1通道的时钟和GPIOC端口的时钟。配置PC3引脚作为模拟通道输入引脚设置为模拟输入引脚并且不使用上拉或下拉。对ADC1进行复位操作。初始化ADC Common 结构体参数包括禁止DMA直接访问模式、独立ADC模式、时钟分频等。初始化ADC Init 结构体参数包括单通道模式、数据右对齐、外部触发通道、ADC分辨率等。根据ADC_Init结构体中的参数初始化ADC1外设寄存器。使能ADC1。 然后是获取ADC转换结果的函数。函数名称为Get_Adc(u8 ch) 使用ADC_RegularChannelConfig函数设置ADC规则组通道和采样时间。使用ADC_SoftwareStartConv函数启动ADC转换。使用while循环等待ADC转换结束通过检查ADC_FLAG_EOC标志位来判断转换是否完成。使用ADC_GetConversionValue函数获取最近一次ADC转换的结果并将其返回。 最后是获取指定通道ch参数的ADC转换结果并对转换结果进行多次采样times次然后计算这些采样值的平均值。 使用for循环对指定通道进行多次采样每次采样后将转换值累加到temp_val变量中。在每次采样之间通过Delay_ms函数添加延时这有助于确保每次转换之间有足够的间隔。最后将temp_val除以采样次数times得到平均值并将其返回。 #include adc.h#include Delay.h/* Ao:接ADC模拟电压信号输出--PC3-ADC123_IN13(adc1和adc2和adc3的通道13) */ //初始化ADC //规则通道 void Adc_Init(void) { //定义结构体GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure;//使能ADC1通道时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE ); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//PC3 作为模拟通道输入引脚 不上拉不下拉 GPIO_InitStructure.GPIO_Pin GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN; //模拟输入引脚GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_NOPULL; //不上拉不下拉GPIO_Init(GPIOC, GPIO_InitStructure); RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE); //ADC1复位RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE); //复位结束//ADC Common 结构体 参数 初始化ADC_CommonInitStructure.ADC_DMAAccessMode ADC_DMAAccessMode_Disabled; // 禁止DMA直接访问模式 ADC_CommonInitStructure.ADC_Mode ADC_Mode_Independent;// 独立ADC模式ADC_CommonInitStructure.ADC_Prescaler ADC_Prescaler_Div2;// 时钟为fpclk x分频 ADC_CommonInitStructure.ADC_TwoSamplingDelay ADC_TwoSamplingDelay_20Cycles;// 采样时间间隔 ADC_CommonInit(ADC_CommonInitStructure);//ADC Init 结构体 参数 初始化ADC_StructInit(ADC_InitStructure);ADC_InitStructure.ADC_ContinuousConvMode DISABLE;//模数转换工作在单通道模式ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right;//ADC数据右对齐ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_T1_CC1;//外部触发通道本例子使用软件触发此值随便赋值即可ADC_InitStructure.ADC_ExternalTrigConvEdge ADC_ExternalTrigConvEdge_None;//禁止外部边沿触发ADC_InitStructure.ADC_NbrOfConversion 1;//顺序进行规则转换的ADC通道的数目ADC_InitStructure.ADC_Resolution ADC_Resolution_12b;// ADC 分辨率ADC_InitStructure.ADC_ScanConvMode DISABLE;//模数转换工作在单次转换模式ADC_Init(ADC1, ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器 ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1} //获得ADC值 //返回值转换结果 u16 Get_Adc(u8 ch) {ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_56Cycles);//设置ADC规则组通道一个序列采样时间480ADC_SoftwareStartConv(ADC1);//使能指定的ADC1的软件转换启动功能while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//读取状态寄存器的状态位EOC等待转换结束return ADC_GetConversionValue(ADC1);//返回最近一次的ADC1规则组的转换结果}//获取通道ch的转换值取times次然后平均 //ch通道编号 times获取次数 //返回值通道ch的times次转换结果平均值 u16 Get_Adc_Average(u8 ch,u8 times) {u32 temp_val0;u8 t;for(t0;ttimes;t){temp_valGet_Adc(ch);//取times次通道值进行求和Delay_ms(5);}return temp_val/times; //返回平均值 } adc.h #ifndef __ADC_H #define __ADC_H #include stm32f4xx.h // Device headertypedef uint16_t u16; typedef uint8_t u8;void Adc_Init(void); u16 Get_Adc(u8 ch); u16 Get_Adc_Average(u8 ch,u8 times); #endif
http://www.zqtcl.cn/news/240051/

相关文章:

  • php做的网站如何该样式如何卸载安装wordpress
  • 建设网站公司哪家性价比高最新推广注册app拿佣金
  • 丽水网站建设公司排名wordpress 去掉图片链接
  • 以下属于网站页面设计的原则有2345网址下载
  • 为网站的特色功能设计各种模板温州网页模板建站
  • 广州微网站建设企业网站建设网站优化推广
  • 大连模板网建站项目网络的关键路径
  • 迅雷黄冈网站推广软件徐州模板自助建站
  • 怎么做不占CPU的网站修改wordpress的登陆地址
  • 网站制作毕业设计论文软件ui设计培训机构
  • 物业网站模板哪里建设网站
  • 达州城乡建设网站手机网站 方案
  • 平台兼职网站开发许昌做网站优化
  • 婴幼儿用品网站开发意义基因网站开发
  • 自己网站页面设计软件传奇世界游戏官网
  • 淘宝网网站开发部技术部三亚私人高清影院品牌加盟
  • 网站是用什么软件做的山西网络科技有限公司
  • 汕头网站建设开发做购物网站 营业范围是什么
  • 网站建设 企业短视频运营计划书
  • 网站仿静态网站城市分站织梦系统
  • 淄博网站建设高端企业最新商业资讯
  • 百度推广太原网站建设wordpress的页面和首页一样
  • 无为网站定制php网站 mysql数据库配置文件
  • 如何利用div做网站wordpress替换百度站内搜索
  • 大德通网站建设互动营销网站
  • 网站建设与管理实训主要内容响应式网站建设智能优化
  • 佛山市企业网站建设报价网站建
  • 广州网站营销推广设计孝义网站开发
  • 新站网站如何做Seo那个网站点击率高
  • 个体做外贸的网站罗浮视窗网站建设