查看: 1557|回复: 0

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

[复制链接]
  • TA的每日心情
    慵懒
    2016-10-17 12:07
  • 签到天数: 306 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-11-24 23:20:55 | 显示全部楼层 |阅读模式
    分享到:
    以下讲的内容基本都是参考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-&gtIO_PER  = (uint32_t)0x00800000;        PIOC-&gtIO_OER  = (uint32_t)0x00800000;        PIOC-&gtIO_OWER = (uint32_t)0x00800000;        while(1)        {          PIOC-&gtIO_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详解
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 15:54 , Processed in 0.114332 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.