博客
关于我
F28335第九篇——通用IO
阅读量:584 次
发布时间:2019-03-11

本文共 2101 字,大约阅读时间需要 7 分钟。

F28335 GPIO寄存器详细说明

GPIO概述

F28335微控制器拥有88个复用IO端口,划分为A、B、C三个分组。

  • A分组:GPIO0到GPIO31
  • B分组:GPIO32到GPIO63
  • C分组:GPIO64到GPIO87

GPIO被划分为三个寄存器组:GPIO控制寄存器(GpioCtrlRegs)、GPIO中断寄存器(GpioIntRegs)和GPIO数据寄存器(GpioDataRegs)。其中,前两个寄存器组为读写式寄存器。

寄存器组别说明

1. GPIO控制寄存器(GpiCtrlRegs)

用于配置各复用IO端口的基本功能,包括功能选择、数据方向和上拉控制。支持A、B分组配置,C分组功能较为简洁。

2. GPIO中断寄存器(GpiIntRegs)

  • 作用:配置外部中断触发端口及其唤醒功能。
  • 特点:用于中断源选择和低功耗唤醒功能,每个中断源选择范围有限。

3. GPIO数据寄存器(GpiDataRegs)

实现通用端口的数据操作,包括读取、置位、清零和翻转。每个端口配备四个寄 storage器,其中数据寄存器为状态值直接反映。但需注意操作可能影响多个端口。

寄存器源代码结构

// GPIO控制寄存器struct GpioCtrlRegs {    union GpACTRL Reg gpACTRL;    union GpA1 Reg gpAQSEL1;    union GpA2 Reg gpAQSEL2;    union GpA1 Reg gpAMUX1;    union GpA2 Reg gpAMUX2;    union GpADat Reg gpadir;    union GpADat Reg gpapud;    Uint32 reserved1;    union GpBCtrl Reg gpBCtrl;    union GpB1 Reg gpBQSEL1;    union GpB2 Reg gpBQSEL2;    union GpB1 Reg gpBMUX1;    union GpB2 Reg gpBMUX2;    union GpBDat Reg gpBDir;    union GpBDat Reg gpBPUD;    Uint16 reserved2[8];    union GpC1 Reg gpCMUX1;    union GpC2 Reg gpCMUX2;    union GpCDat Reg gpCDir;    union GpCDat Reg gpCPUD;};// GPIO中断寄存器struct GpioIntRegs {    union GpioXInt Reg gpioXInt1Sel;    union GpioXInt Reg gpioXInt2Sel;    union GpioXInt Reg gpioXNmiSel;    union GpioXInt Reg gpioXInt3Sel;    union GpioXInt Reg gpioXInt4Sel;    union GpioXInt Reg gpioXInt5Sel;    union GpioXInt Reg gpioXInt6Sel;    union GpioXInt Reg gpioXInt7Sel;    union GpADat Reg gpIOpMSel;};

寄存器操作注意事项

  • 数据寄存器:需谨慎操作,避免同时影响多个端口。建议使用其它寄存器或延时操作以稳定化配置。
  • 延时操作:在清零和置位操作前后适当添加延时,提升I/O端信号的稳定性。
  • 中断配置:确保中断源选择范围符合规范,避免因选择错误导致异常触发。
  • 寄存器编程示例

    // 初始化GPIO端口配置void InitKeyGpio() {    GpioCtrlRegs.gpadir = GPIO_OUTPUT;    GpioCtrlRegs.gpapud = GPIO_HIGH;    GpioCtrlRegs.gpBDir = GPIO_OUTPUT;    GpioCtrlRegs.gpBPUD = GPIO_HIGH;    GpioCtrlRegs.gpCMux1 = GPIO müşCF;    GpioIntRegs.gpioXInt1Sel = GPIO13;}// 中断服务程序interrupt void IsrXint1() {    PieCtrlRegs.pieCtrl.bit.enPie = 1;    GpioDataRegs.gpAtoGgle.bit.GPIO6 = 1;  // 刷新LED1    GpioDataRegs.gpBtoGgle.bit.GPIO7 = 1;  // 刷新LED2    Delay_Us(10000);}

    总结

    F28335的GPIO配置可满足多种复用IO需求,但在操作时需注意寄存器特性和潜在副作用。通过合理配置和谨慎使用,可实现高效、可靠的I/O控制。

    转载地址:http://ryztz.baihongyu.com/

    你可能感兴趣的文章
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理+负载均衡
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 源码完全注释(11)ngx_spinlock
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的 SSL 模块安装
    查看>>
    Nginx 的优化思路,并解析网站防盗链
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>