嵌入式六个实验

合集下载

嵌入式实验报告

嵌入式实验报告

目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三 ADC实验 (15)实验十五 DMA实验 (17)实验十六 I2C实验 (21)实验十七 SPI实验 (24)实验二十一红外遥控实验 (27)实验二十二 DS18B20实验 (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。

二.实验目的掌握STM32开发环境,掌握从无到有的构建工程。

三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。

通过ISP 下载代码到实验板,查看运行结果。

使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。

四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6.编写代码7.编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK下载到实验板11.单步调试12.记录实验过程,撰写实验报告六.实验结果及测试源代码:两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。

七.实验总结通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。

作为STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。

实验二按键输入实验一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。

嵌入式系统 实验报告

嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131

嵌入式系统实验报告(华中科技大学)

嵌入式系统实验报告(华中科技大学)

课程实验报告实验名称:嵌入式系统实验专业班级:计算机科学与技术x班学号:Ux姓名:x合作者:x实验时间:xxxx年xx月xx日计算机科学与技术学院试验一:bootloader (ads、引导)一、实验任务1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心二、实验内容编写串口接收数据函数编写串口发送数据函数学习ads、jtag调试、flash烧写打印菜单,等待用户输入下载并运行linux核心配置主机的nfs服务器,与linux核心连接三、实验步骤1.编写串口接收数据函数编写串口发送数据函数修改bootloader:菜单、串口收发、命令行;接收串口数据并做相应处理:while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}Bootloader的main()函数打印菜单:int main(void){ARMTargetInit(); //目标板初始化;//接收用户命令,传递linux核心;Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');return 0;}串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}2.使用ads1.2编译bootloader;3.使用uarmjtag下载、调试bootloader;4.使用axd查看变量、内存,单步跟踪;5.配置超级终端,与bootloader通讯;6.配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;9.启动Linux核心运行,察看结果;10.linux核心能够运行到加载root步骤,说明bootloader正常运行;11.将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告学号:姓名:班级:13电子信息工程指导老师:苏州大学电子信息学院2016年12月实验一:一个灯的闪烁1、实验要求实现PF6-10端口所连接的任意一个LED灯点亮2、电路原理图图1 LED灯硬件连接图3、软件分析RCC_Configuration(); /* 配置系统时钟*/GPIO_Configuration(); /* 配置GPIO IO口初始化*/ for(;;){GPIOF->ODR = 0xfcff; /* PF8=0 --> 点亮D3 */Delay(1000000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(1000000);4、实验现象通过对GPIOF8的操作,可以使LED3闪烁5、实验总结这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。

通过本实验对STM32开发板的硬件原理有了初步了解。

实验二:流水灯1、实验要求实现PF6-10端口所连接的5个LED灯顺次亮灭2、电路原理图图1 流水灯硬件连接图3、软件分析int main(void){RCC_Configuration();/* 配置系统时钟*/GPIO_Configuration();/* 配置GPIO IO 口初始化*/for(;;){GPIOF->ODR = 0xffbf;/* PF6=0 --> 点亮LED1 */Delay(5000000);GPIOF->ODR = 0xff7f;/* PF7=0 --> 点亮LED2 */Delay(5000000);GPIOF->ODR = 0xfeff;/* PF8=0 --> 点亮LED3 */Delay(5000000);GPIOF->ODR = 0xfdff;/* PF9=0 --> 点亮LED4 */Delay(5000000);GPIOF->ODR = 0xfbff;/* PF10=0 --> 点亮LED5 */ }}4、实验现象LED1~LED5依次点亮,亮灭的时间间隔都为1S。

嵌入式实验报告

嵌入式实验报告

实验一 ARM汇编语言程序设计一、实验目的1.了解IAR Embedded Workbench 集成开发环境2.掌握ARM汇编指令程序的设计及调试二、实验设备1.PC操作系统WIN98或WIN2000或WINXP,ADSI.2集成开发环境,仿真驱动程序三、实验内容1.熟悉IAR Embedded Workbench 集成开发环境2.理解下列程序,新建工程,加入下面的程序,并观察实验结果,解释程序实现的功能分析:该程序实现的功能是程序功能:Y = A*B+C*D+E*F程序代码:AREA Examl, CODE,READONLY ;定义一个代码段ENTRY ;程序入口MOV R0,#0;设置R0寄存器的值为0MOV R8,#0;设置R8寄存器的值为0ADR R2,N;将R2寄存器的值设为数据域N的地址LDR R1,[R2];将以R2的值为地址的数据读入R1MOV R2,#0;设置R2的值为0ADR R3,C; 将R3寄存器的值设为数据域C的地址ADR R5,X; 将R5寄存器的值设为数据域X的地址LOOPLDR R4,[R3,R8];将R3+R8的数据读入R4LDR R6,[R5,R8];将R5+R8的数据读入R6MUL R9,R4,R6;R9 = R4*R6ADD R2,R2,R9;R2 = R2+R9ADD R8,R8,#4;R8 = R8+4ADD R0,R0,#1;R0 = R0+1CMP R0,R1;比较R0和R1的值BLT LOOP;R0<R1的话执行循环N DCD 0X03;C DCD 0X01,0X02,0X03,0X04,0X05,0X06;X DCD 0X01,0X02,0X03,0X04,0X05,0X06;END程序结果:各个寄存器的结果执行结果如下:3.实现1+2+3+4+····+100,求的值,并保存在地址0x90018的地址里面程序代码:MOV R0,#100;设置R0寄存器的值为100LDR R2,=0X90018;设置R2寄存器指向地址0x90018MOV R1,#0;设置R1的值为0MOV R3,#0;设置R3的值为0LOOPADD R3,R3,R0;R3 = R3+R0SUB R0,R0,#1;R0 = R0-1CMP R0,R1;将R0和R1的值比较BNE LOOP;不相等的话继续执行循环STR R3,[R2];将R3的值装入到R2指向的地址块中。

嵌入式系统原理与应用实验指导书(合稿+习题)

嵌入式系统原理与应用实验指导书(合稿+习题)

嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。

第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。

采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。

MagicARM2410实验箱参考如图1.1所示。

图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。

图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统设计实验报告班级: 20110612学号: ***********名:***成绩:指导教师:武俊鹏、刘书勇1. 实验一1.1 实验名称博创UP-3000实验台基本结构使用方法1.2 实验目的1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。

3.熟悉ARM JTAG的安装与使用。

1.3 实验环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC 机Pentium100以上、串口线。

软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。

1.4 实验内容及要求1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。

3.熟悉ARM JTAG的安装与使用。

1.5 实验设计与实验步骤1.新建超级终端2.选择ARM 开发实验台串口。

完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置3.保存为一个特定超级终端到桌面上,以备后用。

用串口线将PC机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。

4.启动开发板,按住任意键,使开发板进入BIOS设置状态。

5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。

操作时,要在PC机上输入小写的字母快捷键,进入到相应的功能中去。

6.按照超级终端上的提示信息,进行功能的测试。

1.6 实验过程与分析本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。

进入到BIOS界面后,按照超级终端上的提示信息来进行功能1.7 实验结果总结在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快捷键来测试对应的功能。

如e:测试由ZLG7289 驱动的LED 显示,共分3 步,请看超级终端提示按任意键继续,同时观察LED 的变化,最后返回主菜单。

浙江工业大学 嵌入式系统原理实验(1-8)

浙江工业大学 嵌入式系统原理实验(1-8)

嵌入式实验(1-8)第一次实验1. 用汇编语言编程实现:若R0=0,则转移到标号L0处;若R0=1,则转移到标号L1处;若R0=2,则转移到标号L2处。

否则不转移。

2. 用汇编语言编程实现128位整数减法。

3. 用汇编语言编程实现:有4个数分别存放在R0~R3中,编程实现:4数相乘,其积存放在R4中。

4. 用汇编语言编程实现:R0中的高24位[31:8]保持不变,低8位[7:0]设置为0xB。

5. 用汇编语言编程实现:快速中断的使能和禁止。

第二次实验1. 用汇编语言编程实现:将存储器中起始地址M1处的4个字数据复制到地址M2处。

2. 用汇编语言编程实现:100+101+102+…+200,其和存于R0。

3. 用汇编语言编程实现:从存储器中起始地址M1处的20个字节数据中,找出一个最小数存放在R0中。

4. 利用跳转表的思想编写一个汇编子程序,根据键入的值(存放在R0中)不同来完成不同的子程序跳转(假设有四个子程序SUB0、SUB1、SUB2、SUB3)。

第三次实验1 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成字符串STR1与STR2内容的互换(假设STR1和STR2长度一致)。

2. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,将输入的20个字节数据,从大到小加以排序,大数在前,小数在后。

3. 用C语言和汇编语言混合编程实现:用汇编语言完成对C语言全局变量的访问。

假设CV AR1和CV AR2是C语言中定义的全局变量,请用一段汇编语言访问它们,完成两者的相加运算,结果存放在CV AR1中。

第四次实验1. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成两个字符串的比较,并返回比较结果。

如果比较字符串相同,返回1,否则返回0。

2. 用C语言和汇编语言混合编程实现:请完成一段字符串“Hello Zhejiang University of Technology!”的拷贝,要求主程序用C语言编写,字符串拷贝子程序用汇编语言编写。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 ADS1.2开发环境创建与简要介绍一、实验目的1. 熟悉ADS1.2开发环境,正确使用仿真调试电缆进行编译、下载、调试。

二、实验内容1. 学习ADS1.2开发环境三、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。

2.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试电缆驱动程序四、实验步骤1.ADS1.2下建立工程1.运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板。

选中它即可生成ARM的执行文件。

同时,如图2-1-1图2-1-1还要在,Project name栏中输入项目的名称,以及在Location中输入其存放的位置。

按确定保存项目。

2.在新建的工程中,选择Debug版本,如图2-1-2,使用Edit|Debug Settings菜单对Debug版本进行参数设置。

图2-1-23.在如图2-1-3中,点击Debug Setting 按钮,弹出2-1-4图,选中Target Setting图2-1-3图2-1-4项,在Post-linker栏中选中ARM fromELF项。

按OK确定。

这是为生成可执行的代码的初始开关。

4. 在如图2-1-5中,点击ARM Assembler ,在Architecture or Processer图2-1-5栏中选ARM920T。

这是要编译的CPU核。

5.在如图2-1-6中,点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。

这是要编译的CPU核。

图2-1-66. 在如图2-1-7中,点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。

图中的RO Base栏中填写程序代码存放的起始地址,RW Base 栏中填写程序数据存放的起始地址。

该地址是属于SDRAM的地址。

图2-1-7图2-1-8在options栏中,如图2-1-8,Image entry point要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0x30000000—0x33ffffff中选值,这是64M SDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。

通常入口点Image entry point 为0x30000000,ro_base也为0x30000000。

在Layout栏中,如图2-1-9,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。

它的作用是通知编译器,整个项目的开始运行,是从该段开始的。

图2-1-97. 在如图2-1-10中,即在Debug Setting对话框中点击左栏的ARM fromELF 项,在Output file name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。

图2-1-10中使用的是test.bin.图2-1-108. 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。

首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary 目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。

这样,就能在图2-1-10中看到该模板。

9.新建项目工程后,就可以执行菜单Project|Add Files把和工程所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group 来创建文件夹,然后把加入的文件选中,移入文件夹。

或者鼠标放在文件填加区,右键点击,即出!如图2-1-11图2-1-11先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。

读者可根据自己习惯,更改Edit|Preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。

如图2-1-12。

图2-1-122. ADS1.2下仿真、调试在ADS1.2下进行仿真调试,首先需要一根仿真调试电缆。

其驱动程序的安装和使用在光盘中的\实验软件\ARM9_RDI中,里面有相关的文档。

在连上调试电缆后,给实验箱上电,打开调试软件AXD Debugger。

点击File|load image 加载文件ADS.axf(\实验程序\HARDWARE\ADS\实验一\ADS\ADS_data目录下)。

打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。

点击全速运行,出现图2-1-13的界面:图2-1-13在最后介绍调试按钮,上图,左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部,第四个单步执行,第五个跳出函数。

到此,开发环境就全部介绍完了,这是 ARM的开发基础,希望你有所收获。

实验五 ARM的I/O接口实验一、实验目的1. 了解S3C2410的通用I/O接口2. 掌握I/0功能的复用并熟练的配置,进行编程实验二、实验内容1. 在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁!三、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。

2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理S3C2410 CPU 共有117个多功能复用输入输出口,分为8组端口:●4个16位的I/O端口(PORT C、PORT D、PORT E、PORT G)●2个11位的I/O端口(PORT B 和PORT H)●1个8位的I/O端口(PORT F)●1个23位的I/O端口(PORT A)这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。

配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。

往该地址中写入相应的数据,即可实现功能及数据配置。

GPACON (0x56000000) //Port A controlGPADAT (0x56000004) //Port A dataGPBCON (0x56000010) //Port B controlGPBDAT (0x56000014) //Port B dataGPBUP (0x56000018) //Pull-up control BGPCCON (0x56000020) //Port C controlGPCDAT (0x56000024) //Port C dataGPCUP (0x56000028) //Pull-up control CGPDCON (0x56000030) //Port D controlGPDDAT (0x56000034) //Port D dataGPDUP (0x56000038) //Pull-up control DGPECON (0x56000040) //Port E controlGPEDAT (0x56000044) //Port E dataGPEUP (0x56000048) //Pull-up control EGPFCON (0x56000050) //Port F controlGPFDAT (0x56000054) //Port F dataGPFUP (0x56000058) //Pull-up control FGPGCON (0x56000060) //Port G controlGPGDAT (0x56000064) //Port G dataGPGUP (0x56000068) //Pull-up control GGPHCON (0x56000070) //Port H controlGPHDAT (0x56000074) //Port H dataGPHUP (0x56000078) //Pull-up control H现用G口、H口举例说明。

对于G口如表2-5-1、表2-5-2、表2-5-3,表2-5-1表2-5-2也就是说,在地址0x0x56000060中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。

当G口某管脚配置成输出端口,则在PDATG对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。

若配置为功能管脚,则该管脚变成具体的功能脚。

对于H口见表2-5-4、表2-5-5、表2-5-6、表2-5-7表2-5-4表2-5-5表2-5-6表2-5-7也就是说,在地址0x56000070中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。

当H口某管脚配置成输入端口,则在GPHDAT对应的地址中的对应位上,得到1,则该管脚的输入为高电平,得到0,则该管脚的输入为低电平。

当H口某管脚配置成输出端口,则在GPGDAT对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。

若配置为功能管脚,则该管脚变成具体的功能脚。

其他端口配置请参见PDF文挡。

在程序中对GPI/O各寄存器的读写实现,是通过给宏赋值实现的。

这些宏在2410addr.h中定义;具体如:。

#define rGPACON (*(volatile unsigned *)0x56000000) //Port A control #define rGPADAT (*(volatile unsigned *)0x56000004) //Port A data#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data#define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B#define rGPCCON (*(volatile unsigned *)0x56000020) //Port C control#define rGPCDAT (*(volatile unsigned *)0x56000024) //Port C data#define rGPCUP (*(volatile unsigned *)0x56000028) //Pull-up control C#define rGPDCON (*(volatile unsigned *)0x56000030) //Port D control#define rGPDDAT (*(volatile unsigned *)0x56000034) //Port D data#define rGPDUP (*(volatile unsigned *)0x56000038) //Pull-up control D#define rGPECON (*(volatile unsigned *)0x56000040) //Port E control#define rGPEDAT (*(volatile unsigned *)0x56000044) //Port E data#define rGPEUP (*(volatile unsigned *)0x56000048) //Pull-up control E#define rGPFCON (*(volatile unsigned *)0x56000050) //Port F control#define rGPFDAT (*(volatile unsigned *)0x56000054) //Port F data#define rGPFUP (*(volatile unsigned *)0x56000058) //Pull-up control F#define rGPGCON (*(volatile unsigned *)0x56000060) //Port G control#define rGPGDAT (*(volatile unsigned *)0x56000064) //Port G data#define rGPGUP (*(volatile unsigned *)0x56000068) //Pull-up control G#define rGPHCON (*(volatile unsigned *)0x56000070) //Port H control#define rGPHDAT (*(volatile unsigned *)0x56000074) //Port H data#define rGPHUP (*(volatile unsigned *)0x56000078) //Pull-up control H 因此,配置端口G,在程序中也就是用如下语句即可:rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000;//配置第8、第9位为输出管脚rGPGDAT = rGPGDAT & 0xeff|0x200;//配置第8位输出为低电平,第9位输出高电平。

相关文档
最新文档