stm32写一份光敏电阻模块控制led灯的程序
这里是一个简单的光敏电阻模块控制LED灯的程序,使用STM32的GPIO和ADC模块:
#include "stm32f10x.h"
#define LED_PIN GPIO_Pin_12
#define LED_PORT GPIOA
#define PHOTO_PIN GPIO_Pin_0
#define PHOTO_PORT GPIOB
#define PHOTO_ADC ADC1
#define PHOTO_CHANNEL ADC_Channel_8
void GPIO_Init(void);
void ADC_Init(void);
void delay(uint32_t time);
int main(void)
{
GPIO_Init();
ADC_Init();
while (1)
{
// 读取光敏电阻模块的ADC值
ADC_SoftwareStartConv(PHOTO_ADC);
while (!ADC_GetFlagStatus(PHOTO_ADC, ADC_FLAG_EOC));
uint16_t adc_value = ADC_GetConversionValue(PHOTO_ADC);
// 根据ADC值控制LED灯
if (adc_value > 1000)
GPIO_SetBits(LED_PORT, LED_PIN);
else
GPIO_ResetBits(LED_PORT, LED_PIN);
delay(100); // 延时100ms
}
}
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// LED引脚配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LED_PORT, &GPIO_InitStructure);
// 光敏电阻引脚配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = PHOTO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(PHOTO_PORT, &GPIO_InitStructure);
}
void ADC_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
// ADC时钟配置
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
// ADC配置
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(PHOTO_ADC, &ADC_InitStructure);
// ADC通道配置
ADC_RegularChannelConfig(PHOTO_ADC, PHOTO_CHANNEL, 1, ADC_SampleTime_55Cycles5);
// ADC启动
ADC_Cmd(PHOTO_ADC, ENABLE);
}
void delay(uint32_t time)
{
uint32_t i;
for (i = 0; i < time * 1000; i++);
}
该程序使用了GPIO和ADC模块,首先需要对GPIO和ADC进行初始化。在主循环中,程序先读取光敏电阻模块的ADC值,然后根据ADC值控制LED灯的开关状态。最后通过延时函数实现循环间隔时间。
原文地址: https://www.cveoy.top/t/topic/bC21 著作权归作者所有。请勿转载和采集!