教程分析成果freq ble sdk user guide v_第1頁
教程分析成果freq ble sdk user guide v_第2頁
教程分析成果freq ble sdk user guide v_第3頁
教程分析成果freq ble sdk user guide v_第4頁
教程分析成果freq ble sdk user guide v_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

概 FR801xHSDK結 SDK項目工 BLE協議 GAP GAPGAPEventType GAPGATTMTU GAPScanMode GAPScan GAPIOCapabilities GAPSecurity Gapbond GAP函 GAPSetEventCallback GAPStart GAPStop GAPStart GAPStop GAPConnect GAPGetLocal GAPSetLocal GAPGetConnection GAPGetEncryption GAPSetDevice GAPGetDevice GAPSetDevice GAPGetDevice GAPGetConnection GAPGetLink GAPEnableRSSIreportinreal GATT GATT函 GATTAdd GATTChange Mesh Mesh MeshModel NetworkKeyisNOT NetworkKeyis Mesh函 Mesh MeshSet Mesh Mesh MeshModelBind MeshAdd Security函 GAPGetBondDevice GAPSetSecurity GAPPairing GAPEncrypt GAPGetBond GAPSecurity BLE HIDserviceHIDservice函 DISDIS函 Battery BATTBATT函 OTA函 OSAL Task函 OSMessage OSUserLoopEvent OSUserLoopEvent Clock Clock函 OSTimer OSTimer OSTimer Memory Memory函 OS OS Heap OSShowMessage OSShowKernelMalloc OSShowMemory MCU外設驅 IO 普通IO接 IO功能設 IO上拉設 IO使能低功耗模 IO關閉低功耗模 IO低功耗模式功能設 IO低功耗模式輸入輸出設 IO低功耗模式上拉設 IO使能低功耗喚 IO低功耗模式中斷 GPIO輸 GPIO獲取整個port輸入輸出配 GPIO設置單個IO輸入輸 GPIO低功耗模式輸出 GPIO低功耗模式輸入 UART初始 UART等待發(fā)送FIFO為 UART發(fā)送一個字節(jié)且等待完 UART發(fā)送一個字節(jié)且立即返 UART發(fā)送多個字節(jié)且等待完 UART特定個數字 UART特定個數字節(jié),諾FIFO為空則先返 UART0讀數 UART0發(fā)數 UART1讀數 UART1寫數 SPI初始 SPI發(fā)送并接 SPI發(fā) SPI接 I2C初始 I2C發(fā)送一個字 I2C發(fā)送多個字 I2C一個字 I2C多個字 Timer初始 Timer啟 Timer停 Timer獲取load Timer獲取當前計數 Timer清中 普 接 初始 啟 停 接 低功 初始 低功 低功 啟 低功 停 ADC初始 ADC開始采 ADC停止采 ADC結 WDT初始 WDT喂 WDT啟 WDT停 WDT中斷處理接 RTC初始 RTC啟 RTC停 RTC中斷處理接 QDEC初始 QDEC設置引 QDEC設置條 QDEC設置中斷閥 QDEC設置中斷類 QDEC去 QDEC旋轉計 QDEC中斷處理接 Key KeyScan結構體定 KeyScan參 KeyScan函 KeyScan初始 KeyScan中斷處理接 PMU配置系統(tǒng)電 PMU判斷系統(tǒng)是否第一次上 PMU使能中 PMU關閉中 PMU使能Codec供 PMU關閉Codec供 PMU設置LDO_OUT和IO電壓 PMU設置32K時鐘 PMU設置內部RC頻 PMU低電壓監(jiān)測中斷接 PMU高溫監(jiān)測中斷接 其 OTA主機端的請求包格式(通過write 重 FR801xH的回復包格式(通過Notify 重 108 包含了BLE5.0的完整協議棧,的外設驅動以及操作系統(tǒng)抽象層OSAL。FR801xHSDK分。MCU外設驅動和profile,以及應用層的例程代碼,都是以源碼的形式提供,圖中為綠色部分。FR801xH其中內置128KBROM,主要內容為啟動代碼、BLEcontroller部分協議棧;FLASH空間用于用戶程序、用戶數等,該空間都支持低功耗的retention功能;外設地址空間是各種外設的地址映射,用于進行外設的配置。其中JUMP_TABLE的是配置信息;APPCODE和RODATA可以通過XIP被MCU直接;CRITICALCODE和EXCEPTIONandINTERRUPTHANDLERflashRAM中;mainmainvoid{jump_table.image_size=0x19000; //100KBjump_table.firmware_version=0x }48M;配置協議棧中使用的0x30000void{/*setsystempowersupplyinBUCKmode*/||||||/*ATcommandinterface*/口,比如可以進行協議棧相關的一些操作,比如下圖所示,可以進行bondmanager的初始化,GAP處理回調函數的,BLE廣播參數的設置,GATTservice的創(chuàng)建,用戶task的創(chuàng)建等。()值-OTA的備份區(qū)域。例00x10000。因此該值在一個項--SDK gatt_api.h、gap_api.h等文件中。 在的J-Link調試口被復用成別的功能,或者系統(tǒng)會進入睡眠時,則無法通過上述方法進行燒錄。這時可以采RX,RX耗模式,FR801xH支持兩種低功耗模式:RTC等可選醒時系統(tǒng)會進行現場恢復的操作,包括MCU狀態(tài),RF初始化等操作,整個流程會在很短的時間完成。PMU的中斷源有:充電器插入拔出、KEYSCAN模塊、Q-DEC模塊、RTC、GPIO狀態(tài)監(jiān)測模塊等,這些中斷源可以pmu_set_pin_pull(GPIO_PORT_D,(1<<GPIO_BIT_4)|(1<<GPIO_BIT_5),true);BLE上層應用開發(fā)調用。Profile則是以源碼的形式提供。GAPGAPGAPEventType//typedef{做為slave建立做為master建立GAPLinkEstablished//Linkestablishedeventtypedef{ //!<號 //!<對端的mac地址 //!<對端mac地址的類型 //!<握手間隔參數。單位 //!<lantency參數 //!<超時斷開的參數。單位}GAPLinkDisconnect//Linkdisconnecteventtypedef{ //!< //!<的原因。參考hl}GAPLinkParameterUpdateRejecttypedef{ 號 //!<}GAPLinkParameterUpdateSuccesstypedef{ lantency }GAPAdvertisingReporttypedef{ //!<收到廣播的類型,見@GAP_SCAN_EVT_TYPE_DEFINES //!<廣播的mac地址。 //!<廣播的 //!<廣播的rssi值。 //!<廣播的數據長度uint8_t //!<buffer}GAPPeerFeature//Peerfeaturersptypedef{ //!<對應的號 //!<feature}GAPGATTMTU//Mtuexchangedeventtypedef{//!<對應的號//!<mtu}GAPSecurityMasterAuthenticationRequest//Gotauth_reqeventtypedef{ //!<對應的號 //!<是否要進行加密。0:不加密。1:}GAPMessage//GAPmessageeventtypedef{ GATTevent的類型,見 做為slave建立對應參數。 做為master建立對應參數。 mtu交換完畢對應的參數。 收到對端rssi時的值。 master加密對應的號 slave加密對應的GAPAdvertisingMode,GAPAdvertisingType//GAPAdvertisingChannel// //!<37 //!<38 //!<39 //!<37~39GAPAdvertisingFilterMode//GAPAdvertising//Gapadvparametertypedef{廣播的模式,見@廣播的通道選擇。見@廣播的過濾設置。見@GAPScanMode// scanrsp //!<掃描,不能收到scanrsp包GAPScanResultType//收到的廣播包為scanGAPScan//Gapscantypedef{ 掃描的模式,見@ .; 。范圍 GAPPairingMode// //!< //!<GAPIOCapabilities////!<GAPSecuritytypedef{ //!<middlemodePIN //!<是否啟用安全。保留。不用填 //!<ble //!<是否初始化配對,或等待配對。見@ //!<是否使能配對時的綁定檢查。True Gapbond//Gapbondtypedef{GAPGAPSetEventCallback 應用層的GAP處理函數{{case{}}}GAPSetAdvertising 指向廣播參數結構體的指針。具體見2.1.1中的gap_adv_param_t類型定義。參數取值需adv_intv_min需要小于等于adv_intv_maxadv_intv_minadv_intv_max的取值范圍//GAP-Advertisementdata(maxsize=31bytes,thoughthis//bestkeptshorttoconservepowerwhilestaticuint8_tadv_data[]={//serviceUUID,tonotifycentraldeviceswhatservicesare//inthisperipheral.告訴central本機有什么服務,但這里先只放一個主要的. //lengthofthisdata //someoftheUUID's,butnotall0xFF,0xFE,//GAP-Scanresponsedata(maxsize=31bytes,thoughthis//bestkeptshorttoconservepowerwhilestaticuint8_tscan_rsp_data[]={completename //lengthofthis 'S','i','m','p','l','e','','P','e','r','i','p','h','e','r','a',//Txpowerlevel //lengthofthisdata //adv_param.adv_mode=GAP_ADV_MODE_UNDIRECT;adv_param.adv_addr_type=GAP_ADDR_TYPE_PUBLIC;adv_param.adv_chnl_map=GAP_ADV_CHAN_ALL;adv_param.adv_intv_min=adv_param.adv_intv_max=300;uint8_tadv_data[]=adv_data;uint8_trsp_data[]=scan_rsp_data;gap_set_advertising_data(adv_data,sizeof(adv_data));gap_set_advertising_rsp_data(rsp_data,sizeof(scan_rsp_data));GAPSetAdvertising 指向廣播數據buffer 廣播數據長度值。取值范圍:1~GAPSetAdvertisingResponse 廣播掃描回復數據長度值。取值范圍:1~GAPStart BLE10ms0~65535。其他:廣播持續(xù)duration*10msGAPStopvoid停止BLE廣播。廣播停止時會產生GAP_EVT_ADV_ENDGAPStart 掃描的參數,具體見2.1.1中的gap_scan_param_t類型定義。參數取值需滿足以下條件必須小于等于scan_intv和scan_window0x4 取值范圍為0 其他:掃描持續(xù)duration*10msgap_scan_param_tscan_param;scan_param.dup_filt_pol=0;scan_param.scan_intv=32;//scaneventon-goingtimescan_param.scan_window=20;scan_param.duration=GAPStopvoidBLEcentral或者observerperipheraladvertiserGAP_EVT_SCAN_ENDGAPConnectvoidgap_start_conn(structmac_addr*addr,uint8_taddr_type,uint16_tmin_itvl,uint16_tmax_itvl,central設備發(fā)起對peripheral設備的BLE連接。建立時會產生GAP_EVT_SLAVE_CONNECT或。 被連接設備的BDADDR 被連接設備的BDADDR的地址類型,見@defgroupGAP_ADDR_TYPE_DEFINES。只能選擇如下取 允許的slavelatency structmac_addraddr=GAPCancelConnectionvoid停止正在由()。正在的動作被停止后,產生GAP_EVT_CONN_ENDGAPDisconnect 要被斷開連接的號。號從0開始一直到app_config,h定義的最大數-1GAPGetLocalble設備的localmac macbuffmacstructmac_addraddr;show_reg(&addr.addr[0],6,1);//printflocalmacGAPSetLocalble設備的localmac BDADDR。Mac6個字節(jié)structmac_addraddr=GAPGetConnection--要查詢的號。號從0開始一直到app_config,h定義的最True,該號處于狀GAPGetEncryption 要查詢的號。號從0開始一直到app_config,h定義的最大數-1 True,該號處于已加密狀GAPSetDeviceblegapprofiledevname buff GAPGetDevice buffbleGAPSetDeviceblegapprofiledevappearance GAPGetDevice GAPGetConnection GAPGetLink發(fā)起一次獲取對端設備rssi的動作。獲取的rssi值通過gap_event:GAP_EVT_LINK_RSSI返回 要查詢的號。號從0開始一直到app_config,h定義的最大數-1GAPEnableRSSIreportinreal GAPConnectionParametersUpdateGAP_EVT_LINK_PARAM_REJECT 要進行參數更新的號。號從0開始一直到app_config,h定義的最大數-1 最小的間隔取值。必須小于等于max_intv。取值大于6。單位:0.625us 最大的間隔取值。取值大于6。單位:0.625us 做為slave角色時,允許忽略握手的間隔個數。slave_latency*max_intv<=6400 GATTGATTPropertyBitmap//attattwrite_cmdattattwrite_cmdattattattwritewithno//attnotificationattindication//!<attread//GATTmessageeventstypetypedef{收到對端獲取gattattinfo//GATTmessageeventoperationdonetypedef{GATT操作的類型seevoidGATTMessage//GATTmessageeventdatatypedef{ GATTvoid //!<GATTGATTMessage//GATTmessageeventtypedef{GATTeventGattevent號 Gattevnetattributeidx typedef{ //!<Attribute //!<Attribute權限,see@GATT_PROP_BITMAPS_DEFINES //!<Attribute數據的最大長度。uint8_t //!<profileserviceattmax_size和p_datamax_size>0,p_dataNULLprofile時內部會分配內存,并拷貝p_data max_size==0p_dataNULLatt不能被讀?;蛘咦x該att會返回Nullmax_size==0p_dataNULLatt為GATT_PRIMARY_SERVICE_UUID1attidxmax_size填serviceuuidp_dataservice_uuid的buffer地址。p_data指向的buffer推薦定義為const類型,節(jié)省ramGATTService//Profileservicedefinetypedef{constgatt_attribute_t//!<指向profileserviceattprofileserviceattprofileserviceGATT//Profiledefinetypedef{const//!<//!<profileatt//!<profile//BLEreadtypedef{ //!< //!< //!<GATTEnable//BLEenablentftypedef{ //!< //!< //!<進行使能ntf操作對應的attidxtypedef{//!<Profile//!<profile//!<profileuint8_t//!<//!<profile//BLEindicationtypedef{//!<Profile//!<profile//!<profileuint8_t//!<//!<profileGATTGATTAdd 0xff,創(chuàng)建失敗profileprofile被分配的svc_idprofile個數由app_config.hUSER_PRF_NBGATTAdd創(chuàng)建profile。系統(tǒng)只能創(chuàng)建一個的服務。用戶需要把所有的attuuid均放在一個服務數組內p_ 0xff,創(chuàng)建失敗profile其他值,創(chuàng)建成功,返回值是profile被分配的_id號GATTChangeServiceprofileserviceatt的uuid uuidprofile attidx uuidbuffer uuidGATTChange在profile被創(chuàng)建后,更新某個att的uuid 要更改uuid的profile attidx uuidbuffer uuidGATTDiscoverPeerDeviceAll 要進行掃描的profile_id號 要進行掃描操作的號。號從0開始一直到app_config,h定義的最大數-{{case{externuint8_t}}}GATTDiscoverPeerDeviceServiceBy 要進行掃描的profile_id號 要進行掃描操作的號。號從0開始一直到app_config,h定義的最大數- serviceuuid serviceuuidperipheralwritewithresponsesvc peripheralwritewithoutresponsesvc {{case{{gatt__write_twrite;write.conidx=p_msg->conn_idx;write._id=_id;write.att_idx=1;write.p_data="\x1\x2\x3\x4\x5\x6\x7";write.data_len=7;}}}return}GATTEnableperipheraluuidnotificationsvc 要進行使能notification{{case{{gatt__enable_ntf_tntf_enable;ntf_enable.conidx=p_msg->conn_idx;ntf_enable._id=_id;ntf_enable.att_idx=0;}}}return}GATTRead的內容通過profilemsg進行上報。 {{case{{gatt__read_tread;read._id=_id;read.att_idx=0;}}}return} gatt_ntf_tntf_att;ntf_att.att_idx=ntf_att.conidx=p_msg->conn_idx;ntf_att.svc_id=svc_id;ntf_att.data_len=4;ntf_att.p_data=tmp; GATTMTUExchange GATTGetnegotiatedMTU GATTdealmessagefromHOST(condition:RTOS RTOSGATT消息的task,HOSTtasktaskMeshMeshMeshEventType//Mesheventtypeenum{MeshMesh//!<provisionerresetModelgroup//!<provisionerprovisionparameterrequest//!<provisioner收到authenticationdatarequest//!<provision//!<//!<收到mesh//!<provisionercompositiondatarequest//!<收到BLE廣播包的,通知應用層處理Meshnetworkinformationenum{NetworkkeyNetworkkeyApplicationkeyApplicationkeyModelpublicationModelsubscriptionlistModel/applicationkey//!<MeshSupportedenum{ RelayMESH_FEATURE_= //!<模式 Friendly LowPowerNode //!<支持GATTbearerMeshProvisionOutputOOB//Meshprovisionoutoobenum{=Bit[0]:=Bit[1]:=Bit[2]:=Bit[3]:=Bit[4]:Bit[5-15]:MeshProvisionInputOOB///InputOOBActionfieldenum{=Bit[0]:=Bit[1]:=Bit[2]:=Bit[3]:Bit[4-15]:MeshProvision//Meshprovisionenum{=(1<<//!<unprovisioneddevicebeaconURIHashMeshProvision///Stateoftheenum{ProvisioningProvisioningProvisioningMeshPublishMessage//Meshpublishmessagetypetypedef{ Elementindex ModelID Operationcode12or3operationcode) //!< //!<}MeshResponseMessage//Meshresponsemessagetypetypedef{ Appkey operationcode123operation }MeshReceiveMessage//Meshreceivemessagetypetypedef{ ModelID Operationcode12or3operationcode) //!< //!<}MeshModel//Meshmodeltypedef{ModelID//!<}MeshProvisionStateChangetypedef{ Provision狀態(tài)。(@seeenum }MeshModelMessage//Informreceptionofaspecificmeshtypedef{ Modelid elementindex AppKeyLocalidentifierRequiredforaresponse) == Operationcode1,2or3字節(jié)長度的operationcode) //!< //!<const //!<}NetworkKeyisNOT//Networkkeyinformationentrystructureifnetworkkeyisnotbeingtypedef{//!<Entry//!<//!<NetKey//!<Network}NetworkKeyis//Networkkeyinformationentrystructureifnetworkkeyisbeingtypedef{//!<Entry//!<//!<NetKey//!<Network//!<NewnetworkApplicationKeyisNOT//Applicationkeyinformationentrystructureifapplicationkeyisnotbeingtypedef{//!<Entry//!<//!<NetKey//!<AppKey//!<Network}ApplicationKeyistypedef{ //!<Entry //!< //!<NetKey //!<AppKey //!<Network //!<NewnetworkModelpublicationparameterforNOTvirtualpublicationtypedef{//!<Entry//!<//!<Element//!<Model//!<Publication//!<AppKey//!<//!<//!<Retransmission//!<FriendModelpublicationparameterforvirtualpublication//Modelpublicationparameterentrystructureifpublicationaddressisavirtualtypedef{//!<Entry//!<//!<Element//!<Model//!<Publication//!<AppKey//!<//!<//!<Retransmission//!<Friend//!<LabelModelsubscriptiontypedef{//!<Entry//!<//!<Element//!<Model//!<Keybindingtypedef{//!<Entry//!<//!<Element//!<Model//!<ListofAppKeytypedef{//!<Update//!<Entry//!<EntryMeshEvent//Mesheventtypedef{enum//!<{ Provision //!<狀態(tài)更新,包括當前狀態(tài)和key Meshmodel //!<Meshcompositiondatarequestpage。 //!<BLE廣播包內容。}}MeshMeshSetApplicationCallback 應用層的Mesh處理函數Meshmesh 應用層的GAP處理函數 meshlinkflashmeshlinknetworkkeyappkeybinding信息等。詳細參考4.3.1章節(jié)mesh_feature_t。MeshSetvoidMeshvoidmesh。這個必須在mesh_init()被調用之后執(zhí)行。MeshvoidmeshMeshModelBindmodelappkey。通常appkeyprovisioner分發(fā)并且綁定,某些情況下如果本地保存或者有預設值appkey列表的話,可以通過這個API可以從應用層選擇一個本地appkey進行綁定。 需要被綁定appkey的model。 model歸屬的element。 appkey在appkey列表中的序列號。MeshModelSubscribeGroup接收 model的ID MeshAddmeshmodel到協議棧中??梢杂糜谕瑫r添加多個modelmodel MeshPublish MeshSendResponse MeshProvisionParametersuint8_tstatic_oob,uint8_tout_oob_size,uint8_tin_oob_size,uint16_tout_oob_action,uint16_tin_oob_action,uint8_tnb_elt,uint8_tinfo);provisionrequest的回復。Provisionrequest來自provisioner oob信息。 Publickeyoob信息。 Staticoob信息。 Outoobsize。 Inoobsize。 Outoobaction。 Inoobaction。 MeshProvisionAuthenticationData MeshCompositionData compositiondatarequest MeshStoreInformationIntovoid2MeshClearInformationInvoidSecurityGAPBondManager 指定綁定設備服務信息的flash地址,地址必須是4096整數倍。 指定最大能支持的綁定設備的個數。取值1~app_config,h定義的最大數。 是否啟用該功能。True,啟用綁定管理功能。False,綁定管理功能。GAPGetBondDevice 綁定設備的序號。范圍:0~max_dev_num。max_dev_num見gap_bond_manager_init()函數輸 GAPBondManagerDeleteAllvoidGAPBondManagerDeleteSingleGAPSetSecurity等。 {.mitm=.ble_secure_conn=.pair_init_mode=.bond=.password=GAPSendingPairingpin 號。號從0開始一直到app_config,h定義的最 GAPPairing綁定操作。加密成功后,會產生GAP_SEC_EVT_MASTER_ENCRYPT。 要發(fā)起綁定的號。號從0開始一直到app_config,h定義的最大數-1GAPEncrypt操作。加密成功后,會產生GAP_SEC_EVT_MASTER_ENCRYPT。 要發(fā)起綁定的號。號從0開始一直到app_config,h定義的最大數-1GAPGetBondbool {{case{if}}}GAPSecurity {{case{}}}BLEHIDservicehid_service.c文件中。HIDserviceservice定義和一系列特征值定義。HIDservice的特,SDKHIDservicehid_profile_att_table數組的定HIDservice//HIDDevice//!<hid//!<hidhidserver. //!<hidinformation標志位:可喚 //!<hidinformation. //!<BootProtocolMode //!<ReportProtocolMode//reportid包含向對端寫的能力//HIDreportmaptypedef{ ReportIDreportmap ReportTypereportid的屬性。參見HIDservicevoidhidserverprofile 要進行操作的號。號從0開始一直到app_config,h定義的最大數- 要進行操作的hid_rpt_info數組的序號。hid_rpt_info數組在hid_gatt_add_service()創(chuàng)建時賦值。內部[2]:賦值為reportid3,對應為鍵盤輸入,[3]賦值為reportid3,對應為鍵盤輸出。 DIS8設備模組名字string定義5設備SystemID //!<設備SystemID //!<設備PNP_ID定義 //!<設備PNP_ID長度 //!<設備硬件版本號string定義 //!<設備硬件版本號string長度 //!<設備IEEE數據定義 //!<設備IEEE//Dissserverprofiledissserverdissserverdissserverdissserverdissserverdissserverdissserver包含Systemdissserver包含IEEEdissserver包含dissserverDISvoidBATTtypedef{ //!<Battserver //!<Battserverlevelcharact //!<Battserverlevelcharact //!<Battserverlevelcharact //!<BattserveridxBATTvoidbattserverprofile 要進行操作的號。號從0開始一直到app_config,h定義的最 OTAvoidOTA服務的profileOSAL 位于TaskOSTask 創(chuàng)建任務的id{{casecase1}return}void{user_task_id=}OSTask OSMessage id OSUserLoopEvent void{staticuint16_tcount=0;if(count>{count=0;}}OSUserLoopEventvoidClockClockOSTimer os_timer_tstaticvoidtest_time_fn(void{}void{os_timer_init(&test_timer,test_time_fn,NULL);os_timer_start(&test_timer,1000true);//1s的定時器。}OSTimer--定時時間,單位:ms。取值范圍,10~-OSTimer Memory位于MemoryOS void OSGetHeap 系統(tǒng)剩余的heap空間。OSShowMessagevoid內定義OSShowKernelMallocvoidheap使用量,剩余heap和所有heap大小。只有在app_config.hUSER_MEM_API_ENABLE之后才能使用。OSShowMemoryvoid內定義IO50K歐姆。IO的工作狀態(tài)和模式可選擇由大數字(進入低功耗后斷電)PMU(進入低功耗模式后繼續(xù)工作)控制。IO的控制邏輯和功能配置如下圖所示:IOIO IO的channel IO IO pinport4portPA,PB,PC,PD。參見enumsystem_port_t pinpinbit7~bit0分別代表每個portpin7~pin0bitpin//SelectPA0,PA1tobecontrolledbyIOpin腳配置給CPUCPUPMU控制的管腳,被CPU需要首先調用該函數將對應管腳給CPU控制。 pinport4portPA,PB,PC,PD。參見enumsystem_port_t pinpinbit7~bit0分別代表每個portpin7~pin0bitpin//SelectPA0,PA1tobecontrolledbyIOpinpmupinpmuPMU_IO_MUX pinport4portPA,PB,PC,PD。參見enumsystem_port_t pin腳對應的pinenumsystem_port_bit_t pin腳對應的pmu的功能。參見enumpmu_gpio_mux_t//configurePB0~PB2asPMU_IO pinpinbit7~bit0portpin7~pin0bitpin pin//configurePA0~PA1asIO pinport4portPA,PB,PC,PD。參見enumsystem_port_t pinpinbit7~bit0分別代表每個portpin7~pin0bitpin //configurePA0~PA1hasinnerIO設置PMU中對IO的狀態(tài)功能,該函數內部完成了選擇PMU控制、IOMUX選擇、設置為輸入模式。可以一次設置多個IO。當被監(jiān)測的IOpmugpiomonitor IOattribute((weak))voidvoid{uint32_tgpio_value=ool_read32(PMU_REG_GPIOA_V);ool_write32(PMU_REG_PORTA_LAST,gpio_value);uint32_ttmp=gpio_value&pmu_int_pin_setting;uint32_tpressed_key=tmp^pmu_int_pin_setting;co_printf("K:0x%08x\r\n",(pressed_key);}void{}位于GPIOIOx為a、b、c、 IOx為a、b、c、 IO,xa、b、c、 為 GPIOIO IO的channel GPIO pinpinbit7~bit0portpin7~pin0bitpin void{pmu_set_pin_to_PMU(GPIO_PORT_A,BIT(0)|BIT(1));pmu_set_pin_dir(GPIO_PORT_A,BIT(0)|BIT(1),GPIO_DIR_OUT);pmu_set_gpio_value(GPIO_PORT_A,BIT(0)|BIT(1),1);pmu_set_gpio_value(GPIO_PORT_A,BIT(0)|BIT(1),0);}GPIO pinport4portPA,PB,PC,PD。參見enumsystem_port_t pin腳對應的pinenumsystem_port_bit_tvoid{pmu_set_pin_to_PMU(GPIO_PORT_A,BIT(2)|BIT(3));pmu_set_pin_dir(GPIO_PORT_A,BIT(2)|BIT(3),false);}位于UART 配置的波特率,例如 fifo 等待的端口,可選UART0、 等待的端口,可選UART0、 UART UART UART UART特定個數字 UART0 UART0 UART1 UART1 SPI初始化SPI主從模式選擇,可取值SSP_MASTER_MODE、CS{if(op=={}{}} ,2,SPI SPI SPI 位于I2C 初始化對象,可選IIC_CHANNEL_0、 配置總線時鐘速率為 I2C I2C I2C一個字 I2C多個字 TimerTimer Timer Timerload timerTimer Timer 普通接初始化。調用任何函數前,需要首先調用該函數 設置的工作頻 設置的工作頻 低功耗模式接低功耗初始初始化pmu_。調用任何pmu_函數前,需要首先調用該函數void 對應的port口,參見enumsystem_port_t定義。 對應的pin腳號,參見enumsystem_port_bit_t定義。 pmu_set_lp_clk_src(enumpmu_lp_clk_src_tsrc低功耗啟。sleeppinPMU_IO_MUX--pinenumsystem_port_bit_t-是否循環(huán)發(fā)送標志位。True-會循環(huán)。False- -//configurePB0~PB2iscontrolledby//configurePB0~PB2asPMU//configurePB0~PB2asPMU_//setPMU_highcount/lowcountinone//startPB0~PB2PMU_//stopPB0~PB2PMU_低功耗停void。pin腳對應的pmu_功能選擇由PMU_IO_MUX表格決定 對應的port口,參見enumsystem_port_t定義。 對應的pin腳號,參見enumsystem_port_bit_t定義。ADC ADC的參數,詳見adc_cfg_tADC -callbackNULL,采樣結束后就會以回調方式返回采樣結果。如果callback為NULL,那么采樣結束后就以中斷模式返回,采樣結果需要調用adc_get_result()來獲取。回調方式只能用于fixedchannel采樣模式,不然該函數會返回失敗 -用于存放采樣結果的 - ADCvoidADC結 ADC的數據源,詳見adc_trans_source_t定 注意:WDT默認就支持低功耗模式。WDTpmu_watchdog。調用任何pmu_wdt WDTvoidwdt喂狗。Wdt超時時間之內沒有喂狗,則產生wdtWDTvoidwdt0WDTvoidWDTattribute((weak))voidwdt_isr_ram(unsignedint* 傳入的棧頂指針,用于debug產生watch{co_printf("PC=0x%.8X\r\n",hardfault_args[6])

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論