#include "stm32f10x.h" // Device header #include "delay.h" #include "stdio.h" unsigned int a; int fputc(int ch, FILE *f)//重定义打印函数,可以使用printf { while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); USART_SendData(USART1, (uint8_t)ch); //USART1->DR = (u8) ch return ch; } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); GPIO_InitTypeDef GPIO_STRUTURE; GPIO_STRUTURE.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_STRUTURE.GPIO_Pin=GPIO_Pin_9; GPIO_STRUTURE.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_STRUTURE); GPIO_STRUTURE.GPIO_Mode=GPIO_Mode_IPU; GPIO_STRUTURE.GPIO_Pin=GPIO_Pin_10; GPIO_Init(GPIOA,&GPIO_STRUTURE); GPIO_STRUTURE.GPIO_Mode=GPIO_Mode_AIN; GPIO_STRUTURE.GPIO_Pin=GPIO_Pin_1;//adc1对应 GPIO_Init(GPIOA,&GPIO_STRUTURE); USART_InitTypeDef USART_STRUTURE; USART_STRUTURE.USART_BaudRate=9600; USART_STRUTURE.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_STRUTURE.USART_Mode=USART_Mode_Tx| USART_Mode_Rx; USART_STRUTURE.USART_Parity=USART_Parity_No; USART_STRUTURE.USART_StopBits=USART_StopBits_1; USART_STRUTURE.USART_WordLength=USART_WordLength_8b; USART_Init(USART1,&USART_STRUTURE); USART_Cmd(USART1,ENABLE);//串口设置 RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_DeInit(ADC1); ADC_InitTypeDef ADC_STRUTURE; ADC_STRUTURE.ADC_ContinuousConvMode=DISABLE; ADC_STRUTURE.ADC_DataAlign=ADC_DataAlign_Right; ADC_STRUTURE.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; ADC_STRUTURE.ADC_Mode=ADC_Mode_Independent; ADC_STRUTURE.ADC_NbrOfChannel=1; ADC_STRUTURE.ADC_ScanConvMode=DISABLE; ADC_Init(ADC1,&ADC_STRUTURE); ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1));//adc配置 printf("你好,hello,world!\r\n");//复位键按下输出 delay(1000); while(1) { ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)== RESET); a=ADC_GetConversionValue(ADC1); printf("ADC采集值:%d\r\n", a);//循环输出 delay(1000) ; } }光照从暗(遮挡)到亮,值越小