查看: 4782|回复: 1

NXP LPC1768宝马开发板 第一章GPIO实验

[复制链接]

该用户从未签到

发表于 2015-1-14 14:31:18 | 显示全部楼层 |阅读模式
分享到:
第一章    NXP LPC1768—— GPIO
开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板

1.1 GPIO简介
1.2 硬件描述
1.3 程序说明
1.4 实验现象

1GPIO
GPIOGeneral Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读出引脚的状态-是高电平或是低电平。GPIO 口是个比较重要的概念,用户可以通过 GPIO 口和硬件进行数据交互(UART),控制硬件工作(LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。因此,GPIO 口的使用非常广泛。
2硬件描述:
          图片1.jpg
想要控制LED,当然是通过控制LPC1768  I/0的高低电平来实现,在LPC1768上,I/O引脚可以被软件设置成不同的功能,如输入或输出,所以被称为GPIO (General-purpose I/O)。在本实验中,主要是用GPIO来控制开发板上的LED,实现跑马灯的效果。注意要短接JP8
3、程序说明:
我们先来简单了解一下系统时钟分频倍频。假如我们要得到PLL0=400MHz的时钟,计算公式如下:
        FCCO=2×M×FIN/ N
PLL输入和设定必须满足下面的条件:
1) FIN的范围:32KHz~50MHz
2) FCCO的范围:275MHz~550MHz
可通过求解PLL等式来得到其它的PLL参数:
M =FCCO×N/2×FIN
N =2×M×FIN/ FCCO
FIN=FCCO×N/2×M
这里FIN=12FCCO=400。由此可计算M=100N=6PLL0CFG寄存器包含PLL0倍频器和分频器值,我们往这个寄存器写值来实现分频与倍频
图片2.jpg
上面我们算得M=100N=6,把他们分别减一,换算成16进制
      #define PLL0CFG_Val           0x00050063
接下来就可以配置我们的CPU时钟了,PLL0输出时钟必须要经过分频才能
提供给CPU使用,PLL0输出的分频由CCLKCFG寄存器进行控制。当PLL0被旁路时,可通过1分频。当PLL0正在运行时,输出必须经过分频以使CPU时钟频率(CCLK)工作在限定的范围内。可使用一个8位分频器进行选择,包括降低CPU的操作频率来暂时节省功耗而无需关闭PLL0
图片3.jpg
  CCLKPLL0输出信号中得到,通过CCLKSEL+1分频。当CCLKSEL1时,CCLK的频率是PLL0输出频率的一半;当CCLKSEL3时,CCLK的频率是PLL0输出频率的四分之一,如此类推。这里我们把它设置成
#define CCLKCFG_Val           0x00000007
CCLK的频率 = PLL0输出频率的八分之一 =50MHz
现在我们一步一步来点亮LED
图片4.jpg
在端口配置的函数里面,有两个重要寄存器,FIODIRFIOPIN
图片5.jpg
我们从这张表可以看到,要把某个端口方向设置成输出,只需把FIODIR这个寄存器的某个位写1即可。根据手册说明,除了32位长和仅可以进行字访问的FIODIR寄存器外,每个高速GPIO口也可通过一些字节和半字访问的寄存器来控制。这些额外的寄存器除了提供与FIODIR寄存器相同的功能外,还可以更容易、更高速地访问物理端口引脚。比如LPC_GPIO2->FIODIR  = 0x000000ff;  我们也可以写成LPC_GPIO2->FIODIR0  = 0xff;
  
   设置好方向之后,即可按我们自己的要求输出高低电平来实现我们当初设计的功能。
   细心的你一定发现了,在void  LED_config(void)这个函数里,有配置GPIO0的语句。奇怪啊!LED没有接在GPIO0IO口啊。通过计算我们可以知道这两句配置的是P0.21这个IO口。打开我们的原理图,可以看到P0.21接到了SN74ALVC164245DIR这个端口,74ALVC164245 双电源供电,实现3.3V5V电平转换,宝马1768的板子没有用5VIO,所以电源都接3v3,其中DIR控制传输方向,DIR高电平 A to B ;DIR低电平 B TO A
  
我们把DIR拉高,数据的传输方向是A to B,目的是防止数据被意外干扰。
    图片6.jpg
4、实验现象:
把程序下载到板子上,程序运行后,可以看到LED从左到右,然后从右到左流动,流到最左边时LED全亮,最后全灭,以此循环。

例程源码
【01】宝马1768_GPIO(2014.05.10).rar (68.19 KB, 下载次数: 40)
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-4-1 15:16:47 | 显示全部楼层
本帖最后由 一座城 于 2015-4-2 14:20 编辑

配套书本目录附上:

lab 1.开发环境和开发工具

lab 2.GPIO和LED控制
lab 3.键盘与中断
lab 4.串口通信
lab 5.利用UART实现调度台
lab 6.定时器与计数器
lab 7.五向键与有限状态机
lab 8.实时时钟
lab 9.I2C接口与设备
lab 10.LCD控制器与LCD显示
lab 11.模数转换实验
lab 12.数模转换实验

大学电子信息科学与技术英汉实验丛书嵌入式系统设计实验.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-22 13:23 , Processed in 0.117583 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.