- 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 {
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 #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函数的配置
- 程序运行完成截图(请将程序运行后截图粘贴于下方)
图3 编译结果图
(3)实验现象 |