国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務(wù)器連接驗證以及UASRT串口區(qū)分】

這篇具有很好參考價值的文章主要介紹了基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務(wù)器連接驗證以及UASRT串口區(qū)分】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務(wù)器連接驗證以及UASRT串口區(qū)分】,HomeAssistant,stm32,嵌入式硬件,單片機(jī),物聯(lián)網(wǎng)

?

第一、二章優(yōu)化拓展開發(fā)環(huán)境:

主控 STM32F103C8T6
WIFI模塊 ESP01S
開發(fā)語言 C
開發(fā)編譯器·

KEIL

組網(wǎng)方式 WIFI
服務(wù)器協(xié)議 MQTT

硬件連接

STM32 ESP01S
3.3V 3.3V

GND

GND

GPIO2? (USRAT2-TX)

RX
GPIO3 (USART3-RX) TX

本章要點:

  • 對ESP01S的AT指令的反饋指令進(jìn)行驗證解析
  • 對ESP的USART2通信串口進(jìn)行printf端口重映射
  • 對調(diào)試用的USART1通信串口編寫USART_printf函數(shù)并且解析%d、%s等可變參數(shù)

抽象理解

1、對ESP01S的AT指令的反饋指令進(jìn)行驗證解析

? ? ? ? 進(jìn)入循環(huán)函數(shù):在STM32對ESP01S進(jìn)行USART通信發(fā)送完AT指令后,進(jìn)行串口監(jiān)聽,然后接收AT反饋指令,接著調(diào)用strstr()函數(shù)對指令進(jìn)行解析,當(dāng)解析到AT指令任務(wù)實現(xiàn)的反饋指令后,才執(zhí)行下一步,跳出循環(huán)函數(shù)

_Bool ESP8266_SendCmd(char *cmd, char *res, u16 time)
{	
	Usart2_SendString((unsigned char *)cmd, strlen((const char *)cmd));

	while(time--)
	{
		if(ESP8266_WaitRecive() == REV_OK)							//如果收到數(shù)據(jù)
		{
			if(strstr((const char *)esp8266_buf, res) != NULL)		//如果檢索到關(guān)鍵詞
			{
				ESP8266_Clear();									//清空緩存
				
				return 0;
			}
		}
		
		delay_ms(10);
	}
	return 1;
}

2、對ESP的USART2通信串口進(jìn)行printf端口重映射

#if 1
#pragma import(__use_no_semihosting)             
//標(biāo)準(zhǔn)庫需要的支持函數(shù)                 
struct __FILE 
{ 
	int handle; 

}; 

