kill5可移植的stm32f103c8t6与YL-69土壤湿度传感器分.c文件和.h文件代码
时间: 2024-05-16 08:16:50 浏览: 110
以下是可移植的stm32f103c8t6与YL-69土壤湿度传感器的.c文件和.h文件代码,供参考:
.h文件代码:
```
#ifndef __SOILMOISTURE_H__
#define __SOILMOISTURE_H__
#include "stm32f10x.h"
void SoilMoisture_Init(void);
u16 SoilMoisture_Read(void);
#endif /* __SOILMOISTURE_H__ */
```
.c文件代码:
```
#include "soilmoisture.h"
#include "delay.h"
#define SOILMOISTURE_PORT GPIOC
#define SOILMOISTURE_PIN GPIO_Pin_5
#define SOILMOISTURE_ADC ADC1
#define SOILMOISTURE_ADC_CHANNEL ADC_Channel_15
void SoilMoisture_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitStructure.GPIO_Pin = SOILMOISTURE_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(SOILMOISTURE_PORT, &GPIO_InitStructure);
ADC_DeInit(SOILMOISTURE_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(SOILMOISTURE_ADC, &ADC_InitStructure);
ADC_Cmd(SOILMOISTURE_ADC, ENABLE);
}
u16 SoilMoisture_Read(void)
{
u16 value;
ADC_RegularChannelConfig(SOILMOISTURE_ADC, SOILMOISTURE_ADC_CHANNEL, 1, ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(SOILMOISTURE_ADC, ENABLE);
while (!ADC_GetFlagStatus(SOILMOISTURE_ADC, ADC_FLAG_EOC));
value = ADC_GetConversionValue(SOILMOISTURE_ADC);
return value;
}
```
在代码中,使用了stm32f10x库函数来初始化GPIO和ADC,并实现了读取YL-69土壤湿度传感器的函数。其中,SOILMOISTURE_PORT和SOILMOISTURE_PIN分别表示传感器的端口和引脚,SOILMOISTURE_ADC和SOILMOISTURE_ADC_CHANNEL表示ADC的模块和通道。在SoilMoisture_Init函数中,通过GPIO_InitStructure和ADC_InitStructure结构体来初始化GPIO和ADC,使其能够正常工作。在SoilMoisture_Read函数中,首先通过ADC_RegularChannelConfig函数配置ADC的通道和采样时间,然后通过ADC_SoftwareStartConvCmd函数启动ADC转换,并等待转换完成,并最终返回采集到的数值。
阅读全文