primechange

智能垃圾桶

项目下载请参见

我的github

stm32cubemx建立新project

选择芯片stm32f103c8

配置RCC

RCC配置

配置PA2为ADC输入引脚

ADC输入

配置ADC如图

红线标的位置使能,其余默认
注意
想要使能scane conversion mode需要先配置number ofconversion

作者:primerchange

-------------------------------------------

个性签名:有趣的灵魂万里挑一,好看的皮囊也万里挑一

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

ADC配置

pwm引脚定义

PWM引脚定义

配置时钟树

注意标注的地方
时钟树

tim4配置

注意勾选 internal clock
注意channel4通道选择PWM gerneration模式

TIM4

  • 输出频率方法
    • Fpwm = 72M / ((arr+1)*(psc+1))
  • 占空比
    • duty circle = CCR / arr
      tim配置

DH-11data引脚(PC13)

初始状态设置输出

PC13

生成MDK project

生成project

  • 注意彩色笔标注
    library配置
  • 点击生成project
    点击生成project

代码撰写

main.c中加入如下代码

  • 引入头文件(原子库delay)
/* USER CODE BEGIN Includes */
#include "./dht11/bsp_dht11.h"
#include "delay.h"
/* USER CODE END Includes */
  • 主函数中加入
    • 初始化变量
/* USER CODE BEGIN 1 */
		uint32_t ADC_Value[100];
		uint8_t i;
		uint32_t ad;
		float advalue;
		DHT11_Data_TypeDef DHT11_Data;
		 /* USER CODE END 1 */
  • 初始化接口
/* USER CODE BEGIN 2 */
		HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4);
		HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 100);
		DH_11_init();	//DHT11初始化	
  • 初始状态
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 2500);
	HAL_Delay(500);
	__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 500);
	HAL_Delay(500);
  • while(1)中加入
DHT11_Data=DHT_ShowData();

		
		for(i = 0,ad =0; i < 100;)
		{
		ad+= ADC_Value[i++];

		}
		ad /= 100;
		advalue = ((float)ad*3.3)/4096;
		printf(" AD1 value = %fV \r\n", advalue);
		if(advalue>1.2)
		{
			__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 500);
			HAL_Delay(500);
			
		}
		else if(DHT11_Data.temp>500)
		{
			__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 1500);
			HAL_Delay(500);
		}
		else
		{
			__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 2500);
			HAL_Delay(500);
		}
  • 工程中加入bsp_dht11.c和delay.c
    导入文件
    编译运行即可

分类:

技术点:

相关文章: