查看: 4296|回复: 12

[求助] 端口与GPIO问题

[复制链接]
  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
    发表于 2015-12-17 15:42:22 | 显示全部楼层 |阅读模式
    看《嵌入式系统原理与实践——ARM cortex-M4 kinetis 微控制器》,关于书中第三章第51页GPIO构建源程序文件(hw_gpio.c)程序中定义的函数hw_gpio_get_port_addr(函数返回:端口号对应的端口寄存器组指针)
    和hw_gpio_get_pt_addr(函数返回:端口号对应的GPIO端口寄存器组指针)
    不是很理解,感觉hw_gpio_get_pt_addr(函数返回:端口号对应的GPIO端口寄存器组指针)有点多余,因为后面函数实现的程序一模一样,返回的参数也是一模一样。如果说这样可以,那我之前学习80C51单片机也没有见过这样关于端口、GPIO的定义函数,80C51有四组GPIO,每组8个,我看完《单片机原理》(高等教育出版社),里面引脚的选择已经在端口定义中包含了,(直接就是P2_1或其他)而书中为什么要将端口和GPIO分开定义?且执行还程序一样。不明白,还请指点一下
    我知道答案 目前已有12人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-17 16:02:31 | 显示全部楼层
    帮顶一下
    有没有可能是不同厂家的ARM芯片GPIO端口寄存器定义的地址是不一样的呢,80C51内部结构都是一样的,有些东西是变不了的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-12-17 16:16:10 | 显示全部楼层
    你提到苏大的书里面的定义,其实具体就是获得IO口的寄存器地址。
    他们用两个函数,应该是为了兼容不同的头文件。
    其实你可以直接使用官方的驱动,就不用纠结这个问题了。
    GPIO模块是GPIO模块,它主要是配置IO口的输入输出,方向,数值等。
    PORT寄存器是用来配置IO的功能,比如是IO功能还是其他特殊功能,是否上拉,滤波等等。
    也就是按照功能分的。
    8位机比较简单,支持的功能比较少,考虑没有那么周期,也没有必要那么周全。但是32位设计功能模块很多,所以要具体区分,便于控制。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2015-12-17 17:01:05 | 显示全部楼层
    这个好像和STM32的有点不一样 .多看几遍参考手册,相信你会明白的。
    端口是配置I/O的工作模式,GPIO只是设置数据的和方向。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-12-17 17:13:18 | 显示全部楼层
    建议楼主多看看相关芯片的reference manual, 手册上面讲的很清楚。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-17 18:58:43 | 显示全部楼层
    学习一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
     楼主| 发表于 2015-12-17 19:54:05 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-12-17 17:13
    建议楼主多看看相关芯片的reference manual, 手册上面讲的很清楚。

    但是两个函数的实现上是一模一样,这个是我不解的地方
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
     楼主| 发表于 2015-12-17 19:54:39 | 显示全部楼层
    wambob 发表于 2015-12-17 17:01
    这个好像和STM32的有点不一样 .多看几遍参考手册,相信你会明白的。
    端口是配置I/O的工作模式,GPIO只是设 ...

    但是两个函数的实现上是一模一样,这个是我不解的地方
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2015-12-17 21:10:47 | 显示全部楼层
    suoma 发表于 2015-12-17 19:54
    但是两个函数的实现上是一模一样,这个是我不解的地方

    因为他们指向同一个端口地址,所以实现上是一模一样的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-12-18 09:59:23 | 显示全部楼层
    suoma 发表于 2015-12-17 19:54
    但是两个函数的实现上是一模一样,这个是我不解的地方

    实现功能是一样的没错。
    但是你发现没,调用的PORT寄存器名字不一样。
    一个是PORTA_BASE_PTR, 一个是PTA_BASE_PTR。
    这个应该是兼容不同头文件的。
    有些头文件定义了PORTA_BASE_PTR,有些头文件定义了PTA_BASE_PTR
    实际上,你自己使用没有必要定义两个,只要根据你自己的头文件来就行了。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-24 02:46 , Processed in 0.113741 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表