日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZigBee TI ZStack CC2530 3.18 串口01-发送

發布時間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZigBee TI ZStack CC2530 3.18 串口01-发送 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(配套源碼、軟件、開發板等資源,可移步博客同名QQ群/TB店鋪:拿破侖940911


這一節,基于《ZigBee CC2530 Z-Stack 06 創建基于Z-Stack的全新工程》一節中創建的全新工程ProjectApp進行進一步實驗,實現調用Z-Stack中現成的串口驅動函數實現串口發送功能,具體效果為系統一上電CC2530芯片即通過串口0打印出“hello world !\r\n”。

CC2530芯片的所有片上外設中,總共有2個串口,分別稱為串口0和串口1。在實際項目開發當中,一般我們會將串口0用作“調試串口”,用于打印一些提示信息;而將串口1用于與外圍硬件設備對接,實現實際的項目需求。本節中我們將通過串口0實現字符串打印功能。

ProjectApp創建成功后,僅是通過編譯測試了工程創建是否成功,實際上并沒有做任何實質性的更改。因此我們實際現在才算是真正基于Z-Stack進行開發!為了使用Z-Stack中自帶的串口驅動程序,實現串口發送功能,具體操作步驟如下:

1、協議棧中MT層相關的代碼全都是基于CC2530的串口寫的,所以我們在寫串口程序時,最好的辦法就是參考MT層對應代碼來寫我們自己的串口程序;具體是參考MT_UART.c中的MT_UartInit( )函數代碼和MT_UART.h中相關的宏定義,來實現我們的uart0.c和uart0.h兩個文件,兩個文件具體代碼如下:

文件uart0.c中代碼:

#include "uart0.h" #include "hal_uart.h"void Uart0_Init(uint8 baudRate) {halUARTCfg_t uartConfig;uartConfig.configured = TRUE;uartConfig.baudRate = baudRate;uartConfig.flowControl = FALSE;uartConfig.flowControlThreshold = UART0_THRESHOLD;uartConfig.rx.maxBufSize = UART0_RX_BUFF_MAX;uartConfig.tx.maxBufSize = UART0_TX_BUFF_MAX;uartConfig.idleTimeout = UART0_IDLE_TIMEOUT;uartConfig.intEnable = TRUE;uartConfig.callBackFunc = NULL;HalUARTOpen (HAL_UART_PORT_0, &uartConfig); }

文件uart0.h中代碼:

#ifndef UART0_H #define UART0_H #ifdef __cplusplus extern "C" { #endif#include "hal_types.h"#define UART0_RX_BUFF_MAX 60 #define UART0_TX_BUFF_MAX 60 #define UART0_THRESHOLD (UART0_RX_BUFF_MAX / 2) #define UART0_IDLE_TIMEOUT 6void Uart0_Init(uint8 baudRate);#ifdef __cplusplus } #endif #endif /* UART0_H */ 其中:

uartConfig.callBackFunc = NULL;關于這句代碼,由于本節暫不實現串口接收處理數據的功能,所以此處的串口回調函數為NULL(空)!

關于具體為何uart0.c和uart0.h兩個文件的格式如此,是嵌入式C語言模塊化編程的基礎,參考協議棧中類似的文件依葫蘆畫瓢即可,此處就不再贅述~

2、往工程中APP分組下添加我們參考MT_UART.c和MT_UART.h寫成的uart0.c和uart0.h兩個文件:將uart0.c和uart0.h兩個文件放到C:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\ProjectApp\Source目錄下,然后按照下圖所示將兩個文件添加到APP分組下即可;


3、由于協議棧中MT的相關代碼全都是基于串口寫的,而我們又是參考MT_UART相關代碼寫的,所以需要將協議棧中原本與MT層相關的代碼全部注釋掉。具體操作如下圖所示:

右擊工程名,進入“Options”選項后,找到如下圖中所示的“Defined symbols”,其中總共有5個預編譯選項,依次為:ZTOOL_P1、MT_TASK、MT_SYS_FUNC、MT_ZDO_FUNC、LCD_SUPPORTED=DEBUG;

前4個均與MT層相關,所以均需注釋掉,在需要注釋的預編譯選項前面加上“x”即可;

第5個預編譯選項是與LCD液晶有關的,由于我們一般不使用TI原裝的LCD,所以一般也會將這個注釋掉,則工程中相關的代碼都不會被編譯!

4、此外,協議棧中還有一個名為hal_board_cfg.h的文件,里面定義了與協議棧相關的大多數硬件的使能宏定義,這邊我們暫時只關心HAL_LCD和HAL_UART,我們想屏蔽LCD相關的所有代碼,并使能與UART相關的底層驅動程序,文件所處位置及需修改位置如下圖所示,需要將HAL_LCD和HAL_UART的宏定義分別修改為FALSE和TRUE;


5、至此,基于Z-Stack協議棧的串口驅動程序的發送部分就基本全部完成,就差最后來檢驗一下串口是否能夠正常發送了!

雙擊打開ProjectApp.c文件,在ProjectApp_Init( )函數中最后的位置加入如下兩行代碼:

Uart0_Init(HAL_UART_BR_115200);HalUARTWrite(HAL_UART_PORT_0,"hello world !\r\n",sizeof("hello world !\r\n")-1);

我們既然在ProjectApp.c文件中調用了uart0.c文件中的函數,則一定要在ProjectApp.c中加入對應的頭文件——uart0.h!

具體實現代碼如下:

#include "uart0.h"最后點擊“編譯”圖標,完成對整個工程的編譯,順利的話,肯定是 0 error(s), 0 warning(s)!

點擊IAR界面上方“Download and Deubug”圖標,將程序下載到CC2530芯片中(下載之前,請保證下載器、串口線和電腦三者已經連接正確!),如下圖所示:

并自動進入調試界面,如下圖所示:


連上串口調試助手,選擇正確的串口配置后打開串口,點擊上圖中所示“全速運行”圖標后,就可以看到串口調試助手收到了來自CC2530串口0打印的數據,正好15個字節!如下圖所示:



(配套源碼、軟件、開發板等資源,可移步博客同名QQ群/TB店鋪:拿破侖940911

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的ZigBee TI ZStack CC2530 3.18 串口01-发送的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。