​Atmel SAM4S学习笔记(五)——GPIO

作者: liunian__92
上传时间为: 2014-11-24 11:23 PM
2014-11-24
阅读:

以下讲的内容基本都是参考atmel SAM4 数据手册

IO口是程序(逻辑世界)和物理世界的实体连接,一个单片机的IO口的功能和数量是蛮重的。

GPIO(General Purpose Input Output)通用输入/输出端口

SAM4S芯片的GPIO都由并行输入、输出控制器(PIO:Parallel Input/Output Controller)来管理(在数据手册第31章(558页)有对PIO介绍)。所有的IO口都有好多种不同的输入输出模式,比如:上拉、下拉、施密特触发器输入、多驱动(开漏)、滤波、去抖动、输入改变中断。

下面是PIO的框架图(如图5-1)

SAMS32C具有PIOA、PIOB、PIOC三个PIO控制器。

PIO功能:

检测IO输入电平的变化产生中断

高电平、低电平、上升沿、下降沿中断

(glitch filter)屏蔽小于半个时钟周期的脉冲

去抖动滤波器,(按键抖动可以直接去除,不用向51时代那样延时了)

多驱动能力

控制IO口上拉、下拉功能

输入可见和输出可控

一次写操作可同步输出32位数据

8位并行捕捉用于接入CMOS数字摄像头。

GPIO的控制寄存器多达五十多个,功能也是相当的强大在这里就不一一列出了,请详见数据手册。每个IO口都有PIO控制器的一位配置,每个寄存器都是32bit的。如此强大的PIO控制器,开发者在实用的时候受益不少,连软件延时去抖动都可以不用考虑了。

下面就简答的来配置IO输出低电平,让开发板的LED亮起来。

首先新建一个工程,这个就不多说了,前面的文章讲过了。

由电路图可知,PC23为低电平时才会点亮LED。

0000 0000 1000 0000 0000 0000 0000 0000(二进制)

0x 0 0 8 0 0 0 0 0(十六进制)

#include "sam4sd32c.h"
int main (void)
{
	SystemInit();//系统初始化
	PIOC->PIO_PER  = (uint32_t)0x00800000;
	PIOC->PIO_OER  = (uint32_t)0x00800000;
	PIOC->PIO_OWER = (uint32_t)0x00800000;
	while(1)
	{
	  PIOC->PIO_CODR = (uint32_t)0x00800000;
	}
}

在main.c输入上述代码。

#include "sam4sd32c.h" 就是类似于reg52.h 的头文件

PIOC就是控制器。

PIO_PER:PIO使能寄存器

PIO_OER:输出允许寄存器

PIO_OWER:输出写允许寄存器

PIO_CODR:置零输出数据寄存器

编译、下载。LED亮起。

Atmel SAM4S Xplained pro学习笔记(一)-- 开发套件介绍

Atmel SAM4S 学习笔记(二)-- 开发环境搭建

Atmel SAM4S 学习笔记(三)-- 示例代码分析

Atmel SAM4S学习笔记(四)——ASF详解

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示