1、2.1 基于ARM核的LPC2106介绍51单片机内部结构 ARM7TDMI-S 处理器;128k 字节片内Flash 程序存储器,具有ISP 和IAP 功能。Flash 编程时间:1ms 可 编程512 字节,扇区擦除或整片擦除只需400ms。64/32/16K 字节静态RAM (LPC2106/2105/2104)。极小封装:TQFP48。向量中断控制器控制中断;双UART,其中一个带有完全的调制解调器接口。具有I 2C串行接口和 SPI 串行接口;两个定时器,分别具有4 路捕获/比较通道;多达6 路输出的PWM 单元;实时时钟;看门狗定时器;通用通用I/O 口口;CPU 操作频率可达60
2、MHz;双电源:CPU 操作电压范围:1.65V1.95V(1.8V8.3%),I/O 电压范围:3.0V3.6V(3.3V10%);两个低功耗模式:空闲和掉电;片内PLL 允许CPU 以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。2.2 LPC2106管脚介绍2.3 LPC2106的I/O端口设置 寄存器寄存器PINSEL0和和PINSEL1的设置。的设置。LPC2106的I/O口全都是3功能服用端口,也就是说即可用作普通输入输出端口,又用作第2或第3种功能。设计人员可根据需要设置两个32位特殊功能寄存器PINSEL0和PINSEL1。PINSEL0对应引脚P0.0P0.15,
3、PINSEL1对应引脚P0.16P0.31。都是寄存器中用两位来完成1根引脚的功能设置。(2)GPIO方向寄存器设置方向寄存器设置当管脚配置为GPIO 模式时,可使用该寄存器控制管脚的方向。任意管脚的方向位的设置必须与管脚功能一致。输出置输出置1寄存器寄存器IOSET当管脚配置为GPIO 输出模式时,可使用该寄存器从管脚输出高电平。写入1 使对应管脚输出高电平。写入0 无效。如果一个管脚被配置为输入或第二功能,写IOSET 无效。输出清零寄存器输出清零寄存器IOCLR当管脚配置为GPIO 输出模式时,可使用该寄存器从管脚输出低电平。写入1 使对应管脚输出低电平。写入0 无效。如果一个管脚被配置
4、为输入或第二功能,写IOCLR 无效。GPIO引脚值寄存器引脚值寄存器IOPIN该寄存器提供GPIO引脚的值。反映了外部环境对引脚的影响。2.4 流水灯程序示例#include config.h#define LED1CON 0 x000003ff /*P0.0p0.9输出输出*/void delay(uint32 n)while(n-);int main(void)uint32 i;while(1)PINSEL0=0 x00000000;PINSEL1=0 x00000000;IODIR=0 x000003ff;for(i=0;i11;i+)IOCLR=0 x000003ff;IOSET=1
5、i;delay(5000);delay(5000);return(0);CODE32AREA vectors,CODE,READONLY ENTRY;interrupt vectors;中断向量表Reset LDR PC,ResetAddr LDR PC,UndefinedAddr LDR PC,SWI_Addr LDR PC,PrefetchAddr LDR PC,DataAbortAddr DCD 0 xb9205f80 LDR PC,PC,#-0 xff0 LDR PC,FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedS
6、WI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_HandlerResetInit BL InitStack BL TargetResetInit B _main 一、基础知识1.1 1.1 操作系统的功能和作用操作系统的功能和作用计算机硬件系统计算机硬件系统操作系统(操作系统(WINDOWS、LUNIX等)等)应用软件(如应用软件(如WORD、PHOTOSHOP等)等)系统软件(如编译程序
7、、系统软件(如编译程序、汇编程序、数据库等)汇编程序、数据库等)图1.1 操作系统在计算机中的地位 操作系统层通常是最靠近硬件层的软件层,主要完成计算机硬件资源的调度和分配、信息的储存和保护以及并发活动的协调和控制。从应用程序员的角度看,操作系统是计算机硬件系统与应用程序的接口,看到和使用的只是一些由操作系统提供的函数。1.2 1.2 嵌入式操作系统的特点嵌入式操作系统的特点嵌入式硬件系统嵌入式硬件系统嵌入式操作系统(嵌入式操作系统(UCOS-、WINCEUCLUNIX等)等)嵌入式系统的应用软件嵌入式系统的应用软件图1.2 嵌入式操作系统在嵌入式系统中的地位 微型化。保证应用的前提下,规模越
8、小越好。可裁剪。嵌入式操作系统提供的各个功能模块可以让用户根据需要选择。易移植。应在不做大量修改的情况下稳定运行在不同的平台。实时性可靠性好。n1、uC/OS-II内核具有可抢占的实时多任务调度实时多任务调度功能n2、提供了许多系统服务,如信号量、消息队列、邮箱、内存管理、时间函数等n3、这些功能可以根据不同的需求进行裁减。n4、可从ucos-ii网站上获得全部源码及其在各种体系结构平台上的移植范例。1.3 uC/OS-II的特点n全世界有数百种产品在应用:n医疗器械n移动电话n路由器n工业控制nGPS 导航系统n智能仪器n更多 二、实际应用(实时温度的采集控制)温度传感器 A/D转换(ADC
9、0808)LPC2106数码管显示外界温度电压信号数字信号2.1 2.1 实时温度采集的硬件框图实时温度采集的硬件框图启动按钮2.2 2.2 实时温度采集的硬件接线图实时温度采集的硬件接线图1、任务、任务1启动按钮(按键识别)启动按钮(按键识别)IO_Init();while(1)while(IOPIN&key)!=0);IO_Init();while(IOPIN&key)=0);IOCLR=0 x0000ffFF;任务切换任务切换转换结束输出信转换结束输出信号号(转换结束标转换结束标志志),高电平有效,高电平有效1KHz1KHz时钟信号时钟信号CLOCKCLOCKPOTPOTADC0808A
10、DC0808OE:输出允许信号,高电平有:输出允许信号,高电平有效,即效,即OE=1时,将输出寄存时,将输出寄存器中的数据放到数据总线上。器中的数据放到数据总线上。ALEALE:地址:地址锁存允许输锁存允许输入信号入信号START:启动信号输入端:启动信号输入端IOCLR=adstart;delay(50);IOSET=adstart;delay(50);IOCLR=adstart;delay(50);IO_Init();while(IOPIN&adend)=0);IOSET=111;i=IOPIN;(1)送单次脉冲,启)送单次脉冲,启 动动A/D转换转换IO口设置口设置(2)A/D转换是否结
11、束转换是否结束2、任务、任务2A/D转换转换(3)OE置置1,将,将A/D转转换后的数据读入换后的数据读入3、任务、任务3数码管显示数码管显示 INT32U d,g,s,b;b=i/100;d=i%100;s=d/10;g=d%10;(1)2进制转10进制(2)动态显示 OS_STK Task0StkTASK_STK_SIZE;OS_STK Task1StkTASK_STK_SIZE;OS_STK Task2StkTASK_STK_SIZE;void Task0(void*data);void Task1(void*data);void Task2(void*data);#include co
12、nfig.h“#define TASK_STK_SIZE 642.3 C/OS-的程序结构的程序结构1、创建任务堆栈、创建任务堆栈定义任务堆栈大小定义任务堆栈大小任务声明任务声明/*c语言的主函数,由它启动多任务环境*/int main(void)OSInit();/操作系统初始化操作系统初始化 OSTaskCreate(Task0,(void*)0,&Task0StkTASK_STK_SIZE-1,2);OSTaskCreate(Task1,(void*)0,&Task1StkTASK_STK_SIZE-1,3);OSTaskCreate(Task2,(void*)0,&Task2StkTASK_STK_SIZE-1,4);OSStart();/启动操作系统启动操作系统 return 0;2、创建任务并启动操作系统、创建任务并启动操作系统void Task0(void*p_arg)p_arg=p_arg;/避免编译警告 TargetInit();/初始化 3、具体任务、具体任务OSTaskSuspend(OS_PRIO_SELF)等待状态等待状态运行状态运行状态就绪状态就绪状态OSTaskSuspend(优先级)OSTaskResume(优先级)4、任务切换、任务切换任务的挂起和恢复任务的挂起和恢复