<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> HAL提供了完善的串口驅動API,其定義在hal\_uart.h和hal\_uart.c中,如下圖所示。 ![](https://img.kancloud.cn/9c/0d/9c0d94a441fdbf8860f773089a96b309_322x784.png =200x) <br/> ## **串口配置** 使用串口前,需要首先配置一下串口。為此,筆者編寫了一個串口配置函數zclSampleSw\_Init,只需要在應用層初始化函數zclSampleSw\_Init中調用一下即可完成串口配置,如下圖所示。 ![](https://img.kancloud.cn/f1/cb/f1cb8db4ef33ec0395f215b14acc8ba4_638x186.png =600x) ### 打開配套的工程代碼,在zcl\_samplesw.c文件的末尾可以找到zclSampleSw\_InitUart函數的定義,代碼如下: ### ``` 1.static?void?zclSampleSw_InitUart(void)???? 2.{???? 3.??halUARTCfg_t?uartConfig;???? 4.??/*?UART?Configuration?*/?? 5.??uartConfig.configured??????????=?TRUE;//允許配置?? 6.??uartConfig.baudRate????????????=?HAL_UART_BR_115200;//波特率?? 7.??uartConfig.flowControl?????????=?FALSE;//關閉硬件流控?? 8.??uartConfig.flowControlThreshold=?0;//和流控相關?? 9.??uartConfig.rx.maxBufSize???????=?ZCLSAMPLESW_UART_BUF_LEN;//接收緩沖區大小 10.??uartConfig.tx.maxBufSize??????=?0;//發送緩沖區大小 11.??uartConfig.idleTimeout????????=?6;//默認超時時間?? 12.??uartConfig.intEnable??????????=?TRUE;//?使能中斷?? 13.??uartConfig.callBackFunc???????=?zclSampleSw_UartCB;//設置回調函數 14.??/*?Start?UART?*/???? 15.??HalUARTOpen(HAL_UART_PORT_0,?&uartConfig);//?根據配置打開串口0?? 16.} ``` ### 下面詳細講解一下上述代碼。 ### * uartConfig.rx.maxBufSize?=?ZCLSAMPLESW\_UART\_BUF\_LEN的作用是設置串口0接收緩沖區的大小,宏ZCLSAMPLESW\_UART\_BUF\_LEN是由筆者在zcl_samplesw.c文件中定義的,定義如下: ``` #define ZCLSAMPLESW_UART_BUF_LEN 128 ``` ### * uartConfig.tx.maxBufSize =?0的作用是配置發送緩沖區的大小,我們不需要發送緩沖區,所以設置長度為0。 ### * HalUARTOpen(HAL\_UART\_PORT\_0,?&uartConfig)的作用是根據配置打開串口0,HalUARTOpen是HAL提供的API。 ### * uartConfig.callBackFunc =?zclSampleSw\_UartCB的作用是設置一個回調函數。 <br/> ## **接收串口數據** 當串口接收到數據時,就會調用回調函數zclSampleSw\_UartCB。開發者可以在此函數中接收并處理串口數據。在zcl\_samplesw.c文件的末尾可以找到回調函數zclSampleSw_UartCB的定義,代碼如下: ### ``` /** * @fn zclSampleSw_UartCB * * @brief Uart Callback */ static void zclSampleSw_UartCB(uint8 port, uint8 event) { //獲取當前串口接收緩沖區有多少字節的數據 uint8 rxLen = Hal_UART_RxBufLen(HAL_UART_PORT_0); if(rxLen != 0)//如果字節數數量不等于0 { //從串口緩沖區中讀取數據 HalUARTRead(HAL_UART_PORT_0, zclSampleSw_UartBuf, rxLen); //通過串口發送數據,例如把數據發送到串口助手 HalUARTWrite(HAL_UART_PORT_0, zclSampleSw_UartBuf, rxLen); } } ``` ### 上述代碼調用了專門用于操作串口的API,說明如下: ### ``` Hal_UART_RxBufLen :查看當前串口接收緩沖區有多少字節的數據。 HalUARTRead :從串口緩沖區中讀取數據。 HalUARTWrite :通過串口發送數據,比如發送到串口助手。 ``` <br/> ## **啟用串口的宏定義** 在使用串口功能時,需要啟用串口對應的宏定義HAL\_UART。在下圖中的Defined sybols中輸入以下代碼。 ``` HAL_UART=TRUE INT_HEAP_LEN=2048 ``` ![](https://img.kancloud.cn/9b/44/9b442dbffb7e436d90542b6b4fa819eb_830x792.png =600x) ### #### **INT\_HEAP\_LEN** HEAP是堆的意思,堆是一塊內存空間。當程序動態地申請了一小塊內存空間后,這一小塊內存空間就來自于堆。工程默認的堆大小是3071個字節。定義宏INT_HEAP_LEN=2048后,堆的大小減少到2048個字節。之所以減少堆的大小,是因為串口通信功能會使用較多的棧內存空間,棧內存空間可能會不夠用。 <br/> ## **調試仿真** 可以按照以下步驟進行調試仿真: * 編譯工程后,使用仿真下載器把程序燒錄到開發板中 * 斷開仿真下載器,使用Micro USB線把開發板連接到電腦 * 打開串口助手,通過串口助手發送字符串到開發板中 * 開發板接收到該字符串后會把此字符串發回到串口助手,如下圖所示。 ![](https://img.kancloud.cn/c7/a0/c7a039ed8a79c5d91b7084171c0c4d36_830x654.png =500x) <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看