第6章 部件工作原理与编程示例

更新时间:2023-07-18 02:24:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ARM 应用系统设计 第六章 部件工作原理和编程示例佘黎煌 东北大学信息科学与工程学院 电子信息工程研究所

第六章 部件工作原理和编程示例

GPIO编程示例 EBI编程 外部中断nIRQ编程 UART编程示例 TIMER编程示例

GPIO

W90P710 处理器的GPIO 模块(General Purpose Input Output) 提供了71 个可编程的通用输入/输出引脚,每个输入/输出引脚可 以通过软件编程设置为输入模式、输出模式或特殊功能模式。

GPIO

端口0: 端口1: 端口2: 端口3: 端口4: 端口5: 端口6:

5 引脚输入/输出端口 10 引脚输入/输出端口 10 引脚输入/输出端口 8 引脚输入/输出端口 11 引脚输入/输出端口 15 引脚输入/输出端口 12 引脚输入/输出端口

GPIO的控制

利用GPIO 口控制连接在GPIO 引脚上的LED 灯 的亮灭 1. 通过AXD Debugger 的命令行调试功能, 直接通过JTAG 接口修改W90P710 处理器内部 端口寄存器的值. 2. C 语言源程序,实现通过GPIO 口控制 LED12、LED13 按照设定的时间间隔闪烁。

GPIO的控制

GPIO复选控制寄存器

GPIO上拉电阻和方向配置

GPIO输出控制寄存器

AXD Debugger控制

AXD Debugger控制

AXD Debugger控制

通过AXD控制设定GPIO5 和GPIO6 引脚为输出模式,并使能 内部上拉电阻 Debug> setmem 0xFFF83054 0x30003,32 使GPIO5 和GPIO6 引脚输出电平为高。此时, LED12、LED13 应熄灭。 Debug> Setmem 0xFFF83058 0x3,32 使GPIO5 和GPIO6 引脚输出电平为低。此时, LED12、LED13 应点亮。 Debug> Setmem 0xFFF83058 0x0,32

C语言-寄存器访问

#define GPIO_BA 0xFFF83000 /* GPIO Control */ #define REG_GPIO_CFG5 (GPIO_BA+0x0050) /* GPIO port5 configuration Register */ #define REG_GPIO_DIR5 (GPIO_BA+0x0054) /* GPIO port5 direction control Register */ #define REG_GPIO_DATAOUT5 (GPIO_BA+0x0058) /* GPIO port5 data out Register */ #define REG_GPIO_DATAIN5 (GPIO_BA+0x005c) /* GPIO port5 data input Register */ #define outpw(port,value) (*((UINT32 volatile *) (port))=value) #define inpw(port) (*((UINT32 volatile *) (port))) outpw(REG_GPIO_CFG5,0x0); // 设置PORT5_0, PORT5_1 为GPIO5,GPIO6 方式

文件组织

GPIO.C#include "wblib.h“ void GpioInit(){ outpw(REG_GPIO_CFG5,0x0); // 设置PORT5_0, PORT5_1 为GPIO5,GPIO6 方式 outpw(REG_GPIO_DIR5,0x30003); // 设置GPIO5,GPIO6 引脚内部上拉,// 并将这两个引脚设为输出模式 } void SetGpio(INT16 value){ outpw(REG_GPIO_DATAOUT5,value); }

Main.c#include <stdio.h> #include "wblib.h" #include "irq_handler.h" #include "main.h" int main (void){ INT16 value = 0x3; GpioInit(); while(1){ value = (value&0x3)^0x3; SetGpio(value); Delay(1000000); } return 0; }

void Delay(INT32 t) { do { t--; }while(t); }

通过AXD调试软件做地址重映射建立一个文本文件setmap.txt, setmem 0xfff01000

0x000530C1,32 setmem 0xfff01004 0x10040084,32 setmem 0xfff01008 0x000010E4,32 setmem 0xfff0100c 0x00000000,32 setmem 0xfff01010 0x0000014B,32 setmem 0xfff01014 0x0000014B,32

;EBICON ;ROMCON ;SDCONF0 ;SDCONF1 ;SDTIME0 ;SDTIME1

将SDRAM的基地址配置为0x0,FLASH的基地址配置为 0x8000000,AXD调试在SDRAM中进行

Debug> obey c:\setmap.txt

第六章 部件工作原理和编程示例

GPIO编程示例 EBI编程 外部中断nIRQ编程 UART编程示例 TIMER编程示例

本文来源:https://www.bwwdw.com/article/i781.html

Top