STM32学习记录 您所在的位置:网站首页 tm7705模块介绍 STM32学习记录

STM32学习记录

2024-06-29 09:53| 来源: 网络整理| 查看: 265

文章目录

前言一、学习目的二、模块介绍三、代码记录总结

前言

       只做学习记录,记录自己如何从零学会使用一个模块,仅仅只是会用,缺乏专业知识。如果需要了解更多原理,可以从我推荐的技术大佬的文章中获取。

一、学习目的

       我的学习目的就是通过STM32的ADC功能,学会使用光敏传感器,并在无光时用oled屏显示“黑暗”,在有光时用oled屏显示“明亮”。

二、模块介绍

       我使用的是三线光敏传感器,通过光敏电阻在不同光照环境下的不同阻值,从而影响电压,再通过ADC功能获取电压值。用途:光线亮度检测,光线亮度传感器,智能小车寻光模块。接线方面:vcc接3.3v,GND接地,DO引脚直接与单片机相连,通过单片机来检测高低电平,由此来检测环境的光线亮度改变。我定义的IO口是PA0(即模块的DO引脚接单片机的PA0)

三、代码记录

lsens.h(光敏传感器初始化)

#ifndef __LSENS_H #define __LSENS_H #include "sys.h" #include "adc.h" void Lsens_Init(void); //初始化光敏传感器 #endif

lsens.c

#include "lsens.h" #include "delay.h" void Lsens_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); }

adc.h

#ifndef __ADC_H #define __ADC_H #include "sys.h" void Adc_Init(void); u16 Get_Adc(u8 ch); u16 Get_Adc_Average(u8 ch,u8 times); #endif

adc.c  

#include "adc.h" #include "delay.h" void Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE ); RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); ADC_DeInit(ADC1); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); // ADC_SoftwareStartConvCmd(ADC1, ENABLE); } u16 Get_Adc(u8 ch) { ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); return ADC_GetConversionValue(ADC1); } u16 Get_Adc_Average(u8 ch,u8 times) { u32 temp_val=0; u8 t; for(t=0;t


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有