FILE __stdout;       
//定義_sys_exit()以避免使用半主機(jī)模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定義fputc函數(shù) 
int fputc(int ch, FILE *f)
{      
//	while((USART2->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢   
//    USART2->DR = (u8) ch;
	while((USART2->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢   (若需要使用usart串口通信進(jìn)行信息驗證調(diào)試則取消注釋,正常使用請關(guān)閉,避免printf打印兩次)
    USART2->DR = (u8) ch;  	
	return ch;
}
#endif 

3、對調(diào)試用的USART1通信串口編寫USART_printf函數(shù)并且解析%d、%s等可變參數(shù)

#include <stdarg.h> 

//C庫重寫
#include <mystdlib.h> 

void USART1_printf (char * Data, ... )
{
	const char *s;
	int d;   
	char buf[16];
	
	va_list ap;
	va_start(ap, Data);
 
	while ( * Data != 0 )     // 判斷是否到達(dá)字符串結(jié)束符
	{				                          
		if ( * Data == 0x5c )  //'\'
		{									  
			switch ( *++Data )
			{
				case 'r':							          //回車符
				USART_SendData(USART1, 0x0d);
				Data ++;
				break;
 
				case 'n':							          //換行符
				USART_SendData(USART1, 0x0a);	
				Data ++;
				break;
 
				default:
				Data ++;
				break;
			}			 
		}
		
		else if ( * Data == '%')
		{									  //
			switch ( *++Data )
			{				
				case 's':										  //字符串
				s = va_arg(ap, const char *);
				
				for ( ; *s; s++) 
				{
					USART_SendData(USART1,*s);
					while( USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET );
				}
				
				Data++;
				
				break;
 
				case 'd':			
					//十進(jìn)制
				d = va_arg(ap, int);
				
				myitoa(d, buf, 10);
				
				for (s = buf; *s; s++) 
				{
					USART_SendData(USART1,*s);
					while( USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET );
				}
				
				Data++;
				
				break;
				
				default:
				Data++;
				
				break;
				
			}		 
		}
		
		else USART_SendData(USART1, *Data++);
		
		while ( USART_GetFlagStatus ( USART1, USART_FLAG_TXE ) == RESET );
		
	}
}

代碼:

由于在stm32內(nèi),無法使用stdlib.h的C語言庫,因此我們重寫編寫了stdlib.h庫的部分函數(shù)

mystdlib.h

#ifndef __MYSTDLIB_H
#define __MYSTDLIB_H


/*
將整數(shù)轉(zhuǎn)化為字符串:
num,轉(zhuǎn)換對象
str,轉(zhuǎn)換后存儲字符串的數(shù)組
radix,轉(zhuǎn)換(給于的字符串)的長度
*/
char *myitoa(int num,char *str,int radix) 
{  
	/* 索引表 */ 
	char index[]="0123456789abcdefghijklmnopqrstuvwxz"; 
	unsigned unum; /* 中間變量 */ 
	int i=0,j,k; 
	/* 確定unum的值 */ 
	if(radix==10&&num<0) /* 十進(jìn)制負(fù)數(shù) */ 
	{ 
		unum=(unsigned)-num; 
		str[i++]='-'; 
	} 
	else unum=(unsigned)num; /* 其它情況 */ 
	/* 逆序 */ 
	do  
	{ 
		str[i++]=index[unum%(unsigned)radix]; 
		unum/=radix; 
	}while(unum); 
	str[i]='\0'; 
	/* 轉(zhuǎn)換 */ 
	if(str[0]=='-') k=1; /* 十進(jìn)制負(fù)數(shù) */ 
	else k=0; 
	/* 將原來的“/2”改為“/2.0”,保證當(dāng)num在16~255之間,radix等于16時,也能得到正確結(jié)果 */ 
	char temp; 
	for(j=k;j<=(i-k-1)/2.0;j++) 
	{ 
		temp=str[j]; 
		str[j]=str[i-j-1]; 
		str[i-j-1]=temp; 
	} 
	return str; 
} 

/*
將字符串轉(zhuǎn)換成整數(shù)
str,轉(zhuǎn)換的字符串?dāng)?shù)組目標(biāo)
返回值:為轉(zhuǎn)換后的整數(shù);
*/
int myatoi(char * str)
{
    int n=0;//保存整形  
    char firstChar = *str;//記錄str的第一個字符
    if (firstChar == '+' || firstChar == '-')//+123 -123
    {
        ++str;
    }
    while(*str == '0')//00123  -00123
    {
        ++str;
    }

    while (*str)
    {
        char temp = *str;
        if (*str < '0' || *str> '9')
        {
            puts("literal does not match format string ") ;
            return n;//該字符串含有非數(shù)字字符,不能轉(zhuǎn)為整數(shù)
        }
        else
        {
            temp -= '0';
            n = n * 10 + temp;//將字符串轉(zhuǎn)為整形
        }
        str++;
    }
    if (firstChar == '-')
    {
        n = -n;
    }
    return n;
}


#endif

如果要本第一、二章優(yōu)化拓展的完整工程文件,可以直接到百度網(wǎng)盤提?。ń鈮好艽a同下)

鏈接:https://pan.baidu.com/s/1ECxx125pRlKVo366fzyTiw?pwd=1016?
提取碼:1016

基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務(wù)器連接驗證以及UASRT串口區(qū)分】,HomeAssistant,stm32,嵌入式硬件,單片機(jī),物聯(lián)網(wǎng)

?本文為作者獨立編寫?

?本BLOG上所有的原創(chuàng)文章未經(jīng)本人許可,不得用于商業(yè)用途及傳統(tǒng)媒體。網(wǎng)絡(luò)媒體轉(zhuǎn)載請注明出處,否則屬于侵權(quán)行為。文章來源地址http://www.zghlxwxcb.cn/news/detail-583864.html

到了這里,關(guān)于基于STM32的homeassistant(采用FreeRTOS操作系統(tǒng))【第一、二章優(yōu)化拓展:Wifi、服務(wù)器連接驗證以及UASRT串口區(qū)分】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32FreeRTOS操作系統(tǒng)移植

    STM32FreeRTOS操作系統(tǒng)移植

    移植好的FreeRTOS模板: 鏈接:https://pan.baidu.com/s/1_87VQAWXUl4jTqSCZ0MFjw?pwd=dw52? 提取碼:dw52 1.在工程中新建FreeRTOS文件夾 2.把源碼source里面的文件全部粘貼進(jìn)FreeRTOS文件夾中 ?3.在portable文件中只保留一下文件,其余刪除 ?4.新建如下兩個文件夾 ?5.在FreeRTOS_CODE目錄下添加以下文件

    2024年02月08日
    瀏覽(30)
  • STM32移植FreeRTOS操作系統(tǒng)

    STM32移植FreeRTOS操作系統(tǒng)

    一、FreeRTOS源碼下載 (1)移植錢得準(zhǔn)備前菜對吧,我們先來去官網(wǎng)瞄一瞄 網(wǎng)址:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions 第一步:點擊下載FreeRTOS 第二步:選擇版本下載(我選擇穩(wěn)定版本) 注:我們下載的穩(wěn)定版本不包含DEMO例

    2024年01月17日
    瀏覽(19)
  • 簡單介紹STM32上的FreeRTOS實時操作系統(tǒng)

    FreeRTOS是一款廣泛使用的開源實時操作系統(tǒng)(RTOS),它為嵌入式系統(tǒng)提供了可靠的任務(wù)調(diào)度和并發(fā)管理。在嵌入式領(lǐng)域中,STM32微控制器廣受歡迎,并且與FreeRTOS的結(jié)合使用可以提供強大的功能和靈活性。在本篇博客中,我們將深入探究STM32上的FreeRTOS,并了解其核心概念、任

    2024年02月16日
    瀏覽(33)
  • STM32初學(xué)者入門FreeRTOS操作系統(tǒng),多任務(wù)實時系統(tǒng)

    STM32初學(xué)者入門FreeRTOS操作系統(tǒng),多任務(wù)實時系統(tǒng)

    ? ? ? ? FreeRTOS(Free Real-Time Operating System)是一個開源的嵌入式實時操作系統(tǒng),它專門設(shè)計用于在資源有限的嵌入式系統(tǒng)中運行。FreeRTOS提供了一些用于任務(wù)管理、調(diào)度、同步和通信的功能,使開發(fā)者能夠輕松地創(chuàng)建可靠的嵌入式系統(tǒng)。 以下是FreeRTOS的一些特點和功能: 輕量

    2024年02月11日
    瀏覽(27)
  • 基于stm32單片機(jī)和rt-thread操作系統(tǒng)的智能燈

    基于stm32單片機(jī)和rt-thread操作系統(tǒng)的智能燈

    目????錄 一、 總體概況 二、 各部分介紹 2.1??STM32F4開發(fā)板 2.2??光敏模塊 2.3 ?麥克風(fēng)模塊 2.4??超聲波模塊 三、 RT-Thread介紹 四、 開發(fā)過程 五、 未來設(shè)想 六、 開發(fā)心得 總體概況 本次測試技術(shù)與信號處理課程作業(yè),我利用了stm32單片機(jī)和rt-thread實時操作系統(tǒng)進(jìn)行實踐。

    2023年04月16日
    瀏覽(21)
  • FreeRTOS內(nèi)存管理 基于STM32

    FreeRTOS內(nèi)存管理 基于STM32

    目錄 一、內(nèi)存管理的基本概念 二、內(nèi)存管理的應(yīng)用場景 三、heap_4.c 1.內(nèi)存申請函數(shù) pvPortMalloc() 2.內(nèi)存釋放函數(shù) vPortFree() ?四、內(nèi)存管理的實驗 五、內(nèi)存管理的實驗現(xiàn)象 ? ? ? 在計算系統(tǒng)中,變量、中間數(shù)據(jù)一般存放在系統(tǒng)存儲空間中,只有在實際使用時才將 它們從存儲空

    2024年02月14日
    瀏覽(18)
  • FreeRTOS事件組 基于STM32

    FreeRTOS事件組 基于STM32

    文章對事件組的,應(yīng)用場景,運作機(jī)制,以及事件的創(chuàng)建,刪除,等待,置位,同步等操作 文章目錄 概述 一、事件標(biāo)志組簡介 1、事件位(事件標(biāo)志) 2、事件組 3、事件標(biāo)志組和事件位的數(shù)據(jù)類型 二、事件的應(yīng)用場景 三、事件運作機(jī)制 四、事件控制塊 ?五、事件組函數(shù) 1.事

    2024年02月11日
    瀏覽(15)
  • 【STM32】STM32 移植鴻蒙操作系統(tǒng)

    【STM32】STM32 移植鴻蒙操作系統(tǒng)

    隨著 OpenHarmony3.1 的正式發(fā)布,其功能也在不斷完善。OpenHarmony LiteOS-M 內(nèi)核是面向IoT領(lǐng)域構(gòu)建的輕量級物聯(lián)網(wǎng)操作系統(tǒng)內(nèi)核,具有小體積、低功耗、高性能的特點,其代碼結(jié)構(gòu)簡單,主要包括內(nèi)核最小功能集、內(nèi)核抽象層、可選組件以及工程目錄等,分為硬件相關(guān)層以及硬件無

    2024年02月09日
    瀏覽(14)
  • FreeRTOS軟件定時器 基于STM32

    FreeRTOS軟件定時器 基于STM32

    文章目錄 一·、軟件定時器的基本概念 二、軟件定時器應(yīng)用場景 三、軟件定時器的精度 四、軟件定時器的運作機(jī)制 五、軟件定時器函數(shù)接口講解 1.軟件定時器創(chuàng)建函數(shù) xTimerCreate() 2.軟件定時器啟動函數(shù) xTimerStart() ?3.軟件定時器停止函數(shù)? xTimerStop() ?4.軟件定時器任務(wù) 5.軟件

    2024年02月11日
    瀏覽(23)
  • FreeRTOS小項目實戰(zhàn)------基于FreeRTOS和stm32的門禁系統(tǒng)

    FreeRTOS小項目實戰(zhàn)------基于FreeRTOS和stm32的門禁系統(tǒng)

    目錄 收獲 系統(tǒng)總體框架 程序框架 具體程序?qū)崿F(xiàn) 工程文件網(wǎng)盤鏈接 收獲 學(xué)習(xí) freertos的移植與裁剪 ,對任務(wù)間通信的認(rèn)識更加深刻,加深了實時操作系統(tǒng)的理解,學(xué)習(xí)了as608指紋模塊,rc522刷卡模塊等模塊的簡單使用。 系統(tǒng)總體框架 該系統(tǒng)采用STM32F407ZGT6為主控芯片,在Fre

    2024年02月02日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包