STM32作业实现(四)光敏传感器

目录

STM32作业设计
STM32作业实现(一)串口通信
STM32作业实现(二)串口控制led
STM32作业实现(三)串口控制有源蜂鸣器
STM32作业实现(四)光敏传感器
STM32作业实现(五)温湿度传感器dht11
STM32作业实现(六)闪存保存数据
STM32作业实现(七)OLED显示数据
STM32作业实现(八)触摸按键TPAD
STM32作业实现(九)驱动舵机
源码位置

开启光敏引脚(DMA模式)

在这里插入图片描述
在这里插入图片描述
选择ADC3配置
在这里插入图片描述
需要修改频率
在这里插入图片描述
更新main.c文件

/* USER CODE BEGIN PV */
uint8_t uart_data = 0; // 处理不定长参数
char uart_buf[MAXSIZE] = ""; // 保存不定长命令
uint16_t uart_flag = 0; // 高位 字节用做标志位 低位 字节记录数组使用空间
uint16_t light_adc_dma_buf[2] = {0}; // 接收光敏数据
char msg[MAXSIZE] = ""; // 测试用
/* USER CODE END PV */

/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, &uart_data, 1); // 处理不定长数据
HAL_ADCEx_Calibration_Start(&hadc3);
int len = 0;
/* USER CODE END 2 */

/* USER CODE BEGIN WHILE */
while (1)
{
    HAL_ADC_Start_DMA(&hadc3, (uint32_t*)light_adc_dma_buf, 1);
    len = sprintf(msg, "%d\n", light_adc_dma_buf[0]);
    HAL_UART_Transmit(&huart1, (uint8_t*)msg, len, 1000);
    HAL_Delay(1000);
    /* USER CODE END WHILE */
    
    /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

使用 UartAssist 工具发送与接收串口调试信息

STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,光敏传感器则是一种可以检测光线强度的传感器。STM32F103C8T6可以通过使用GPIO(通用输入/输出)口连接到光敏传感器来读取光线强度的数据,从而实现光敏传感器的应用。 具体实现步骤如下: 1. 将光敏传感器的输出引脚连接到STM32F103C8T6的GPIO口上,如PA0口。 2. 配置PA0口为模拟输入模式,可以使用STM32的寄存器来实现,如: ``` RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // 使能ADC1时钟 GPIOA->CRL &= ~(0x0F<<0); // PA0口模式设置为模拟输入模式 GPIOA->CRL |= (0x08<<0); // PA0口模式设置为模拟输入模式 ADC1->CR2 |= ADC_CR2_ADON; // 使能ADC1模块 ``` 3. 配置STM32的ADC(模拟数字转换器)模块,使其能够读取光敏传感器输出的模拟信号。可以使用STM32的寄存器来实现,如: ``` ADC1->CR2 &= ~ADC_CR2_ALIGN; // 设置ADC1的数据对齐方式为右对齐 ADC1->CR2 &= ~ADC_CR2_EXTSEL; // 设置ADC1的转换触发源为软件触发 ADC1->CR2 |= ADC_CR2_ADSWSTART; // 开始ADC1的转换 ``` 4. 在程序中使用ADC1的寄存器来读取光敏传感器输出的模拟信号,并转换成数字信号。如: ``` while(!(ADC1->SR & ADC_SR_EOC)); // 等待ADC1的转换完成 uint16_t adc_value = ADC1->DR; // 读取ADC1的转换结果 ``` 5. 根据读取到的数字信号来计算出光线的强度值,如: ``` float light_value = adc_value * (3.3 / 4096); // 将ADC读取到的数字信号转换为电压值 light_value = light_value / 0.1; // 根据光敏传感器的灵敏度将电压值转换为光线的强度值 ``` 以上就是使用STM32F103C8T6读取光敏传感器的基本步骤,可以根据具体的应用场景进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值