LPC824lite之usart_basic实验

分享到:

我觉得,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无反应,是因为未设置查看信息选项造成的,可这样设置,然后重新编译即可。如图:

【LPC824lite】之usart_basic实验

要把Browse information前面勾上即可。

 

更多恩智浦(NXP)及技术文章请关注:
NXP中文官方:https://www.nxp.com/zh-Hans/
NXP中文技术论坛:https://www.nxpic.org.cn/

 

继续阅读
LPC824lite之usart_basic实验

我觉得,LPC824Lite配套的每个程序都有其精妙的地方,细细推敲,也能有所收获。如这个usart_basic实验,本来我就把它当作最简单的串口通讯实验运行一下 ,看下通讯情况。可但我看到它的程序时,却忍不住一行一行推敲起来(为什么要这么写)?

LPC824 lite入门教程一 时钟系统

拿到板子很久了,由于工作忙,一直没有时间仔细评测LPC824 lite,很抱歉,后面我会抽取更多时间带大家入门这款芯片,今天先带入门LPC824 的时钟系统。对于入门一款芯片来说,首先我们要了解的是时钟系统,如果时钟都配置不好,那芯片工作就不会正常,甚至工作不起来。LPC的运行时钟30MHz。