距离传感器
//发送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
【无标题】stm32相关常用代码
最新推荐文章于 2024-07-25 21:17:05 发布