查看: 8682|回复: 10

[已解决] GPIO的宏定义(已解决)

[复制链接]

该用户从未签到

12

主题

103

帖子

0

新手上路

Rank: 1

积分
173
最后登录
1970-1-1
发表于 2013-11-25 14:23:48 | 显示全部楼层 |阅读模式
看了GPIO模块的介绍,每个GPIO都对应了6个寄存器,比如GPIOA。现在需要在BSP层定义GPIO的宏,有什么比较好的办法把定义的宏与他的pin脚关联起来呢?
有没有相关的例程?谢谢!
#define GPIOA_PDOR                               GPIO_PDOR_REG(PTA_BASE_PTR)
#define GPIOA_PSOR                               GPIO_PSOR_REG(PTA_BASE_PTR)
#define GPIOA_PCOR                               GPIO_PCOR_REG(PTA_BASE_PTR)
#define GPIOA_PTOR                               GPIO_PTOR_REG(PTA_BASE_PTR)
#define GPIOA_PDIR                               GPIO_PDIR_REG(PTA_BASE_PTR)
#define GPIOA_PDDR                               GPIO_PDDR_REG(PTA_BASE_PTR) 
 
比如我想有如下定义: #define  BSP_LED_1    XXXXX,
然后我直接可以通过宏BSP_LED_1得到该管脚的基址,以及PIN脚?
我知道答案 目前已有10人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-11-25 14:47:12 | 显示全部楼层

    RE:GPIO的宏定义

    可以的,通过定义得到GPIO的实际操作地址。也可以用##连接符来实现。
    比如 #define BSP_LED(n)  GPIO##n##_PDDR
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    103

    帖子

    0

    新手上路

    Rank: 1

    积分
    173
    最后登录
    1970-1-1
     楼主| 发表于 2013-11-25 15:59:52 | 显示全部楼层

    回复:GPIO的宏定义

    回复第 2 楼 于2013-11-25 14:47:12发表:
    可以的,通过定义得到GPIO的实际操作地址。也可以用##连接符来实现。
    比如 #define BSP_LED(n)  GPIO##n##_PDDR
     
    这样可以得到GPIO的基址,可是pin脚还是没有办法定义啊。
    比如#define BSP_LED(A) GPIO##n##_PDDR
    预编译后是: GPIOA_PDDR,如果LED定义的管脚是PTA16,还是没有得到pin脚的信息啊
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-11-26 09:03:19 | 显示全部楼层

    RE:GPIO的宏定义

    你用的是哪个芯片?这样我好给你写个方便的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    103

    帖子

    0

    新手上路

    Rank: 1

    积分
    173
    最后登录
    1970-1-1
     楼主| 发表于 2013-11-26 12:14:40 | 显示全部楼层

    回复:GPIO的宏定义

    回复第 4 楼 于2013-11-26 09:03:19发表:
    你用的是哪个芯片?这样我好给你写个方便的
     
     

     
    谢谢安大侠,
    我现在用的是MKL46系列的MCU。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35

    主题

    508

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2167
    最后登录
    1970-1-1
    发表于 2013-11-26 14:16:03 | 显示全部楼层

    RE:GPIO的宏定义

    你可以参考如下的宏定义作为例子:
    #define ONE_WIRE_BUS_DATA_SET     GPIOB_PSOR |= 0x08   //Set PTB3
    #define ONE_WIRE_BUS_DATA_CLR     GPIOB_PCOR |= 0x08   //Clear PTB3
    #define GET_WIRE_BUS_DATA         ((GPIOB_PDIR >> 3)&0x01)
    #define BUS_DATA_INPUT            GPIOB_PDDR &= ~0x08  //set PTB3 as input
    #define BUS_DATA_OUTPUT           GPIOB_PDDR |= 0x08   //set PTB3 as output
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    40

    帖子

    0

    新手上路

    Rank: 1

    积分
    70
    最后登录
    1970-1-1
    发表于 2013-11-26 20:10:03 | 显示全部楼层

    回复:GPIO的宏定义

     IMX6Q 的呢
     IMX6Q BSP定义的寄存器虚拟地址在哪个文件呢?没有找到,求!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    45

    主题

    2369

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3276
    最后登录
    1970-1-1
    发表于 2013-11-27 14:27:59 | 显示全部楼层

    回复:GPIO的宏定义

    回复第 7 楼 于2013-11-26 20:10:03发表:
     IMX6Q 的呢
     IMX6Q BSP定义的寄存器虚拟地址在哪个文件呢?没有找到,求!
     
     

    楼主你好,请问你用的是基于IMX6Q的那块板子?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    6
    最后登录
    2015-5-28
    发表于 2015-5-28 17:41:11 | 显示全部楼层
    azhiking 发表于 2013-11-26 12:14
    回复第 4 楼 于2013-11-26 09:03:19发表:
    你用的是哪个芯片?这样我好给你写个方便的
     

    我也是用的kl46的芯片,刚刚起步,亲,你的问题解决了吗?我也是同求啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-7-13 18:31
  • 签到天数: 127 天

    连续签到: 1 天

    [LV.7]常住居民III

    19

    主题

    1229

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    6124
    最后登录
    2024-12-19
    发表于 2015-5-28 17:49:32 | 显示全部楼层
    安 发表于 2013-11-25 14:47
    可以的,通过定义得到GPIO的实际操作地址。也可以用##连接符来实现。
    比如 #define BSP_LED(n)  GPIO##n##_ ...

    第一次看到这种方式,学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-26 19:14 , Processed in 0.105445 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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