查看: 2191|回复: 1

【SAMV71 XPlained】+MDK 5.1+USART

[复制链接]
  • TA的每日心情
    开心
    2018-6-10 20:29
  • 签到天数: 711 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-15 21:50:55 | 显示全部楼层 |阅读模式
    分享到:
    串口是学习每个MCU都逃脱不了的,这就是宿命
    试验现象:

    QQ截图20151115214926.png
    我们先来看看官方提供的usart例程,以下的是main函数的起始的几行:

    QQ截图20151115213541.png
           我惊奇的发现这段程序竟然还没有执行串口的相关的配置就开始用printf输出信息了,这怎么可能呢?
    想在程序中直接通过printf的定义跳转是不可能的,应为printf是标准C库里面的函数,只是我我们的程序中对它重新定义了输出接口,把原先的直接在屏上打印出信息改成了通过串口输出这个信息。经过我细心的查看原来是在DBG_PutChar这个输出字符的函数中有做串口的初始化,读者可能会问我都没有看到程序在执行这个函数啊?其实在串口的printf的重新定义的putchar函数中直接调用了DBG_PutChar:
    1. extern WEAK signed int putchar( signed int c )
    2. {
    3.         DBG_PutChar( c );

    4.         return c;
    5. }
    复制代码
    DBG_PutCha:
    1. extern void DBG_PutChar( uint8_t c )
    2. {
    3. #if defined CONSOLE_ON_UART
    4.         Uart *pUart=CONSOLE_UART;
    5.         if ( !_ucIsConsoleInitialized )
    6.         {
    7.                 DBG_Configure(CONSOLE_BAUDRATE, BOARD_MCK);
    8.         }
    9.         // Wait for the transmitter to be ready
    10.         while ((pUart->UART_SR & UART_SR_TXEMPTY) == 0);

    11.         // Send character
    12.         pUart->UART_THR = c;
    13.         // Wait for the transfer to complete
    14.         while ((pUart->UART_SR & UART_SR_TXEMPTY) == 0);
    15. #endif

    16. #if defined CONSOLE_ON_USART
    17.         Usart *pUsart=CONSOLE_Usart;
    18.         if ( !_ucIsConsoleInitialized )                                            //询问是否初始化了串口,没有的话执行串口的初始化
    19.         {
    20.                 DBG_Configure(CONSOLE_BAUDRATE, BOARD_MCK);
    21.         }
    22.         // Wait for the transmitter to be ready
    23.         while ((pUsart->US_CSR & US_CSR_TXEMPTY) == 0);

    24.         // Send character
    25.         pUsart->US_THR = c;

    26.         // Wait for the transfer to complete
    27.         while ((pUsart->US_CSR & US_CSR_TXEMPTY) == 0);
    28. #endif
    29. }
    复制代码
    到了这一步别的已经不是问题了。


    回复

    使用道具 举报

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

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-11-16 10:02:12 | 显示全部楼层
    赞,串口是学习每个MCU都逃脱不了的,这就是宿命
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 01:16 , Processed in 0.132251 second(s), 18 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.