之前做了一個項目(LPC11C14 數(shù)據(jù)采集節(jié)點部分)的筆記,有時候在地鐵上還可以復習復習。
項目會議記錄
1、主控制器
FS210開發(fā)板做為主機,采用安卓4.0.4系統(tǒng)。
接入模塊:Zigbee模塊(數(shù)據(jù)交互)、Camera模塊(監(jiān)控)、GSM模塊(發(fā)送接受短信)
2、數(shù)據(jù)節(jié)點控制器
M0開發(fā)板,采用裸機或ucos操作系統(tǒng)
接入模塊:Zigbee模塊(數(shù)據(jù)交互)、風扇(降溫)、傳感器(采集數(shù)據(jù))、蜂鳴器(警報)
項目功能:
主控制器實現(xiàn)功能:
APK 應用
可設置報警閥值:當溫度值超過指定閥值,發(fā)送指令控制M0啟動風扇并通過GSM模塊發(fā)送短信
界面設計:
1、顯示至少兩個節(jié)點傳過來的數(shù)據(jù),如每個節(jié)點采集到的溫度、濕度等
2、Camera攝像頭視頻
3、需要設置界面,提供設置必要的參數(shù),如設置發(fā)送報警短信內(nèi)容,報警閥值等
(盡量美觀,人性化)
數(shù)據(jù)節(jié)點控制器功能:
1、采集數(shù)據(jù),通過Zigbee回傳給主控制器(通過各種傳感器獲取數(shù)據(jù))
2、監(jiān)聽主控制器的命令,控制風扇、蜂鳴器等
(主控制器與數(shù)據(jù)節(jié)點控制區(qū)通過Zibgec模塊進行數(shù)據(jù)交互)
需要做的事情:
主控制器
驅(qū)動層:
1、操作系統(tǒng)安裝、環(huán)境搭建(完成)
2、LCD 驅(qū)動
需知道LVDS代碼位置
3、GT811 觸摸屏移植 (完成)
4、Camera 驅(qū)動移植
5、GSM 驅(qū)動
系統(tǒng)層:
1、GT811 輸入子系統(tǒng)
2、Camera 主要是HAL層 需要熟悉 Camera 子系統(tǒng)(照相機子系統(tǒng))、V4L2
3、RILD庫(電話子系統(tǒng)) 對應GSM模塊
4、系統(tǒng)回調(diào) 對應Zigbee的數(shù)據(jù)回傳 需要編寫JNI去回調(diào)Java的方法刷UI
應用層:
界面自設計:
界面包含,顯示節(jié)點回傳的數(shù)據(jù),顯示攝像頭的視頻數(shù)據(jù),設置界面
數(shù)據(jù)節(jié)點控制器:
1、Zigbee 驅(qū)動
2、數(shù)據(jù)采集
三軸加速度傳感器
光敏傳感器
溫度傳感器
濕度傳感器
ADC電壓測量
3、降溫、警報
風扇驅(qū)動 (帶轉(zhuǎn)速回饋)
蜂鳴器(警報)
GT811觸摸屏 - APK - Camera
GSM
M0 - Zigbee == FS210 - Zigbee 聯(lián)調(diào)
-----------------------------------------------------------------------------------------------------------------uVision4 編譯問題
解決last line of file ends without a newline問題
warning: #1-D: last line of file ends without a newline
CCS3.3中,有時候會出現(xiàn)warning: #1-D: last line of file ends without a newline這種警告,只需在最后一行添加回車就可解決問題。
-----------------------------------------------------------------------------------------------------------------
環(huán)境搭建:
1、 安裝 Keil uVision4 2、CoLink 仿真器的程序安裝
參考 Android 物聯(lián)網(wǎng)\FS_11C14光盤\FS_11C14開發(fā)板用戶手冊 V1.02.pdf 第12頁
裸板代碼:啟動【KEIL uVision4】
建立工程:
1、【Project】-> 【New uVision Project】-> 選擇文件夾 -> 輸入工程名: Test
2、KEIL 自動彈出Select Device for Target 窗口,選擇CPU 【NXP (founded...)】->【LPC11C14x301】
彈出對話框詢問是否拷貝啟動代碼到工程中,選擇【是】,不然無法編譯。
3、新建立一個源文件,名字為main.c
燒錄配置:(不配置,無法燒錄程序到M0上)1、【Flash】->【Configure Flash Tools】
2、在Use Target Driver for Flash Programming 選擇 【CooCox Debugger】
3、點擊旁邊的按鈕【Settings】,在Additional Option 勾選【Run after Download】、【Verify Download】

調(diào)試配置:1、【Flash】->【Configure Flash Tools】,切換到Debug標簽
2、在Use 旁邊的下啦菜單選擇 CooCox Debugger 點擊旁邊的按鈕【Settings】
3、在Reset Options 下啦菜單選擇 HW RESET
4、在Adapter 下拉菜單選擇 ColinkEx

第一個裸板工程是操作LED,LPC11C14 開發(fā)板控制LED的原理圖


由此可見,LED燈是接在M0的 PIO3_0、PIO3_1
我們要操作該端口需要知道真實的物理地址,查看數(shù)據(jù)手冊。

得知 PIO的基址為 0x5000 0000,PIO3的基址為 0x5003 000
數(shù)據(jù)寄存器相對于PIO3_0偏移 0x3FFC
方向寄存器相對于PIO3_0偏移 0x8000
#include <stdio.h>
#define LPC_AHB_BASE (0x50000000UL) // PIO基址
#define LPC_GPIO3_BASE (LPC_AHB_BASE + 0x30000) // PIO3的基址
#define GPC3DIR (LPC_GPIO3_BASE + 0x8000) // PIO3 方向寄存器地址
#define GPC3DAT (LPC_GPIO3_BASE + 0x3FFC) // PIO3 數(shù)據(jù)寄存器地址
#define writel(val,reg) (*((volatile unsigned int *)reg)=val)
#define readl(reg) *((volatile unsigned int *)reg)
void sleep()
{
int i = 99;
int j = 0;
while(i--)
for(j=0; j<999; j++ );
}
int main(void)
{
writel(1, GPC3DIR); // 設置為輸出模式
while(1)
{
sleep(); // 延時
writel(1, GPC3DAT); // 寫入1 即輸出高電平
sleep(); // 延時
writel(0, GPC3DAT); // 寫入0 即輸出低電平 點亮LED等
}
}
在編譯的過程中,如果源文件和頭文件都不在工程根目錄,而另建立了文件夾,則需要在工程中指定尋找頭文件的首選路徑。

|