【无标题】stm32相关常用代码

距离传感器
//发送0x55,等待数据返回,然后解析。第一个字节为高,第二个字节为低。

			uint8_t juli[1]={0x55};
			HAL_UART_Transmit(&huart1, (uint8_t*)juli, 1, HAL_MAX_DELAY);
			HAL_Delay(500);
			if(g_usart_rx_sta==0x0001){
//				printf("收到数据了 %c%c \r\n",g_usart_rx_buf[0],g_usart_rx_buf[1]);
				ju_li = g_usart_rx_buf[0]*256+g_usart_rx_buf[1];
				g_usart_rx_sta=0x0000;
				g_jishu_huancun=0;
			}


	//串1角度传感器 55 55 01 06 1B DB E1 F8 0B 43 CE 
	 if(huart->Instance == USART1)  
	{
//		printf("收到数据了1 %c\r\n",g_rx_buffer[0]);		
		if (g_usart_rx_sta == 0x0000)                /* 0收数据,*/	
			{        
				
				g_usart_rx_buf[g_jishu_huancun]=g_rx_buffer[0];
				g_jishu_huancun++;
				if(g_jishu_huancun==2){
					g_usart_rx_sta = 0x0001;
				}
			}
	}

显示屏
			sprintf(result3, "无烟雾无火焰,关水泵");  // 使用 sprintf 合并字符串,并使用占位符插入变量值  
			HAL_UART_Transmit(&huart2, (uint8_t*)Data_t3, (8), HAL_MAX_DELAY);
			HAL_UART_Transmit(&huart2, (uint8_t*)result3, 100, HAL_MAX_DELAY);
			HAL_UART_Transmit(&huart2, (uint8_t*)Data_tail, (4), HAL_MAX_DELAY);
控制IO
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
读取IO
	HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3) == GPIO_PIN_SET

	HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);  
    	HAL_Delay(500); // 延迟500毫秒  


PWM
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,15000);


//接收DHT11的温度和湿度的值
	DHT11_Read_Data(&temperature , &humidity); 


		pinglu++;
		if(pinglu>65535){
				pinglu=0;
		}
		
		if(pinglu % 100 == 0){
			
				printf("温度%.2f阀值%.2f\r\n",wendu,wenduzhi);
				printf("湿度%.2f阀值%.2f\r\n",shidu,shiduzhi);
				printf("甲醛%.2f阀值%.2f\r\n",jiaquan,jiaqianzhi);
				printf("PM2.5%.2f阀值%.2f\r\n",pm,pmzhi);
		   
		}


你先自己先看下,有问题用文档写出来,我有时间逐条回复哦,有点忙,看信息可能不及时

// https://cloud.alientek.com/manage  WiFi名 rxdqwlw WiFi密码 wlw65675333 待客户注册


https://cloud.alientek.com/manage
注册一个账号密码,发群里面,后面写程序网页控制会用到




65000401FFFFFF
65000501FFFFFF
65000601FFFFFF
到
65000C01FFFFFF

原子云不能有空格

语音播放
				uint8_t play[5]={0x7E,0x03,0x01,0x02,0xEF};
				uint8_t pause[5]={0x7E,0x03,0x02,0x01,0xEF};

				HAL_UART_Transmit(&huart3, (uint8_t*)play, 5, HAL_MAX_DELAY);
				HAL_Delay(10000);
				HAL_UART_Transmit(&huart3, (uint8_t*)pause, 5, HAL_MAX_DELAY);
ADC
				//获取亮度
		for(int i=0;i<4;i++){
		  HAL_ADC_Start(&hadc1);     //启动ADC转换
			HAL_ADC_PollForConversion(&hadc1, 50);   //等待转换完成,50为最大等待时间,单位为ms
			ADC_Value = HAL_ADC_GetValue(&hadc1);   //获取AD值	 
			ADC_Value_zu[i]=ADC_Value;
//			printf("%d: %d \r\n",i,ADC_Value);
		}
		HAL_Delay(100);
		HAL_ADC_Stop(&hadc1);
		

		liangdu = 1-(ADC_Value_zu[0]*1.0f/4096);


y = -0.0325x + 95.441
	wendu = (ADC_Value_zu[0]*(-0.0325f))+ 95.441f;
wend


拳头哥2020 qt123612 https://iot.console.aliyun.com/lk/summary/new

WiFi
if(huart->Instance == USART3)  
	{
		//串口3 WiFi 65 00 05 01 FF FF FF  65 00 06 01 FF FF FF  加05 减06
		if (g3_usart_rx_sta == 0x0000)                
			{        
				g3_usart_rx_buf[g3_jishu_huancun]=g3_rx_buffer[0];
				if(g3_usart_rx_buf[g3_jishu_huancun]==0xFF&&g3_usart_rx_buf[g3_jishu_huancun-1]==0xFF&&g3_usart_rx_buf[g3_jishu_huancun-2]==0xFF){
						 g3_usart_rx_sta = 0x0002; 	
				}
				g3_jishu_huancun++;
				if(g3_jishu_huancun>1000){
					g3_jishu_huancun=0;
				}
			}
	}

CO2
	 if(huart->Instance == USART1)  
	{
		
		if (g_usart_rx_sta == 0x0000)                /* 0收数据,*/	
			{        
				
				if(g_rx_buffer[0]==0x2C){
					g_jishu_huancun=0;
				}
				g_usart_rx_buf[g_jishu_huancun]=g_rx_buffer[0];
				g_jishu_huancun++;
				if( g_jishu_huancun>8){
					 g_usart_rx_sta = 0x0002;
				}
			}
	}

		if(g_usart_rx_sta == 0x0002){
		

			co2 = g_usart_rx_buf[6]*256+g_usart_rx_buf[7];
			
			g_usart_rx_sta=0x0000;
			g_jishu_huancun=0;
		
		}	


PWM调节占空比
void PWM_Config(uint32_t Freq, uint8_t Duty)
{
    uint32_t arr = 1000000 / Freq - 1;
    uint32_t ccr = (uint32_t)Duty * arr / 100;
    __HAL_TIM_SetAutoreload(&htim3, arr);
    __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, ccr);    
}
//————————————————

//                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
//                        
//原文链接:https://blog.csdn.net/wanglong3713/article/details/134938244


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值