嵌入式铁头山羊stm32-ADC实现定时器触发的注入序列的单通道转换-Day26

目录

一、实验目的

二、电路连接

三、实验执行

1.初始化串口

2.配置定时器1的TRGO

[3.注入序列的编程接口 以及初始化ADC的(注入序列)](#3.注入序列的编程接口 以及初始化ADC的(注入序列))

(1)首先是注入序列的编程接口的介绍:

(2)ADC的初始化(五步)

[5 读取并发送测量结果](#5 读取并发送测量结果)

VOFA的使用

四、代码


一、实验目的

使用ADC实现:根据光敏传感器的光照强弱去得到不同的输入电压对应的量化结果码,既而根据得到的量化值*分辨率得到不同的电压 然后使用定时器实现每ms 就使用USART发送一个电压值,最后使用 软件去读取一个个周期下的测量结果并连接成曲线,而这个电压值的曲线也表示了光照的变化幅度(因为日光灯照度一般10lux,其对应的AO输出电压为1.5V,所以以1.5V为边界实现板载灯的亮灭)。

二、电路连接

三、实验执行

1.初始化串口

2.配置定时器1的TRGO

3.注入序列的编程接口 以及初始化ADC的(注入序列)

(1)首先是注入序列的编程接口的介绍:

注入序列里面的:


第一个编程接口是设置注入序列的长度,总共是四个

第二个编程接口是配置注入序列的通道,包括通道序号和采样时间


之后的都和前面的常规序列相似

(2)ADC的初始化(五步)

4.1.初始化IO引脚

4.2.配置时钟

4.3.配置ADC的基本参数

4.4.配置注入序列

4.5.闭合总开关

5 读取并发送测量结果

VOFA的使用

数据格式/数据引擎这里可以选择FileWater或者其他,看介绍就行

四、代码

复制代码
#include "stm32f10x.h"
#include "Delay.h"
#include "usart.h"
void App_USART_Init(void);
void App_TIM_Init(void);

void App_ADC_Init(void);


int main(void)
{
	
	
	//使用ADC实现定时器触发的单通道转换  并在VOFA实现电压信号的波形图
	//首先初始化USART
	//之后初始化定时器的  TGO 去发生每ms的固定的时钟信号
	//ADC初始化五大步
	//其中注意输入电压的内阻已经得到,并且因此得到的采样时间是10.24cycle
	
	
	App_USART_Init();
	App_TIM_Init();
	App_ADC_Init();
	
	//先清零EOC
	ADC_ClearFlag(ADC1,ADC_FLAG_EOC);
	
	while(1)
	{
			
		//当EOC为1的时候,输出电压
		while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);
		//清零EOC,下次循环用
		ADC_ClearFlag(ADC1,ADC_FLAG_EOC);
		
		uint16_t res=ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);
		
		float volt=res*(3.3f/4095);
		
		My_USART_Printf(USART1,"%.3f\n",volt);
		
		
		
	}
}


void App_TIM_Init(){


		//初始化定时器
	//开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
	
	//初始化TIM
	TIM_TimeBaseInitTypeDef TIM_InitStruct={0};
	TIM_InitStruct.TIM_CounterMode=TIM_CounterMode_Up;
	TIM_InitStruct.TIM_Period=999;
	TIM_InitStruct.TIM_Prescaler=71;
	TIM_InitStruct.TIM_RepetitionCounter=0;

	TIM_TimeBaseInit(TIM1,&TIM_InitStruct);
	
	TIM_ARRPreloadConfig(TIM1,ENABLE);
	//开启从模式控制器的Update模式
	
	
	TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_Update);
	
	TIM_Cmd(TIM1,ENABLE);
	
	
}





void App_USART_Init(){

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
	USART_InitTypeDef USART_InitStruct={0};
	USART_InitStruct.USART_BaudRate=115200;
	USART_InitStruct.USART_Mode=USART_Mode_Tx;
	USART_InitStruct.USART_Parity=USART_Parity_No;
	USART_InitStruct.USART_StopBits=USART_StopBits_1;
	USART_InitStruct.USART_WordLength=USART_WordLength_8b;
	
	
	
	USART_Init(USART1,&USART_InitStruct);
	



}




void App_ADC_Init(){


	//首先就是初始化ADC的IO
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef  GPIO_InitStruct={0};
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;
	
	
	
	
	GPIO_Init(GPIOA,&GPIO_InitStruct);

	//初始化后开启时钟
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
	
	
	
	//初始化ADC
	ADC_InitTypeDef ADC_InitStruct={0};
	ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;
	ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
	ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
	ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
	ADC_InitStruct.ADC_NbrOfChannel=1;
	ADC_InitStruct.ADC_ScanConvMode=DISABLE;
	
	
	
	ADC_Init(ADC1,&ADC_InitStruct);
	
	
	//配置注入序列(注意比常规的要多配置两个)
	ADC_InjectedSequencerLengthConfig(ADC1,1);
	ADC_ExternalTrigInjectedConvConfig(ADC1,ADC_ExternalTrigInjecConv_T1_TRGO);
	ADC_InjectedChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_13Cycles5);
	ADC_ExternalTrigConvCmd(ADC1,ENABLE);
	
	//开启总开关
	ADC_Cmd(ADC1,ENABLE);

}
相关推荐
纵有疾風起16 小时前
C++模版:模板初阶及STL简介
开发语言·c++·经验分享·开源
小莞尔16 小时前
【51单片机】【protues仿真】基于51单片机送带计数器系统
c语言·单片机·嵌入式硬件·物联网·51单片机
QT 小鲜肉17 小时前
【个人成长笔记】Qt Creator快捷键终极指南:从入门到精通
开发语言·c++·笔记·qt·学习·学习方法
子豪-中国机器人17 小时前
《C++ STL 基础入门》教案
java·开发语言
消失的旧时光-194317 小时前
ScheduledExecutorService
android·java·开发语言
CHANG_THE_WORLD17 小时前
switch语句在汇编层面的几种优化方式 ,为什么能进行优化
汇编·算法·switch·汇编分析·switch case·switch case 汇编·switch case 语句
勇闯逆流河17 小时前
【C++】用红黑树封装map与set
java·开发语言·数据结构·c++
山,离天三尺三17 小时前
深度拷贝详解
开发语言·c++·算法
Blossom.11817 小时前
把AI“撒”进农田:基于极值量化与状态机的1KB边缘灌溉决策树
人工智能·python·深度学习·算法·目标检测·决策树·机器学习
future_studio17 小时前
聊聊 Unity(小白专享、C# 小程序 之 加密存储)
开发语言·小程序·c#