查看: 4847|回复: 8

[原创] 【LPC824lite】之usart_basic实验

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

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2016-11-7 00:28:42 | 显示全部楼层 |阅读模式
    本帖最后由 胤幻1988 于 2016-11-7 00:33 编辑

    我觉得,LPC824Lite配套的每个程序都有其精妙的地方,细细推敲,也能有所收获。如这个usart_basic实验,本来我就把它当作最简单的串口通讯实验运行一下 ,看下通讯情况。可但我看到它的程序时,却忍不住一行一行推敲起来(为什么要这么写)?
    1、如;Board_UARTPutSTR("build date: " __DATE__ " build time: " __TIME__ "\n");这行里面就有2个C默认的宏" __DATE_"和" __TIME__ "。
    那还有哪些呢?
    答案如下:
    ANSI C标准中有几个标准预定义宏(也是常用的):
    __LINE__:在源代码中插入当前源代码行号;
    __FILE__:在源文件中插入当前源文件名;
    __DATE__:在源文件中插入当前的编译日期
    __TIME__:在源文件中插入当前编译时间;
    __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;
    __cplusplus:当编写C++程序时该标识符被定义。
    编译器在进行源码编译的时候,会自动将这些宏替换为相应内容。

    2、如事件标志为:sys_event 用法灵活常见
    初始为0:
    static uint32_t sys_event=0;

    当发生中断时,被复位为1.
    #define        EV_TICK_CT_DISPLAY                0x01
    void SysTick_Handler(void)
    {
            tick_ct += 1;
            if ((tick_ct % 50) == 0)        Board_LED_Toggle(LED0);
            if ((tick_ct % 100) == 0)        Board_LED_Toggle(LED1);
            if ((tick_ct % 200) == 0)        Board_LED_Toggle(LED2);


            if ((tick_ct % 100) == 0)        sys_event |= EV_TICK_CT_DISPLAY;
    }

    显然可知:当tick_ct为百个整数倍时,sys_event=1;

    当被复位为一时,又满足while循环里面的函数。函数处理将sys_event又清0.
            while (1) {
                    __WFI();
                    if (sys_event & EV_TICK_CT_DISPLAY) {
                            sys_event &= ~EV_TICK_CT_DISPLAY;
                            Board_UARTPutSTR("system tick: ");
                            Board_itoa(tick_ct, out_str, 10);
                            Board_UARTPutSTR(out_str);
                            Board_UARTPutChar(0x0d);
                    }
            }

    显然可知,当sys_event=1时,满足if条件。串口输出:system tick计数的个数,当然个数只能为百的整数倍,同时将sys_event再次置0.以满足下一次条件的触发。
    这种结构很通用,也很经典~
    3、对于这种库函数包装式的写法,如果想要确切了解每一层封装的含义或者底层寄存器的操作,如何查找,可选择变量(要了解的量)右击,选择"Define"即可。有事后,有的程序define无反应,是因为未设置查看信息选项造成的,可这样设置,然后重新编译即可。如图:
    define设置.png
    要把Browse information前面勾上即可。
    好了,就这些。睡觉了~



    评分

    参与人数 1NXP金币 +5 收起 理由
    肖久 + 5

    查看全部评分

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

    使用道具 举报

  • TA的每日心情
    开心
    2021-7-30 13:41
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    161

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    387
    最后登录
    2021-12-16
    发表于 2016-11-7 08:29:31 | 显示全部楼层
    谢谢分享!!
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-2-13 08:29
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    531

    主题

    2048

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    210
    最后登录
    2018-8-14
    发表于 2016-11-7 08:36:52 | 显示全部楼层
    非常棒,赞一个
    签到 签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-1-24 08:47
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    524

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1267
    最后登录
    2017-4-19
    发表于 2016-11-7 08:37:18 | 显示全部楼层
    谢谢分享                             
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-6-6 08:45
  • 签到天数: 328 天

    连续签到: 1 天

    [LV.8]以坛为家I

    10

    主题

    1047

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    2006
    最后登录
    2019-5-1
    发表于 2016-11-7 09:28:36 | 显示全部楼层
    点赞,点赞
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-2-12 15:48
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    12

    主题

    425

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1084
    最后登录
    2018-2-12
    发表于 2016-11-7 11:03:31 | 显示全部楼层
    期待你的作品
    不知道大家放假了吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-15 16:32
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    54

    帖子

    0

    注册会员

    Rank: 2

    积分
    103
    最后登录
    2025-6-30
    发表于 2016-11-21 19:15:46 | 显示全部楼层
    这个好,找了好久了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2016-12-24 18:55:03 | 显示全部楼层
    没有礼包        
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-7 09:36
  • 签到天数: 23 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    340

    帖子

    0

    高级会员

    Rank: 4

    积分
    778
    最后登录
    2018-5-25
    发表于 2017-1-22 08:39:03 | 显示全部楼层
    好文,谢谢分享!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-23 10:53 , Processed in 0.104338 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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