




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、“1+X”傳感網(wǎng)應(yīng)用開發(fā) NB-IoT通信應(yīng)用開發(fā)01全局變量、自定義函數(shù)的聲明02自定義函數(shù)功能解析03主函數(shù)功能代碼目錄CONTENTS01掌握工程文件的添加02掌握變量定義及函數(shù)聲明方式03掌握NB模塊的基本配置步驟技能知識點CONTENTS04掌握光照控制燈及模式切換應(yīng)用開發(fā)1全局變量、自定義函數(shù)的聲明知識鏈接01STM32CubeMX生成工程介紹02函數(shù)聲明和頭文件添加STM32CubeMX生成工程介紹01 通過前次課程的學(xué)習(xí),大家已經(jīng)掌握了使用STM32CubeMX快速生成項目的方法。通過STM32CubeMX新建工程,快捷、方便,比使用keil5更加易于理解,不抽象。1、頭文件的
2、添加2、自定義變量的添加3、自定義函數(shù)的聲明02(1)、打開main.c 文件(2)、頭文件,變量及函數(shù)聲明處1、頭文件的添加2、自定義變量的添加3、自定義函數(shù)的聲明02(1)、添加新增的頭文件引用,內(nèi)容如下:#include user_cloud.h#include user_oled.h#include user_usart1.h#include user_usart2.h#include key.h#include oled.h(2)、添加變量聲明 uint8_t usart1RxBuf; /串口1接收緩存 uint8_t usart2RxBuf; /串口2接收緩存(3)、添加自定義函數(shù)
3、聲明 int fputc(int ch,FILE *f); /定向輸出函數(shù)float get_illumination_value(); /ADC采集并轉(zhuǎn)化為光照值void control_light(uint8_t status); /控制燈亮滅功能函數(shù)void automatic_mode(int value,int *light_flag); /根據(jù)光照強(qiáng)度自動控制燈亮滅的功能函數(shù)void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); /串口中斷服務(wù)程序void HAL_UART_ErrorCallback(UART_Handle
4、TypeDef *huart); /串口錯誤處理程序2自定義函數(shù)功能解析任務(wù)要求 本任務(wù)要求用戶編寫功能函數(shù),實現(xiàn)以下函數(shù)功能(1)串口的定向輸出程序(2)光照強(qiáng)度采集及處理程序(3)燈的亮滅控制程序(4)根據(jù)光強(qiáng)自動控制程序(5)串口中斷服務(wù)程序(6)串口中斷錯誤處理程序功能函數(shù)01fputc02Floatget_illumination_value03control_light04automatic_modeHAL_UART_ErrorCallback06101此處調(diào)用了UART串口寫函數(shù),函數(shù)功能將字符通過串口1發(fā)出HAL_UART_Transmit函數(shù)原型如下在main.c文件添加函數(shù)
5、:(此處添加位置任意,前面已經(jīng)聲明)int fputc(int ch,FILE *f) HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,10); return ch;02Floatget_illumination_value函數(shù): 使用stm32 ADC功能,采集光照產(chǎn)生的模擬電壓信號值,利用相關(guān)公式計算,將電壓值轉(zhuǎn)化為光照強(qiáng)度,作為返回值輸出float get_illumination_value() float adcValue; float illumination_value; HAL_ADC_Start(&hadc); HAL_ADC_PollFo
6、rConversion(&hadc,10); adcValue=HAL_ADC_GetValue(&hadc); adcValue=adcValue*3.3/4096.0; illumination_value=pow(10,(1.78-log10(33/adcValue-10)/0.6);/將電壓值轉(zhuǎn)換為光照強(qiáng)度 oled_display_illumination(illumination_value); HAL_ADC_Stop(&hadc); return illumination_value; 通過IO口輸出高低電平控制繼電器開關(guān),進(jìn)而控制燈的亮滅。此處使用的IO引腳為PA8,oled
7、_display_light_status為LED屏幕顯示函數(shù),顯示燈的亮滅狀態(tài)03void control_light(uint8_t status) if(status=LIGHT_OPEN) HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,GPIO_PIN_SET); oled_display_light_status(LIGHT_OPEN); else HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,GPIO_PIN_RESET); oled_display_light_status(LIGHT_CLOSE
8、); 04automatic_mode(int value,int *light_flag)Value 采集的光照強(qiáng)度值light_flag 當(dāng)前燈的狀態(tài)標(biāo)志0為滅,1為亮now_ill_value 存儲的用于比較的光照強(qiáng)度當(dāng)檢測到光照強(qiáng)度低于3時且燈滅時,打開燈,并記錄下當(dāng)前光照強(qiáng)度。當(dāng)檢測到燈的強(qiáng)度比之前存儲的強(qiáng)度值高于1以上(表示外界光照變強(qiáng)),且燈亮?xí)r,關(guān)閉燈。void automatic_mode(int value,int *light_flag) static int now_ill_value; if(value3)&(*light_flag=0) control_light(
9、LIGHT_OPEN); *light_flag=1; HAL_Delay(10); now_ill_value=(int)get_illumination_value(); else if(now_ill_value+1ErrorCode); huart-ErrorCode=HAL_UART_ERROR_NONE; if(huart=&huart1) HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1); /重新打開串口1接收中斷 if(huart=&huart2) HAL_UART_Receive_IT(&huart2,&usart2RxBuf,1); /
10、重新打開串口2接收中斷3主函數(shù)功能代碼添加知識鏈接01參數(shù)介紹02初始化03主流程介紹04開發(fā)流程演示參數(shù)介紹ill_value:經(jīng)AD轉(zhuǎn)換后得到的光照強(qiáng)度值mod_flag:=1表示自動控制模式,=0表示手動按鍵模式mod_flag:=1表示當(dāng)前燈亮,=0表示當(dāng)前燈滅0102在main主函數(shù),硬件初始化部分添加相關(guān)外設(shè)初始化代碼。主要包含1、oled屏初始化2、按鍵初始化 3、初始屏顯信息4、開串口中斷5、nb模塊初始化6、nb模塊鏈接服務(wù)器7、相關(guān)變量的定義OLED_Init();keys_init();oled_display_information();oled_display_con
11、nection_status(LINKING);oled_display_light_status(LIGHT_CLOSE);oled_show_mode(MANUAL);HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1);HAL_UART_Receive_IT(&huart2,&usart2RxBuf,1);wait_nbiot_start();nbiot_config();link_server();int i,ret,ill_value,lightStatus, int link_flag=0,send_count;uint8_t mod_flag=0,c=0;03在main.c主文件中添加右側(cè)代碼03代碼主要實現(xiàn)了,間隔1.5s(i+14)采集傳感器數(shù)據(jù)(get_illumination_value(),當(dāng)為自動模式時,調(diào)用automatic_mode()控制燈的亮滅,將數(shù)據(jù)上傳至云平臺send_data_to_cloud(),同時對云平臺返回的數(shù)據(jù)進(jìn)行接收和處理rcv_data_deal(),switch(ret);主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 樓頂伸縮縫維修施工方案
- 金屬圍欄施工方案
- 幼兒園獲獎公開課:小班數(shù)學(xué)《幫瓢蟲找家》教案
- 礦山隧道堵漏施工方案
- 發(fā)展鄉(xiāng)村特色產(chǎn)業(yè)助推新型農(nóng)村集體經(jīng)濟(jì)的價值及舉措論述
- 優(yōu)化勞動用工制度的策略及實施路徑
- 食品加工企業(yè)物流運輸與配送安全fa
- 低空經(jīng)濟(jì)公司未來發(fā)展戰(zhàn)略
- 基于問題導(dǎo)向的高中物理教學(xué)策略研究
- 中外名建筑賞析知到課后答案智慧樹章節(jié)測試答案2025年春濰坊工程職業(yè)學(xué)院
- 職業(yè)健康安全交底
- GB∕T 7588.1-2020 電梯制造與安裝安全規(guī)范 第1部分:乘客電梯和載貨電梯
- 壓力容器定期(月度)檢查記錄
- 無線電遙控模型飛機(jī)戴氏教學(xué)法(業(yè)余特技飛行訓(xùn)練)
- 2022年全省公訴業(yè)務(wù)知識考試參考答案
- 天潤化肥事故案例警示會3.5
- 小學(xué)語文總復(fù)習(xí)指導(dǎo)(課堂PPT)
- 鎮(zhèn)政府(街道辦事處)辦公大樓平面圖
- API-685-中文_
- 控制柜出廠檢驗報告(plc+變頻+就地)
- (完整版)一致性聲明模版
評論
0/150
提交評論