之前做了一个项目(LPC11C14 数据采集节点部分)的笔记,有时候在地铁上还可以复习复习。
项目会议记录
1、主控制器
FS210开发板做为主机,采用安卓4.0.4系统。
接入模块:Zigbee模块(数据交互)、Camera模块(监控)、GSM模块(发送接受短信)
2、数据节点控制器
M0开发板,采用裸机或ucos操作系统
接入模块:Zigbee模块(数据交互)、风扇(降温)、传感器(采集数据)、蜂鸣器(警报)
项目功能:
主控制器实现功能:
APK 应用
可设置报警阀值:当温度值超过指定阀值,发送指令控制M0启动风扇并通过GSM模块发送短信
界面设计:
1、显示至少两个节点传过来的数据,如每个节点采集到的温度、湿度等
2、Camera摄像头视频
3、需要设置界面,提供设置必要的参数,如设置发送报警短信内容,报警阀值等
(尽量美观,人性化)
数据节点控制器功能:
1、采集数据,通过Zigbee回传给主控制器(通过各种传感器获取数据)
2、监听主控制器的命令,控制风扇、蜂鸣器等
(主控制器与数据节点控制区通过Zibgec模块进行数据交互)
需要做的事情:
主控制器
驱动层:
1、操作系统安装、环境搭建(完成)
2、LCD 驱动
需知道LVDS代码位置
3、GT811 触摸屏移植 (完成)
4、Camera 驱动移植
5、GSM 驱动
系统层:
1、GT811 输入子系统
2、Camera 主要是HAL层 需要熟悉 Camera 子系统(照相机子系统)、V4L2
3、RILD库(电话子系统) 对应GSM模块
4、系统回调 对应Zigbee的数据回传 需要编写JNI去回调Java的方法刷UI
应用层:
界面自设计:
界面包含,显示节点回传的数据,显示摄像头的视频数据,设置界面
数据节点控制器:
1、Zigbee 驱动
2、数据采集
三轴加速度传感器
光敏传感器
温度传感器
湿度传感器
ADC电压测量
3、降温、警报
风扇驱动 (带转速回馈)
蜂鸣器(警报)
GT811触摸屏 - APK - Camera
GSM
M0 - Zigbee == FS210 - Zigbee 联调
-----------------------------------------------------------------------------------------------------------------uVision4 编译问题
解决last line of file ends without a newline问题
warning: #1-D: last line of file ends without a newline
CCS3.3中,有时候会出现warning: #1-D: last line of file ends without a newline这种警告,只需在最后一行添加回车就可解决问题。
-----------------------------------------------------------------------------------------------------------------
环境搭建:
1、 安装 Keil uVision4 2、CoLink 仿真器的程序安装
参考 Android 物联网\FS_11C14光盘\FS_11C14开发板用户手册 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】
调试配置:1、【Flash】->【Configure Flash Tools】,切换到Debug标签
2、在Use 旁边的下啦菜单选择 CooCox Debugger 点击旁边的按钮【Settings】
3、在Reset Options 下啦菜单选择 HW RESET
4、在Adapter 下拉菜单选择 ColinkEx
第一个裸板工程是操作LED,LPC11C14 开发板控制LED的原理图
由此可见,LED灯是接在M0的 PIO3_0、PIO3_1
我们要操作该端口需要知道真实的物理地址,查看数据手册。
得知 PIO的基址为 0x5000 0000,PIO3的基址为 0x5003 000
数据寄存器相对于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 数据寄存器地址
#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等
}
}
在编译的过程中,如果源文件和头文件都不在工程根目录,而另建立了文件夹,则需要在工程中指定寻找头文件的首选路径。
|