【引言】
本系列教程就有關CC2530單片機應用入門基礎的實訓案例進行分析,主要包括以下6部分的內容:
【1】CC2530微控制器開發入門基礎。
【2】通用I/O端口的輸入和輸出。
【3】外部中斷初步應用。
【4】定時/計數器的定時應用。
【5】串行通信接口應用。
【6】A/D轉換器數據采集應用。
---------------------------------------------------------------------------------------------------------------------
第1課 CC2530微控制器開發入門基礎
小蜜蜂筆記網 / 廣東職業技術學院 歐浩源
【視頻教程】:CC2530概述與開發環境的搭建
【視頻教程】:IAR環境下CC2530的開發流程
一、什么是單片機?
單片機:Micro controller,MCU,微控制器,是一種集成電路芯片,它通過超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、輸入輸出I/O端口、中斷控制系統、定時/計數器和通信接口等多種功能部件集成到一塊硅片上,構成了一個體積小但功能完善的微型計算機系統,簡單的說,單片機就是一個將微型計算機系統制作到里面的集成電路芯片。
不管復雜還是簡單,微控制器的基本結構:內核+外設。內核通過寄存器控制外設;外設通過中斷系統通知內核;內核與外設之間通過總線傳輸數據、地址及控制信息。所以,嵌入式程序設計師跟底層硬件打交道的基本套路為:讀寫寄存器、處理中斷源、訪問內部總線。
單片機的程序開發與程序運行分別在兩套系統運行:在桌面電腦的集成開發環境上進行程序開發;在嵌入式微處理器系統中運行程序。
二、CC2530微控制器與IAR開發環境
CC2530微控制器內部使用業界標准的增強型8051內核,結合了領先的RF收發器,是用於2.4GHz IEEE802.15.4的Zigbee應用的一個片上系統(SOC)解決方案。要進行CC2530的應用開發,就先要安裝IAR相關的開發環境。IAR根據支持的微處理器種類不同分為許多不同的版本,由於CC2530使用的是增強型8051內核,所以這里應該選用的版本是IAR Embedded Workbench for 8051。
整個CC2530開發相關的環境包括:
1.安裝集成開發環境:IAR-EW8051-8101。
2.安裝仿真器“SmartRF4EB”的驅動程序。
3.安裝代碼燒寫工具:Setup_SmartRF_Programmer_1.10.2。
4.安裝TI的Zigbee協議棧:ZStack-CC2530-2.5.1a。
三、CC2530項目開發流程入門
【1】創建工作區
在菜單欄中,File->New->Workspace。
【2】新建IAR工程
在菜單欄中,Project->Create New Project...
<1>在這里你只能新建8051內核的工程。
<2>通過“Empty project”來新建一個空白工程。
<3>要給新建工程命名和指定存儲路徑。
<4>創建完畢,工程就會出現在左邊工作區中。
【3】配置工程選項
如果你只做在線仿真調試,只需要配置兩個地方。
<1>配置芯片信息:General Options->Target->Device information
<2>配置仿真設備:Debugger->Setup->Driver
【4】添加代碼文件
<1>在菜單欄中,File->New->File,創建一個空白文件。
<2>通過執行File->Save命令將文件保存到指定位置。
<3>在“Workspace”中的工程上鼠標右擊,擇Add->Add File...命令將代碼文件添加到工程中。
【5】在代碼文件中編寫代碼
<跑馬燈代碼請參照課件或其他技術筆記>
【6】編譯代碼
在菜單欄中,Project->Complie
或者點擊工具欄中的工具按鈕。
注:沒有語法錯誤的程序才能通過編譯。
【7】仿真調試
<1>將仿真器SmartRF4EB與目標板進行正確的連接:排線上三角箭頭與目標板的白色三角箭頭對齊。
<2>在菜單欄中,Project->Download and Debug,或者點擊工具欄中“綠色三角符”按鈕。
<3>進入仿真調試環境。
至此,大功告成,可以隨意調試了。
【附件】:LED燈閃爍的源代碼。
#include "ioCC2530.h" #define D4 P1_1 void Delay(unsigned int t) { while(t--); } void Init_Port() { P1SEL &= ~0x02; P1DIR |= 0x02; } void main() { Init_Port(); while(1) { D4 = 1; Delay(60000); D4 = 0; Delay(60000); } }