新換了工作,需要熟悉新公司的產品開發項目,更新博客就懈怠了,不過環境的不同,也讓我對嵌入式開發有了更深刻的理解。在原公司我主要負責在STM32F207芯片平台上, 利用UCOS+LWIP進行嵌入式服務器開發,工作涉及底層硬件,RTOS,協議棧,上層應用及前端網頁,從產品的角度,是完整的實現了單個項目。不過到新公司后,連續調試了STM32F103, STM32L0(低功耗), TI CC2540三種CPU, 並在上面實現了相應的功能需求后,我對單片機這一塊也有了更深刻的認識,這里就記錄我如何上手CC2540芯片,並在其上實現引腳檢測並通過485接口傳送給上位機的過程。
前提:兩年多的STM32+MDK的開發經驗(使用精通), 485調試和實現經驗,沒用過CC-DEBUG, IAR, 沒了解過TI芯片
開發流程: 第一天(下載安裝IAR,下載CC2540參考手冊, 安裝CC-DEBUG, 熟悉IAR環境, 編譯點亮LED燈), 第二天(完成RS485的實現,制定協議,並調試成功)
開發經歷:
1. 下載安裝IAR
參考網上實現教程,除了最初版本使用太早,無法打開例程外,后來選擇9.3之后,官方例程打開成功
2. 下載CC2540參考手冊
去TI官網搜索CC2540,找到CC253x/4x手冊
3. 安裝CC-DEBUG
(1) 安裝CC-DEBUG驅動
將CC-DEBUG插入USB接口,此時設備管理器里顯示為警示符號,下載CC-DEBUG驅動(window7測試通過),解壓,並通過設備管理器安裝,如下圖即可。
(2)連接CC-DEBUG和CPU
工程板上的調試接口原理圖如下:
下圖為CC-DEBUG連接方式:
3.3v是CC-DEBUG給工程板供電用的,如果工程板本身已經有獨立供電,此時不能接(接可能會損害仿真器), 而Vdd一般來說要連接供電板電源正極(將CC-DEBGU的2, 9腳短接也可), 其它DC, DD, NRST, GND按照對應連接即可,如果工作正常,此時CC-DEBUG的紅燈變為綠燈,本次連接通過
4. 熟悉IAR環境
(1) 安裝輔助下載工具
調試器工作成功后,參考例程,實現IAR和CC-DEBUG的聯合調試,安裝后就是成功的,不過IAR的下載必須進入調試模式,在點X才能退出,這令人很不爽,我就找到了一款官方的下載器 SmartRF 閃存編程器, 界面如下:
,按照上面的配置就可以實現快速下載。
2. IAR的界面配置
IAR的默認編譯環境顯示和MDK有很大不同,看着很不舒服,這里講下主要的修改樣式:
Tools -> Editor -> show line numers 顯示行號
Tools -> Editor -> Colors and Fonts 這里面可以修改樣式,我來解釋常用的幾種特性:
C Keyword: C關鍵字, 像if, else等
Strings: 字符串, 如"hello"
char: 字符, 如'h'
Preprocessor: 預處理器,類似#include, #error這些
Number: 數字
Comment: 注釋
修改顏色,字體,不過IAR的Type Styles如果選擇Italic不適合顯示,所以建議全部選擇為Normal或者Bold
重要快捷鍵:
Ctrl + K 注釋
Ctrl + shift + K 取消注釋
Ctrl + shift + F 全局查找
F7 編譯
F9設置斷點
至於全局替換,我沒找到,唯一不爽的地方,還有個細節,通過View > BreakPoints, 可以查詢到當前以使用的所有端點,即可自行去除。
4. 編譯點亮LED燈,及項目的實現
因為本身沒用過TI的芯片和IAR, 所以參考官方例程,編寫了點亮LED燈的測試代碼。
#include "hal_types.h" #include "hal_timer.h" #include <stdlib.h> #include <ioCC2540.h> #define LED P1_0 void DelayMS(uint16 msec); int main(void) { /* Initialize hardware */ HAL_BOARD_INIT(); P1DIR |= 0x01; //設置P1.0為輸出模式 while(1) { LED = !LED; DelayMS(200); } } void DelayMS(uint16 msec) { uint16 i; volatile uint16 j; for (i=0; i<msec; i++) { for (j=0; j<650; j++) {} } }
不過從編寫成功,到下載還是,調試並運行還遇到很多坑,后續有時間補上,不過熟悉了基礎部分后,在這基礎上添加RS485的實現就很簡單了。