Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1256216
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2012-05-22 09:36:33

管理高达32个可编程输入/输出线,每个I/O线可作为通用功能I/O或分配给一个内置外设
引脚复用:每个引脚可配置为通用功能I/O线或一个或两个外设I/O复用的I/O线
电源管理:配置I/O线时钟不用使能,输入变化中断与读引脚电平需要时钟有效
中断产生:PIO控制器为用户外设,中断线连接在中断源2到31间。只有当PIO 控制器时钟使能时才能产生PIO 控制器中断
 

硬件复位后,默认将PIO 时钟禁用
I/O线或外设功能选择:
PIO_PER (PIO 使能寄存器) //相应的位置位使能时,由PIO 控制器来控制
PIO_PDR (PIO 禁用寄存器) //相应的位禁用时,引脚由PIO_ABSR相应的片上外设选择来控制
PIO_PSR (PIO 状态寄存器)
外设A或B选择:
PIO_ABSR (AB选择状态寄存器) 相应位为0 表示选择外设A ;相应位为1表示选择外设B
PIO_ASR (A 选择寄存器)
PIO_BSR (B选择寄存器)
输出控制:
当作为I/O线时,可通过设置PIO_OER置1引脚输出,PIO_PDR置1引脚输入,状态输出读PIO_OSR;
通过写PIO_SODR置位输出数据,PIO_CODR清零输出数据,PIO_ODSR输出数据状态。
PIO_OER 输出使能   1-输出
PIO_ODR 输出禁用   1-输入
PIO_OSR 输出状态   0-输入   1-输出
PIO_IFER 滤波器使能   1-使能I/O线上毛刺滤波器
PIO_IFDR 滤波器禁用
PIO_IFSR 滤波器状态
PIO_SODR 置位输出数据寄存器
PIO_CODR 清零输出数据寄存器
PIO_ODSR 输出数据状态寄存器
PIO_PDSR 引脚数据状态寄存器   1-I/O线电平为1
PIO_IER 中断使能寄存器
PIO_IDR 中断禁用寄存器
PIO_IMR 中断屏蔽寄存器    1-中断使能
PIO_ISR 中断状态寄存器    1-检测到中断
PIO_MDER PIO多驱动使能寄存器
PIO_MDDR   PIO多驱动禁用寄存器
PIO_MDSR   多驱动状态寄存器
PIO_PUER 上拉使能寄存器
PIO_PUDR 上拉禁用寄存器
PIO_PUSR 上拉状态寄存器
PIO_ASR   PIO外设A选择寄存器
PIO_BSR   PIO外设B选择寄存器
PIO_ABSR 外设AB状态寄存器   0-A   1-B
PIO_OWER 输出写使能寄存器 1-使能I/O线对PIO_ODSR写
PIO_OWDR 输出写禁用寄存器   1-禁用I/O线对PIO_ODSR写
PIO_OWSR 输出写状态寄存器

//----------------例子--------------------------------
测试PIO   单步调试
#include "../Startup/Board.h"
#define LED1             (1<<0) /* PA0 / PGMEN0 & PWM0 TIOA0   48 */
int main()
{
   *AT91C_PIOA_PER = LED1; //选择I/O线
   *AT91C_PIOA_OER = LED1; //使能输出
   *AT91C_PIOA_SODR = LED1; //置位输出   LED1灭
   *AT91C_PIOA_CODR = LED1; //清零输出   LED1亮
   return 0;
}
阅读(923) | 评论(0) | 转发(0) |
0

上一篇:NUC7003的启动信息

下一篇:mips命令

给主人留下些什么吧!~~