查看: 3604|回复: 2

uart走起,uart控制LED亮灭

[复制链接]
  • TA的每日心情
    无聊
    2016-8-6 23:33
  • 签到天数: 61 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-9-17 17:05:04 | 显示全部楼层 |阅读模式
    分享到:

    选择uart是因为L21上没有显示屏幕啊,想想那L22还是有优势的嘛。例程中有一个uart quick start,感觉L21上的例程都比较简单明了,非常有指导价值。


    首先是初始化,
    //! [setup_change_config]
        config_usart.baudrate    = 9600;
        config_usart.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;
        config_usart.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;
        config_usart.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;
        config_usart.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;
        config_usart.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3;
    //! [setup_change_config]
    从代码中很清晰的看到波特率是9600,然后从EDBG口输出。


    然后是初始化和使能
    //! [setup_set_config]
        while (usart_init(&usart_instance,
                EDBG_CDC_MODULE, &config_usart) != STATUS_OK) {
        }
        usart_enable(&usart_instance);

    主函数就更加简单,用到了两个函数
        usart_write_buffer_wait();
        usart_read_wait();

    因为先打开的是poll方式的,所以函数中都带有wait,也就是说等到处理完毕了,才退出函数执行。主要功能就是收到什么,再回显一下。
    file:///E:/Mywiz/temp/35f44d91-6da7-49cb-bbb4-f84d859f068b.png
    uart1.png
    然后我们和上次的结合一下,利用uart来控制板上的灯。收到0表示灭,收到1表示开。这时首先要把LED对应的管脚配置成输出。
        port_get_config_defaults(&pin);
        pin.direction = PORT_PIN_DIR_OUTPUT;
        port_pin_set_config(LED0_PIN, &pin);

    然后设置成开灯
        port_pin_set_output_level(LED0_PIN,LED_0_ACTIVE);
    在收到串口指令后做判断:
                if (temp=='0')            {   
                    port_pin_set_output_level(LED_0_PIN,LED_0_INACTIVE);
                    usart_write_buffer_wait(&usart_instance, ledoff, sizeof(ledoff));
                }
                if (temp=='1')            {
                    port_pin_set_output_level(LED_0_PIN,LED_0_ACTIVE);
                    usart_write_buffer_wait(&usart_instance, ledon, sizeof(ledon));
                }   

    下面看效果:
    uart12.png
    file:///E:/Mywiz/temp/1ab78157-3bed-41be-86f4-9c05af4ea319.png
    这里有个很奇怪的地方,接收的temp是2个byte的uint16_t,而实际发送的只是char啊?而且改成uint8就收不到字符了,着实奇怪。



    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-9-18 08:30:47 | 显示全部楼层
    多谢楼主分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-12-17 15:58:40 | 显示全部楼层
    方便提供程式碼嗎?
    v1216oldman@gmail.com
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 15:22 , Processed in 0.141877 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.