ARM7单片机(学习ing)—(一)、输入/输出端口GPIO编程—01
一、输入/输出端口GPIO编程
一—(01)、一位数码管静态显示(通过74HC595实现)
1、管脚连接模块
首先介绍一下LPC2106的相关的管脚~~
特性:可以实现独立的管脚配置
应用:管脚连接模块的用途是将管脚配置为需要的功能(这一章节主要就是介绍GPIO功能~~别的会在接下来的章节中分别予以介绍~~)
描述:管脚连接模块可以使所选管脚具有一个以上的功能。配置寄存器控制多路开关来连接管脚与片内外设。外设在激活和任何相关只读使能之前必须连接到适当的管脚。任何使能的外设功能如果没有映射到相应的管脚,则被认为是无效的。
寄存器的描述:
管脚连接模块包括两个寄存器:
管脚功能寄存器0:(PINSEL0)
PINSEL0寄存器按照下表当中的设定来控制管脚的功能。
IODIR寄存器中的方向控制位只有在管脚选择为GPIO的功能时才有效(也就是本章要讲述的)。对于其它功能,方向是自动控制的。
管脚功能寄存器1:(PINSEL1)
PINSEL1寄存器按照下表来设定控制管脚的功能。
IODIR寄存器中的方向控制位只有在管脚选择GPIO功能时才有效。对于其它功能,方向是自动控制的。
在复位时拉低DBGSEL时,只要管脚P0.17-P0.31的功能控制有效。(这个还真的不知道哎~~
管脚功能寄存器值:
PINSEL寄存器控制器件管脚的功能。如下图。
每一对寄存器位对应一个特定的器件管脚。
只有当管脚选择为GPIO功能时,IODIR寄存器的方向控制位才有效。
其它功能的方向是自动控制的。
每个派生期间通常具有不同的管脚分布,因此每个管脚可能有不同的功能。
2、GPIO
特性:
1)单个位的方向控制
2)单独控制输出的置位和清零
3)所有I/0口在复位后默认为输入
应用:
1)通用I/0口
2)驱动LED或者其他指示器
3)驱动片外器件
4)检测数字输入
管脚描述:
寄存器描述:
GPIO包含4个寄存器,如下表:
GPIO引脚值寄存器IOPIN:
GPIO输出置位寄存器IOSET:
GPIO输出清零寄存器:
GPIO方向寄存器:
好了,就这么点吧~~
然后就是今天要做的实验:
一位数码管的静态显示
晕了~~用IAR for ARM就是调不好~~
shit~~
然后就换用了Keil~~
浪费我大把时间了~~
早知道就早用Keil了~~
回头还得再调试一下IAR~~
好了,发图~~
然后就是程序了~~
MDK1_1.c(先是主程序吗~~你懂得)
//------------------------------------------------------------------------------
//LED数码管显示
//通过I/O模拟同步串行接口与74HC595进行连接,控制74HC595驱动LED数码管显示
//------------------------------------------------------------------------------
#include"lpc210x.h"
typedef unsigned long uint32;
typedef unsigned char uchar;
#define SPI_IO 0x00000150 //SPI接口的I/O设置字
uchar const seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0.82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//------------------------------------------------------------------------------
//延时函数
void delay(uint32 z)
{
uint32 i;
for(;z>0;z--)
for(i=0;i<50000;i++);
}
//------------------------------------------------------------------------------
//main
int main()
{
uchar i;
PINSEL0=0X00000000;
PINSEL1=0X00000000; //设置左右引脚连接GPIO
IODIR=SPI_IO; //设置SPI控制口为输出~~由于这是模拟的,所以需要自己设置方向位
while(1)
{
for(i=0;i<16;i++)
{
HC595_send_data(seg[i]);
delay(1);
}
}
}
74HC595.c
//------------------------------------------------------------------------------
//74HC595模拟SPI通信,便于调用
#include"lpc210x.h"
typedef unsigned long uint32;
typedef unsigned char uchar;
#define SPI_CS 0x00000100 //P0.8模拟片选
#define SPI_DA 0x00000040 //P0.6模拟数据传输口
#define SPI_CLK 0x00000010 //P0.4模拟CLK
//------------------------------------------------------------------------------
//向74HC595发送一个字节函数(发送数据时,高位在前)
//还是
- 实时操作系统μC/OS-II在ARM7上的移植(05-12)
- ARM7与FPGA在工业控制中的结合应用 (06-26)
- ARM7与FPGA在工业控制的结合 (07-03)
- 基于ARM7和DSP的逆变电源设计电路(01-08)
- ARM7嵌入式系统在车辆调度中的应用范畴(07-06)
- ARM系列微处理器简介之:初识ARM系列处理器(08-13)