项目实训学了很多东西,因为内容比较杂,以后未必用得到,所以不想整理了,随便记录一下
IAR开发环境安装
仿真器驱动
USB - 串口驱动
ZigBee协议栈 v2.51
IO 端口
PXSEL 功能寄存器
PXDIR 方向寄存器 0输入1输出
PXINP 端口模式寄存器 (0上拉1下拉,三态)
上拉高电平(470-10k),下拉至地(1k-100k)
中断优先级
低优先级不能中断高优先级的
中断不能中断自己
EA 管理所有中断使能,有中断为1
中断标志(寻找中断标志),自动置1,结束需要清0。硬件清0,建议软件清0
PICTL:中断触发方式(0上升沿或者1下降沿触发)
中断函数编写
中断向量,中断的入口
中断服务程序
#pragma vector = P1INT_VECTOR
__interrupt void P1()
{
/*****************
//代码
*****************/
}
Task
楼道灯的控制,采用光敏传感器的数字端,根据光的强弱,打开或关闭LED1
https://www.cnblogs.com/ALittleBee/p/7072927.html
振荡器和时钟
内部16M时钟源,外部32
CLKCONCMD //时钟设置寄存器,只能写不能读
CLKCONSTA // 时钟状态寄存器,只能读不能写
void Set_32MHZ(void)
{
CLKCONCMD &= ~0x40; //系统时钟源为32MHZ晶振;
while(CLKCONSTA & 0x40); //等待时钟稳定;
CLKCONCMD &= ~0x47; //系统主时钟频率:32MHZ;
}
串口
1 两个串口
2 每个串口两个位置
3 流控制
4 波特率
起始位 8位数据 校验位 停止位(普遍10位)
RS232通讯:遵循RS232电平
RS232H:-5V~ -15V
RS232L:+5V-- +15V
-5V~ +5V RS232电平的盲区
2:接受 3:发送 5GND
RTS RI
U0DBUF = 0x33
TEMP = U0DBUF
起始位低电平,结束位高电平
串口相关寄存器
UxCSR: USARTx的控制和状态寄存器。
UxUCR: USARTx的UART控制寄存器。
UxGCR: USARTx的通用控制寄存器。
UxDBUF: USARTx的接收/发送数据缓冲寄存器。
UxBAUD: USARTx的波特率控制寄存器。
串口初始化步骤
1:设置时钟频率(CLKCONCMD)
2、设置串口位置(PERCFG)
3、设置串口工作方式(U0CSR)
4、设置波特率(U0GCR、U0BUAD)
5、清除发送、接收中断标志(UTX0IF、URX0IF)
6、串行中断使能(URX0IE)
7、总的中断使能(EA)
UxDBUF: USARTx的接收/发送数据缓冲寄存器。
串口发送字符函数
串口接收字符(中断实现)
Task
串口调试助手,发送命令打开LED1,并向计算机发送LED1的状态
CC2530 AD转换
1、有12个外部输入的AD 3个内部输入
2、P0口AD输入P0.0-P0.7 单输入
3、分辨率7位8、10、12
先读高8位,读低8位 后会清零
分辨率----实际分辨率
最高位为符号位(2的补码形式)
Task
利用AD采集光的强度,控制LED灯的强弱
利用温湿度传感器DHT11采集温度,显示在LCD(5110LCD)上,通过串口发送到计算机上
https://blog.csdn.net/qq_21990661/article/details/81043121
Task
利用气体传感器,采集甲烷等可燃气体的浓度,并设定门限利用蜂鸣器报警
并把采集的数据在LCD上显示和发送到计算机上
蜂鸣器
电压驱动–J6
ZIGBEE 介绍
ZSTACK 协议栈介绍
协议栈下串口使用
协议栈的才串口使用
绑定 GenericApp
数据收发led关闭 SampleApp
温度收发led打开 SimpleApp
APP
HAL
MAC 不能修改
MT 通讯
NWK无线网络
ZMAIN 主函数入口
事件任务调度
修改信道,避免干扰
终端----路由—协调器
Linux 常用命令
hostname 查看主机名
ifconfig IP信息
netstat -ntlp 网络端口
cat /proc/cpuinfo查看CPU信息
ps aux 进程信息
ps aux |grep xxx 过滤
kill -9 进程ID 结束进程
ls -al 详细目录
(cdl)rwx r-x r-x 文件相关权限
touch filename
file 查看编译好的文件
file a.out
rm 删除文件
rm -rf 删除目录
find ./ -name file 查找文件
find ./ -name *.c
安装软件
sudo apt-get install git
下载源码编译安装(以nginx为例)
很多时候要使用sudo
下载源码
解压/指定路径
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0/
configure
–prefix=/usr/local/nginx
进行配置,执行配置文件,编译
生成makefile
make
make install
设置环境变量 或者 设置软连接
sudo gedit /etc/profile
https://blog.csdn.net/u013564742/article/details/81746335
env 查看是否生效
配置软连接
配置软连接后,以后启动nginx直接输入nginx即可。配置方法是直接输入命令行:
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
reboot 重启系统
su 切换用户
启动 nginx
停止,发送信号 nginx -s stop
Makefile
在Windows下开发程序有很好的开发工具VS,在Linux下常用Qt
Makefile 定义整个工程的编译规则,实现自动化编译。
make命令,解释Makefile中的指令
编译过程:编写代码–预处理(引入头文件)–生成目标文件
Makefile的规则:
target…:prerequisite(条件)…
command
交叉编译器(Linux Ubuntu编译程序–在开发板上运行)
下载安装包
解压/解压路径(设置路径 -C 要大写)
sudo tar jxvf XXXXXX -C /usr/local/
配置环境变量
sudo gedit /etc/profile
将你的解解压好的目录添加进去
export PATH="$PATH:/usr/local/arm-2009q3/bin"
测试一下看成不成,或者直接使用env命令 查看环境变量有没有配好
env |grep PATH
如果没有的话,使用source让它立刻生效
source /etc/profile
现在应该就可以
在用户目录下创建一个.c 文件,可也先用gcc 编译一哈。
比如 gcc hello.c -o hello
现在使用arm 编译一哈,就成了
arm-none-linux-gnueabi-gcc hello.c -o arm_hello
然后就生成了两个版本的执行程序了。