查看: 2161|回复: 2

[分享] 【LPC824lite】之GPIO MASK功能

[复制链接]
  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

    最后登录
    2024-2-5
    发表于 2020-10-8 16:03:48 | 显示全部楼层 |阅读模式
    本帖最后由 胤幻1988 于 2020-10-8 16:08 编辑

    最近一个项目可能用到PLC824,之前也在社区获取过LPC824Lite。但是时间已过去2
    年左右,加上一直在用STM32,也忘得差不多了。当时也就是跑了例子,没有去细细分析。
    翻出LPC824Lite,再重新温习一遍。
    在第一个GPIO的例子,就发现了点之前没注意的东西。NXP设计的概念还是很实用和超前
    的,但是不知为啥就是没拼过STM32。
    打开GPIO的第一个例子:
    1.jpg

    //LED位的定义
    #define PORT_MASK       0x180F2010 /*(1<<7 | 1<13 | 1<<16 | 1<<17 |1<<27 | 1<<28 | 1<<18) 8个LED对应的GPIO*/
    /*屏蔽除LED外的所有位*/
    Chip_GPIO_PortSetMask(LPC_GPIO_PORT, 0, ~PORT_MASK);

    go to definition 当前函数,跳转到:
    STATIC INLINE void Chip_GPIO_PortSetMask(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t mask)
    {
            pGPIO->MASK[port] = mask;
    }

    查找相关资料发现:

    2.jpg

    这样一看就一目了然了。
    然后在原来的systick的中断中修改一下程序,原程序感觉未能明显提现这一功能:
    里面的这个函数就是对MPIN寄存器进行操作的:
    Chip_GPIO_PortSetMaskedState(LPC_GPIO_PORT, 0, 0xFFFFFFFF);
    go to definition 当前函数,跳转到:
    STATIC INLINE void Chip_GPIO_PortSetMaskedState(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)
    {
            pGPIO->MPIN[port] = value;
    }

    我们修改中断代码为:
    03.jpg
    直接对MPIN0全写0,或全写1,看看其他引脚是否会受影响。
    编译下载,观察现象:
    经示波器检测,其他IO口不受影响。8个LED闪烁。
    就是优龙的代码层层包裹,感觉包的有点多了,代码风格还是不错的。国产的板子注释
    为啥还搞了英文。对我等学渣也是不友好啊。
    VID_20201008_160050.gif

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    97

    主题

    836

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3975
    最后登录
    2024-4-16
    发表于 2020-10-8 16:11:04 | 显示全部楼层
    假期还在赋能,厉害了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    21 分钟前
  • 签到天数: 1479 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92623
    最后登录
    2024-4-26
    发表于 2020-10-9 11:38:51 | 显示全部楼层
    NXP在文档方面感觉比较高冷,一直是英文版的,也没出个中文版。其实GPIO操作比32确实强很多,例如对BIT位的SET/RESET和NOT翻转,都是很简单方便的操作,不需要搞什么逻辑与或者逻辑或运算的位操作。 02.png 01.png 03.png 06.png 04.png 05.png 07.png 08.png 09.png 10.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-26 10:15 , Processed in 0.117886 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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