STM8的UART问题

stonepal   2009-10-16 16:50 楼主
STM8的UART初始化完成后,不能发送数据,按例程中的再后面加上这个函数之后才能发送,想问一下大侠们,是不是在发送前还需要什么操作。。
char putchar (char c)
{
    if (c == '\n')
    {
      /* put '\r' to hardware here */
      /* Wait transmission is completed : otherwise the first data is not sent */
      while (!(UART2_SR & 0x40));
      UART2_DR = ('\r');
      /* Wait transmission is completed */
      while (!(UART2_SR & 0x40));
    }
    /* put c to hardware here */
    /* Wait transmission is completed : otherwise the first data is not sent */
    while (!(UART2_SR & 0x80));
    UART2_DR = (c);
    /* Wait transmission is completed */
    while (!(UART2_SR & 0x80));
    return (c);
}

回复评论 (8)

                                 不知道楼主在说什么,是要用标准C的Printf函数吗?
点赞  2009-10-16 23:52
                                 这是资料里面给的例子,是用的Printf函数。。
点赞  2009-10-17 22:35
                                 程序有点乱,不知道这个程序能实现什么功能
点赞  2009-10-18 18:55
                                 这是个判断语句,而且有返回值,具体干什么用的,也不是很清楚
点赞  2009-10-18 19:33
                                 Cosmic的printf函数库没有实现对硬件支持,因此你要自己做具体的putchar函数,这样你可以任意定义printf输出到UART1,UART2,还是UART3,甚至你都可以将其定义输出到SPI,CAN
点赞  2009-10-19 09:18
                                 哦,明白,谢谢了。
点赞  2009-10-19 11:19
我出遇到同样的问题了,我的情况是串口初始化后不能发送数据,要接收一字节后才能发送数据.手动复位后一切正常,但上电复位后却需要接收一字节才可发送,真是什么怪问题都有!
点赞  2011-6-4 09:24

回复 楼主 stonepal 的帖子

楼主您好!  想请教您个问题,我在用STM8S207的UART3,奇怪的是我能发送数据,却接收不了从串口调试工具上发送的数据。 不知道问题出在哪里  还请楼主多指点  271360230  QQ  可以的话,加下QQ   方便交流
点赞  2011-10-25 21:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复