版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.1.1智能安防設(shè)備硬件環(huán)境介紹通過本節(jié)學(xué)習(xí),您可以:了解智能安防設(shè)備硬件環(huán)境介紹智能安防設(shè)備硬件環(huán)境介紹1.Hi3861芯片Hi3861是海思半導(dǎo)體開發(fā)的一款高度集成的2.4GHzSoCWiFi芯片。Hi3861芯片集成高性能32bit微處理器和豐富的外設(shè)接口,外設(shè)接口包括SPI、UART、I2C、PWM、GPIO和多路ADC;芯片內(nèi)置SRAM和Flash,可獨(dú)立運(yùn)行,并支持在Flash上運(yùn)行程序。Hi3861支持HUAWEILiteOS和第三方組件,并配套提供開放、易用的開發(fā)和調(diào)試運(yùn)行環(huán)境。Hi3861芯片適用于智能家電等物聯(lián)網(wǎng)智能終端領(lǐng)域。典型應(yīng)用場(chǎng)景包括智慧路燈、智慧物流、人體紅外等連接類設(shè)備。
智能安防設(shè)備硬件環(huán)境介紹2.熱釋電紅外傳感器熱釋電紅外傳感器又稱人體紅外傳感器。被廣泛應(yīng)用于防盜報(bào)警、來客告知及非接觸開關(guān)等紅外領(lǐng)域。熱釋電紅外傳感器外形如圖所示。能檢測(cè)人或某些動(dòng)物發(fā)射的紅外線并轉(zhuǎn)換成電信號(hào)輸出,是一種能檢測(cè)人體發(fā)射的紅外線的新型高靈敏度紅外探測(cè)元件。能以非接觸形式檢測(cè)出人體輻射的紅外線能量的變化,并將其轉(zhuǎn)換成電壓信號(hào)輸出。將輸出的電壓信號(hào)加以放大,便可驅(qū)動(dòng)各種控制電路。
智能安防設(shè)備硬件環(huán)境介紹3.蜂鳴器蜂鳴器是一種一體化結(jié)構(gòu)的電子器件,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。
4.LED燈貼片LED又稱SMDLED,是電路板上常用的元器件,如圖所示。它的發(fā)光原理是將電流通過化合物半導(dǎo)體,通過電子與空穴的結(jié)合,過剩的能量以光的形式釋出,達(dá)到發(fā)光的效果。
智能安防設(shè)備硬件環(huán)境介紹5.NFC通信NFC即近場(chǎng)通訊技術(shù),是一種非接觸式識(shí)別互聯(lián)技術(shù),可以在移動(dòng)設(shè)備、PC和智能設(shè)備間進(jìn)行近距離無線通信。NFC芯片是NFC技術(shù)的重要組成部分,其具有通信功能和一定的計(jì)算能力,部分NFC芯片產(chǎn)品甚至具有加密邏輯電路及加密/解密模塊。NFC芯片使用的是NT3H1201芯片,芯片支持I2C通信,支持可配置的現(xiàn)場(chǎng)檢測(cè)引腳,內(nèi)部配備有EEPROM存儲(chǔ)芯片,允許在RF和I2C之間快速傳出數(shù)據(jù)。
謝謝7.1.2智能安防設(shè)備通信方式通過本節(jié)學(xué)習(xí),您可以:了解智能安防設(shè)備的通信方式MQTT智能安防設(shè)備通信方式1.MQTT通信過程在MQTT通信過程中,有3種身份:發(fā)布者(Publisher)、消息代理(Broker)和訂閱者(Subscriber)。其中發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器。對(duì)于同一個(gè)客戶端,它可能是發(fā)布者也可能是訂閱者。MQTT客戶端可以發(fā)布消息供其他客戶端訂閱,可以訂閱其他客戶端發(fā)布的消息,可以退訂或者刪除消息,斷開與服務(wù)器的連接。MQTT服務(wù)器作為消息代理,位于消息發(fā)布者和訂閱者之間。它接收來自發(fā)布者的連接請(qǐng)求,接收發(fā)布者發(fā)布的消息,處理訂閱者的訂閱和退訂請(qǐng)求,向訂閱者轉(zhuǎn)發(fā)訂閱的消息。發(fā)布者訂閱者訂閱者代理服務(wù)器發(fā)布消息Publish訂閱請(qǐng)求Subscribe訂閱請(qǐng)求Subscribe訂閱請(qǐng)求Subscribe智能安防設(shè)備通信方式MQTT協(xié)議中傳輸?shù)南⒅饕譃橹黝}(Topic)和負(fù)載(Payload)。MQTT進(jìn)行通信的具體過程如圖所示:訂閱者發(fā)送連接請(qǐng)求給代理服務(wù)器,代理服務(wù)器授權(quán)并返回一個(gè)CONNACK確認(rèn)消息,形成一個(gè)會(huì)話;訂閱者發(fā)送訂閱請(qǐng)求給代理服務(wù)器,如果訂閱成功,代理服務(wù)器返回一條SUBACK確認(rèn)消息;智能安防設(shè)備通信方式發(fā)布者先與代理服務(wù)器建立連接,之后發(fā)布相應(yīng)主題的消息內(nèi)容給代理服務(wù)器,代理服務(wù)器將負(fù)載轉(zhuǎn)發(fā)給訂閱這個(gè)主題的訂閱者;訂閱者可以發(fā)送取消訂閱給代理服務(wù)器,代理服務(wù)器返回UNSUBACK確認(rèn)消息,經(jīng)過PING命令之后可斷開連接,返回DISCONNECT。智能安防設(shè)備通信方式2.MQTT主題在MQTT中使用主題名來標(biāo)識(shí)一個(gè)主題。一個(gè)主題名的格式是:{app}{operator}/{infoType}/{infoTarget}/{infoPath}{app}表示發(fā)布本消息的應(yīng)用程序。比如消息是由華為eSDK發(fā)布,則對(duì)應(yīng)的{app}值為esdk;如果是其他App發(fā)布的,則{app}為該應(yīng)用程序的關(guān)鍵字名稱。{operator}是一個(gè)動(dòng)作,表示操作類型,目前支持以下操作類型:get:獲取操作,適用于無輸入有輸出的請(qǐng)求/響應(yīng)場(chǎng)景。Set:設(shè)置操作,適用于有輸入無輸出的請(qǐng)求/響應(yīng)場(chǎng)景。action:命令操作,適用于既有輸入又有輸出的請(qǐng)求/響應(yīng)場(chǎng)景,輸入、輸出可選。notify:通知,適用于無須請(qǐng)求、主動(dòng)推送的信息。智能安防設(shè)備通信方式操作類型operator消息類型infoType說明getsetactionrequest請(qǐng)求消息response響應(yīng)消息notifyevent……事件通知消息。后續(xù)擴(kuò)展的或者其他自定義通知類型操作類型operator消息類型infoType消息目標(biāo)infoTargetgetsetactionrequest接收該請(qǐng)求消息的目標(biāo)應(yīng)用程序response接收該響應(yīng)消息的目標(biāo)應(yīng)用程序,對(duì)應(yīng)于{app},不能為*notifyevent……事件通知消息。后續(xù)擴(kuò)展的或者其他自定義通知類型{infoType}表示消息類型,根據(jù)操作類型{operator}而定。{infoTarget}表示消息目標(biāo),其含義與{infoType}相關(guān)。{infoPath}表示信息對(duì)象。例如,可用clock表示終端時(shí)間,用temperature表示溫度。智能安防設(shè)備通信方式3.主題通配符當(dāng)訂閱者訂閱主題時(shí),可以使用通配符來訂閱多個(gè)主題。MQTT支持3種通配符:層級(jí)分隔符“/”多層通配符“#”單層通配符“+”層級(jí)分隔符“/”將主題分為了多個(gè)層級(jí),使得主題層次分明。多層通配符“#”能夠匹配當(dāng)前主題層級(jí)下的所有子層級(jí)的子主題。單層通配符“+”只能匹配“+”所在的一層的主題。智能安防設(shè)備通信方式4.MQTT數(shù)據(jù)報(bào)文MQTT協(xié)議的數(shù)據(jù)報(bào)文主要由三部分組成:固定頭、可變頭和有效載荷。其中固定頭是所有數(shù)據(jù)報(bào)文都必須包含的部分。MQTT協(xié)議數(shù)據(jù)報(bào)文固定頭格式:Bit76543210Byte1MessageTypeDUPflagQoSlevelRETAINByte2RemainingLength智能安防設(shè)備通信方式MessageType:表示此數(shù)據(jù)報(bào)文的類型為連接請(qǐng)求、訂閱請(qǐng)求、訂閱確認(rèn)、取消訂閱等類型中的一種。DUPflag:用來保證消息可靠傳輸。設(shè)置為1,即在變長(zhǎng)中增加消息標(biāo)識(shí),并需要返回確認(rèn)。QoSlevel:消息的服務(wù)質(zhì)量。等級(jí)表示保證傳遞的次數(shù),分3個(gè)等級(jí)。RETAIN:發(fā)布保留標(biāo)識(shí)。指是否保留消息在代理服務(wù)器中,以供新的訂閱者訂閱此消息。RemainingLength:表示可變頭和有效載荷的字節(jié)數(shù),最多可以占4個(gè)字節(jié)??勺冾^的內(nèi)容因數(shù)據(jù)報(bào)文類型不同而不同,有效載荷表示消息的具體內(nèi)容。Bit76543210Byte1MessageTypeDUPflagQoSlevelRETAINByte2RemainingLength智能安防設(shè)備通信方式5.MQTT消息格式JSON是一種存儲(chǔ)和交換文本信息的語法,它采用了鍵值對(duì)(key/value)的方式。MQTT消息的JSON格式如下:字段類型說明Tokenstring消息標(biāo)識(shí)。相同源發(fā)出的相同類型消息的token應(yīng)該各不同,可以用自增數(shù)、隨機(jī)數(shù)表示Timestampstring消息產(chǎn)生的時(shí)間戳…………其他的自定義拓展字段bodyJSON消息體,以JSON格式表示
{
“token”:”12345”,
“timestamp”:”2022-10-10T17:20:30Z”,
……
“body”:消息體
}智能安防設(shè)備通信方式6.MQTT數(shù)據(jù)訪問操作類型為get、set、和action的主題,稱為“數(shù)據(jù)訪問”。一般是通信雙方分別訂閱請(qǐng)求主題和響應(yīng)主題,請(qǐng)求方發(fā)布請(qǐng)求,經(jīng)過服務(wù)器轉(zhuǎn)發(fā)后,提供方發(fā)布響應(yīng),請(qǐng)求方最后接收到響應(yīng)。智能安防設(shè)備通信方式7.MQTT事件通知對(duì)于事件通知類型的消息,事件通知方是主動(dòng)發(fā)布消息,代理服務(wù)器將消息轉(zhuǎn)發(fā)給訂閱了該通知的訂閱方,如圖所示。謝謝7.2.1搭建智能安防設(shè)備開發(fā)代碼工程通過本節(jié)學(xué)習(xí),您可以:了解搭建智能安防設(shè)備開發(fā)代碼工程搭建智能安防設(shè)備開發(fā)代碼工程在hi3861工程目錄下添加智能安防工程——AF,如圖所示。在hi3861工程目錄的app文件夾下創(chuàng)建文件夾AF。在AF文件夾下創(chuàng)建app_AF.c與BUILD.gn文件以及inc與src文件夾。在inc文件夾下創(chuàng)建AF.h文件在src文件夾下創(chuàng)建AF.c文件搭建智能安防設(shè)備開發(fā)代碼工程在hi3861工程目錄下添加智能安防工程——AF,如圖所示。在hi3861工程目錄的app文件夾下創(chuàng)建文件夾AF。在AF文件夾下創(chuàng)建app_AF.c與BUILD.gn文件以及inc與src文件夾。在inc文件夾下創(chuàng)建AF.h文件在src文件夾下創(chuàng)建AF.c文件謝謝7.2.2蜂鳴器驅(qū)動(dòng)開發(fā)通過本節(jié)學(xué)習(xí),您可以:了解蜂鳴器驅(qū)動(dòng)開發(fā)蜂鳴器驅(qū)動(dòng)開發(fā)1.初始化GPIO引腳連接蜂鳴器的引腳為GPIO_08,將該引腳進(jìn)行宏定義??刂品澍Q器需要用到PWM,GPIO_08引腳對(duì)應(yīng)的為PWM1_OUT復(fù)用信號(hào)。所以對(duì)引腳進(jìn)行初始化時(shí)需要將引腳復(fù)用為PWM1并設(shè)置輸出模式。#defineAF_BEEP8//蜂鳴器的引腳
/**GPIO初始化**/
hi_gpio_init();//初始化GPIO
hi_io_set_func(AF_BEEP,HI_IO_FUNC_GPIO_8_PWM1_OUT);//設(shè)置GPIO_8引腳復(fù)用功能為PWM
hi_gpio_set_dir(AF_BEEP,HI_GPIO_DIR_OUT);//設(shè)置GPIO_8引腳為輸出模式
hi_pwm_init(HI_PWM_PORT_PWM1);//初始化PWM1端口
蜂鳴器驅(qū)動(dòng)開發(fā)2.設(shè)置蜂鳴器狀態(tài)宏定義PWM的頻率與占空比。通過控制GPIO_08引腳是否輸出PWM來達(dá)到控制蜂鳴器的目的。#definePWM_DUTY3999//PWM的占空比
#definePWM_FREQ4000//PWM的頻率
/*設(shè)置蜂鳴器的狀態(tài)*/
voidBeepStatusSet(intstatus)
{
if(status==1)
{
hi_pwm_start(HI_PWM_PORT_PWM1,PWM_DUTY,PWM_FREQ);//輸出PWM
}
if(status==0)
{
hi_pwm_stop(HI_PWM_PORT_PWM1);//停止輸出PWM
}}謝謝7.2.3人體熱釋電傳感器驅(qū)動(dòng)開發(fā)通過本節(jié)學(xué)習(xí),您可以:了解人體熱釋電傳感器驅(qū)動(dòng)開發(fā)人體熱釋電傳感器驅(qū)動(dòng)開發(fā)1.初始化GPIO引腳連接人體熱釋電傳感器的引腳為GPIO_07,將該引腳進(jìn)行宏定義。人體熱釋電傳感器模塊檢測(cè)到有人靠近時(shí)會(huì)輸出高電平,與之對(duì)應(yīng)的GPIO_07只需要檢測(cè)輸入的電平是否上升為高電平。所以GPIO_07需要設(shè)置為上拉輸入模式。
#defineAF_PIR7//熱釋電紅外傳感器的引腳
/**GPIO初始化**/
hi_gpio_init();
hi_io_set_func(AF_PIR,HI_IO_FUNC_GPIO_7_GPIO);//設(shè)置為GPIO模式
hi_gpio_set_dir(AF_PIR,HI_GPIO_DIR_IN);//設(shè)置GPIO_7為輸入模式
hi_io_set_pull(AF_PIR,HI_IO_PULL_UP);//上拉模式
人體熱釋電傳感器驅(qū)動(dòng)開發(fā)2.功能開發(fā)芯片只需要檢測(cè)人體熱釋電傳感器模塊是否輸出高電平,即可知道是否有人靠近需要發(fā)出警報(bào)。所以需要用到GPIO_07的上升沿中斷。中斷響應(yīng)函數(shù)內(nèi)為事件標(biāo)志位寫入函數(shù),中斷觸發(fā)則將標(biāo)志位寫入事件中。其他程序即可做出相應(yīng)處理。
hi_gpio_register_isr_function(AF_PIR,HI_INT_TYPE_EDGE,
HI_GPIO_EDGE_RISE_LEVEL_HIGH,func,NULL);//設(shè)置上升沿中斷
static
voidBeepAlarm(char*arg)
{
(void)arg;
osEventFlagsSet(g_eventFlagsId,FLAGS_MSK1);}謝謝7.2.4智能安防任務(wù)開發(fā)通過本節(jié)學(xué)習(xí),您可以:了解智能安防任務(wù)開發(fā)智能安防任務(wù)開發(fā)對(duì)任務(wù)、延時(shí)、事件等參數(shù)進(jìn)行宏定義或者全局定義。
#defineTASK_STACK_SIZE(1024*8)//任務(wù)內(nèi)存大小
#defineTASK_PRIO25//任務(wù)優(yōu)先級(jí)
#defineTASK_DELAY_3S300//延時(shí)3S的參數(shù)
#defineTASK_DELAY_1S100//延時(shí)1S的參數(shù)
#defineTASK_DELAY_100MS100000//延時(shí)100ms的參數(shù)
#defineFLAGS_MSK10x00000001U//事件標(biāo)志位
osEventFlagsId_tg_eventFlagsId;//事件
uint8_ttopic_buf[64]="MQTT_MCU";//發(fā)布的主題
智能安防任務(wù)開發(fā)智能安防任務(wù)創(chuàng)建。
osThreadAttr_tattr;
="AFTask";//任務(wù)名稱
attr.attr_bits=0U;//任務(wù)屬性位
attr.cb_mem=NULL;//任務(wù)控制塊的內(nèi)存初始化地址,默認(rèn)為系統(tǒng)默認(rèn)分配
attr.cb_size=0U;//任務(wù)控制塊的內(nèi)存大小
attr.stack_mem=NULL;//任務(wù)的內(nèi)存初始地址,默認(rèn)為系統(tǒng)自動(dòng)分配
attr.stack_size=TASK_STACK_SIZE;//任務(wù)的內(nèi)存大小
attr.priority=TASK_PRIO;//任務(wù)的優(yōu)先級(jí)
/**創(chuàng)建任務(wù)**/
if(osThreadNew((osThreadFunc_t)AFTask,NULL,&attr)==NULL){
printf("FailedtocreateAFTask!\n");
}
printf("SucceedtocreateAFTask!\n");智能安防任務(wù)開發(fā)事件的創(chuàng)建,人體熱釋電傳感器的初始化及啟動(dòng),NFC功能的初始化及啟動(dòng)并將NFC芯片序列號(hào)組包輸出。
g_eventFlagsId=osEventFlagsNew(NULL);//創(chuàng)建一個(gè)事件ID
if(g_eventFlagsId==NULL){
printf("FailedtocreateEventFlags!\n");
}
AFInit();//初始化AF模塊
ret=AFReadData(BeepAlarm);//讀人體熱釋電的數(shù)據(jù)
if(ret!=0){
printf("AFReadDatafailed!\r\n");
return;
}printf("AFReadDatasucceed!\r\n");
智能安防任務(wù)開發(fā)
NFC_GPIOInit();//初始化NFC的通信引腳
usleep(TASK_DELAY_100MS);//延遲100ms
NT3HGetNxpSerialNumber(buffer);//獲取NFC芯片的序列號(hào)
Hex2StringArray(str_buf,6,buffer);//轉(zhuǎn)化為字符串
StringCat(topic_buf,str_buf);//組成一個(gè)新的發(fā)布主題
printf("Topic:%s\r\n",topic_buf);
ret=storeText(NDEFFirstPos,topic_buf);//把發(fā)布的主題寫入NFC芯片中
if(ret!=1)
{
printf("NFCWriteDataFalied:%d",ret);
}
printf("Successfuldeployment!\r\n");智能安防任務(wù)開發(fā)智能安防功能代碼實(shí)現(xiàn)。程序會(huì)一直等待事件響應(yīng),如果有人靠近人體熱釋電傳感器模塊輸出高電平觸發(fā)中斷,向事件中寫入標(biāo)志位。等待的事件得到響應(yīng),實(shí)驗(yàn)箱的蜂鳴器報(bào)警并且在串口輸出警報(bào)以及警報(bào)次數(shù)。
while(1)
{
osEventFlagsWait(g_eventFlagsId,FLAGS_MSK1,osFlagsWaitAny,osWaitForever);//等待事件響應(yīng)
printf("\r\n!!!warning!!!\r\n");
time++;
printf("Numberofalerts:%d\r\n",time);
BeepStatusSet(ON);//開蜂鳴器
osDelay(TASK_DELAY_3S);//延時(shí)3S
BeepStatusSet(OFF);//關(guān)蜂鳴器
osDelay(TASK_DELAY_1S);//延時(shí)1S
}謝謝7.2.5智能安防功能調(diào)測(cè)通過本節(jié)學(xué)習(xí),您可以:了解智能安防功能調(diào)測(cè)智能安防功能調(diào)測(cè)編譯燒寫完成后啟動(dòng)程序。輸出SucceedtocreateAFTask!表示智能安防任務(wù)創(chuàng)建成功。輸出AFReadDatasucceed!表示人體熱釋電傳感器啟動(dòng)成功。輸出Successfuldeployment!表示程序啟動(dòng)成功,開始檢測(cè)是否有人員靠近。輸出!!!warning!!!表示有人員靠近發(fā)出警報(bào),并且蜂鳴器開始工作發(fā)出警報(bào)聲。輸出Numberofalerts:表示報(bào)警次數(shù)。謝謝7.2.6項(xiàng)目總結(jié)報(bào)告通過本節(jié)學(xué)習(xí),您可以:了解智能安防項(xiàng)目的完整代碼項(xiàng)目總結(jié)報(bào)告智能安防完整代碼如下:app_AF.c:主體程序代碼。包含智能安防任務(wù)創(chuàng)建,各外設(shè)程序初始化,主要功能代碼實(shí)現(xiàn)。
#include<stdio.h>
#include<string.h>
#include"cmsis_os2.h"
#include"ohos_init.h"
#include"hi_io.h"
#include"hi_pwm.h"
#include"hi_gpio.h"
#include"AF.h"
#include"mqtt_connect.h"
#include"bsp_string.h"
#include"bsp_nfc.h"
#include"NT3H.h"
#defineTASK_STACK_SIZE(1024*8)//任務(wù)內(nèi)存大小
#defineTASK_PRIO25//任務(wù)優(yōu)先級(jí)
#defineTASK_DELAY_3S300//延時(shí)3S的參數(shù)
#defineTASK_DELAY_1S100//延時(shí)1S的參數(shù)
#defineTASK_DELAY_100MS100000//延時(shí)100ms的參數(shù)
#defineFLAGS_MSK10x00000001U//事件標(biāo)志位
項(xiàng)目總結(jié)報(bào)告
osEventFlagsId_tg_eventFlagsId;//事件
uint8_ttopic_buf[64]="MQTT_MCU";//發(fā)布的主題
/**
*@brief中斷響應(yīng)函數(shù)
*/
static
voidBeepAlarm(char*arg)
{
(void)arg;
osEventFlagsSet(g_eventFlagsId,FLAGS_MSK1);
}
/**
*@briefAF任務(wù)函數(shù)
*/
static
voidAFTask(void){項(xiàng)目總結(jié)報(bào)告
intret;
inttime=0;
uint8_thuman_state='1';
uint8_tbuffer[16]={0};
uint8_tstr_buf[32]={0};
AFInit();//初始化AF模塊
ret=AFReadData(BeepAlarm);//讀人體熱釋電的數(shù)據(jù)
if(ret!=0){
printf("AFReadDatafailed!\r\n");
return;
}printf("AFReadDatasucceed!\r\n");
NFC_GPIOInit();//初始化NFC的通信引腳
usleep(TASK_DELAY_100MS);//延遲100ms
NT3HGetNxpSerialNumber(buffer);//獲取NFC芯片的序列號(hào)
Hex2StringArray(str_buf,6,buffer);//轉(zhuǎn)化為字符串
StringCat(topic_buf,str_buf);//組成一個(gè)新的發(fā)布主題
printf("Topic:%s\r\n",topic_buf);
ret=storeText(NDEFFirstPos,topic_buf);//把發(fā)布的主題寫入NFC芯片中
項(xiàng)目總結(jié)報(bào)告
if(ret!=1)
{
printf("NFCWriteDataFalied:%d",ret);
}
printf("Successfuldeployment!\r\n");
while(1)
{
osEventFlagsWait(g_eventFlagsId,FLAGS_MSK1,osFlagsWaitAny,osWaitForever);//等待事件響應(yīng)
printf("\r\n!!!warning!!!\r\n");
time++;
printf("Numberofalerts:%d\r\n",time);
BeepStatusSet(ON);//開蜂鳴器
osDelay(TASK_DELAY_3S);//延時(shí)3S
BeepStatusSet(OFF);//關(guān)蜂鳴器
osDelay(TASK_DELAY_1S);//延時(shí)1S
}}項(xiàng)目總結(jié)報(bào)告
/**
@briefAF任務(wù)創(chuàng)建函數(shù)
**/
static
voidAFEntry(void)
{
g_eventFlagsId=osEventFlagsNew(NULL);//創(chuàng)建一個(gè)事件ID
if(g_eventFlagsId==NULL){
printf("FailedtocreateEventFlags!\n");
}
osThreadAttr_tattr;
="AFTask";//任務(wù)名稱
attr.attr_bits=0U;//任務(wù)屬性位
attr.cb_mem=NULL;//任務(wù)控制塊的內(nèi)存初始化地址,默認(rèn)為系統(tǒng)默認(rèn)分配
attr.cb_size=0U;//任務(wù)控制塊的內(nèi)存大小
attr.stack_mem=NULL;//任務(wù)的內(nèi)存初始地址,默認(rèn)為系統(tǒng)自動(dòng)分配
attr.stack_size=TASK_STACK_SIZE;//任務(wù)的內(nèi)存大小
attr.priority=TASK_PRIO;//任務(wù)的優(yōu)先級(jí)
/**創(chuàng)建任務(wù)**/
if(osThreadNew((osThreadFunc_t)AFTask,NULL,&attr)==NULL){
printf("FailedtocreateAFTask!\n");
}
printf("SucceedtocreateAFTask!\n");
}
/**讓系統(tǒng)運(yùn)行指定的函數(shù)**/
APP_FEATURE_INIT(AFEntry);項(xiàng)目總結(jié)報(bào)告inc/AF.h:硬件外設(shè)初始化頭文件。
#ifndef__AF_H__
#define__AF_H__
typedef
enum{
OFF=0,
ON
};
voidAFInit(void);
intAFReadData(char*func);
voidBeepStatusSet(intstatus);
#endif項(xiàng)目總結(jié)報(bào)告src/AF.c:硬件外設(shè)引腳初始化及對(duì)應(yīng)功能實(shí)現(xiàn)。
#include<math.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include"cmsis_os2.h"
#include"hi_io.h"
#include"hi_pwm.h"
#include"hi_gpio.h"
#defineAF_BEEP8//蜂鳴器的引腳
#defineAF_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源汽車充電站場(chǎng)地租賃與運(yùn)營(yíng)管理合同12篇
- 2025年度圖書銷售合同范本二零二五年度4篇
- 二零二五年度高端餐廳特色菜品定制供應(yīng)合同3篇
- 專業(yè)設(shè)備運(yùn)輸協(xié)議模板(2024版)
- 2024蓄水池建造與維護(hù)一體化服務(wù)合同3篇
- 專業(yè)用琴租賃協(xié)議(2024年度)版B版
- 2025年度茶葉倉(cāng)儲(chǔ)物流配送服務(wù)協(xié)議4篇
- 2025年度智慧城市建設(shè)物聯(lián)網(wǎng)設(shè)備采購(gòu)與安裝服務(wù)協(xié)議3篇
- 2024限定版戶外欄桿施工協(xié)議版B版
- 個(gè)性化汽車租賃協(xié)議模板2024版版
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題
- 《酸堿罐區(qū)設(shè)計(jì)規(guī)范》編制說明
- PMC主管年終總結(jié)報(bào)告
- 售樓部保安管理培訓(xùn)
- 倉(cāng)儲(chǔ)培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級(jí)
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢(shì)與政策》課程標(biāo)準(zhǔn)
- 2023年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 橋梁監(jiān)測(cè)監(jiān)控實(shí)施方案
評(píng)論
0/150
提交評(píng)論