做网站的费用如何写分录,网络营销是什么模式,马关网站建设,企业网站用什么程序好一、电位器模块
#xff08;1#xff09;资源介绍 #x1f505;原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2#xff0c;所有拓展模块均可直接安装在 Lora 终端上使用#xff1b; 图1 拓展接口 电位器模块电路原理图如下所示#xff1a; 图2 …一、电位器模块
1资源介绍 原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2所有拓展模块均可直接安装在 Lora 终端上使用 图1 拓展接口 电位器模块电路原理图如下所示 图2 电位器模块电路原理图 通过两张电路图连接可知引脚资源配置情况为
表1 引脚资源配置情况 Pot LEDMCUAIN1PB1AIN2PB0LD1PB6LD2PB7 采集原理 在 STM32L071 系列微控制器中嵌入了原生的12位模数转换器通过硬件过采样扩展到16位模数转换器。它有多达19个多路复用通道允许它测量来自16个外部和3个内部来源的信号。各种通道的 A/D 转换可以在单、连续、扫描或不连续模式下进行。ADC的结果存储在左对齐或右对齐的16位数据寄存器中。 16个外部通道在转换时分为注入通道和规则通道
规则通道: 最多有16路相当于正常运行的程序平时ADC的转换都是使用规则通道来实现的
注入通道: 最多有4路相当于中断当注入通道需要转换时规则通道的转换就会停止优先执行注入通道的转换当注入通道转换完成后再继续执行规则通道的转换。 2STM32CubeMX 软件配置 “工程建立、时钟树配置、Debug 串行线配置、代码生成配置” 在下文中有讲解这里不再赘述❗️
【蓝桥杯——物联网设计与开发】基础模块1- GPIO输出https://blog.csdn.net/m0_63116406/article/details/135604705?spm1001.2014.3001.5502
1️⃣点击 Analog → 点击 ADC→勾选通道 IN8 和 IN9 图3 ADC通道配置 2️⃣在 ADC 的参数设置栏中找到 Low Power Auto wait 并选择 Enabled 进行使能 图4 修改ADC配置 3️⃣初始化 OLED配置步骤在下文中有讲解这里不再赘述
【蓝桥杯——物联网设计与开发】基础模块6 - OLED 4️⃣生成代码即可
3代码编写
️main 函数
/* USER CODE BEGIN Includes */
#include stdio.h
#include oled.h
/* USER CODE END Includes *//* USER CODE BEGIN PV */
uint8_t puc_oled[17]; // OLED显示数组
uint16_t pui_adc[2]; // ADC采集数组
/* USER CODE END PV *//*** brief The application entry point.* retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_ADC_Init();MX_I2C3_Init();/* USER CODE BEGIN 2 *//* OLED初始化 */OLED_Init();/* ADC校正 */HAL_ADCEx_Calibration_Start(hadc, ADC_SINGLE_ENDED);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* 启动ADC */HAL_ADC_Start(hadc);/* ADC转换 */if(HAL_ADC_PollForConversion(hadc, 10) HAL_OK)pui_adc[1] HAL_ADC_GetValue(hadc); // 读取ADC值if(HAL_ADC_PollForConversion(hadc, 10) HAL_OK)pui_adc[0] HAL_ADC_GetValue(hadc); // 读取ADC值/* OLED显示 */sprintf((char*)puc_oled, RP1:%.2fV, pui_adc[0] * 3.3 / 4095);OLED_ShowString(0, puc_oled);sprintf((char*)puc_oled, RP2:%.2fV, pui_adc[1] * 3.3 / 4095);OLED_ShowString(2, puc_oled);HAL_Delay(200);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
4实验现象 旋转旋钮对应的电压值发生变化。 二、ADC接口函数封装
️ADC初始化校正
/* ADC校正 */
HAL_ADCEx_Calibration_Start(hadc, ADC_SINGLE_ENDED); ⚠️该函数调用放在ADC初始化函数中。若不进行校正会导致采集的电压值有误
️ADC采集函数
void ADC_Colt(uint16_t *puc_adc)
{/* 启动ADC */HAL_ADC_Start(hadc);/* ADC转换 */if(HAL_ADC_PollForConversion(hadc, 10) HAL_OK)puc_adc[1] HAL_ADC_GetValue(hadc); // 读取ADC值if(HAL_ADC_PollForConversion(hadc, 10) HAL_OK)puc_adc[0] HAL_ADC_GetValue(hadc); // 读取ADC值
}
ADC采集接口函数调用实例
/* 采集任务函数 */
void Task_Colt(void)
{/* 200ms进入一次 */if(cnt_colt 200) return;cnt_colt 0;/* ADC采集 */ADC_Colt(pui_adc);/* 数据转换 */pui_adc[0] pui_adc[0] * 330 / 4095;pui_adc[1] pui_adc[1] * 330 / 4095;
} 三、踩坑日记
1LowPowerAutoWait模式 LowPowerAutoWait配置是否使用低功耗自动延迟等待模式*可选参数为 ENABLE 和DISABLE当使能时仅当一组内所有之前的数据已处理完毕时才开始新的转换适用于低频应用。该模式仅用于 ADC 的轮询模式不可用于 DMA 以及中断。