资讯详情

《STM32嵌入式接口与传感器应用开发》实验报告(二)

实验名称:ADC KEY控制LED

1.在keil五中编写工程实现ADC KEY控制LED的功能。

在工程代码中实现ADC KEY控制LED的功能。

  1. C源码(请在下面粘贴C源码)

#include "stm32f10x.h"

#include "adc.h" #include "delay.h"

void MY_Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1, ENABLE ); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); RCC_APB2PeriphClockCmd(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)); }

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<times;t ) { temp_val =Get_Adc(ch); DELAY_S; } return temp_val/times; }

u16 Adc_Value(void) { float temp = 0; u16 adc = 0; adc = Get_Adc_Average(ADC_Channel_1,10); temp = (float)adc*(3.3/4096); adc = temp * 1000;

return adc; }

图1 adc.c的配置

#ifndef __ADC_H #define __ADC_H

void Init_ADC(void);

#endif

图2 adc.h的配置

#include "stm32f10x.h" #include <stdio.h> #include "led.h" #include "key.h" #include "wwdg.h" #include "beep.h" #include "adc.h"

void Whole_Init(void) {     Init_LED();     Init_KEY();     Init_BEEP();     delay_count(1000);   Init_IWDG(3,1000);     GPIO_ResetBits(GPIOB,GPIO_Pin_5);     GPIO_ResetBits(GPIOB,GPIO_Pin_8); } void IWDG_FEED(void) {    IWDG_ReloadCounter(); }

int main(void) {   Whole_Init();        while (1)   {         if(KEY_Status(0)==1 )         {           IWDG_FEED();//ι¹·             delay_count(1000);             GPIO_ResetBits(GPIOE,GPIO_Pin_5);                 GPIO_ResetBits(GPIOB,GPIO_Pin_8);             delay_count(1000);             GPIO_SetBits(GPIOE,GPIO_Pin_5);                 GPIO_ResetBits(GPIOB,GPIO_Pin_8);         }   } }

图3 main函数的配置

  1. 程序运行完成截图(请将程序运行后截图粘贴于下方) 图3 编译结果图

(3)实验现象

 

标签: stm8外接传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司