注册 登录
查看: 7157|回复: 30

[K60] 山外K60 串口输出问题,printf输出问题

[复制链接]
发表于 2013-5-2 12:22:41 | 显示全部楼层 |阅读模式
我们的启动信息是通过 printf 打印,在启动代码中打印的。

printf 函数的输出管脚配置及波特率设置可以看我们的三天入门教程,在 k60_fire.h(新版本V5.0在 board\ini\fire_MK60_conf.h ,默认是 UART3。新版本V5.1在app/inc/MK60_conf.h ,默认是 UART3。里设置:
#define FIRE_PORT           UART1                    //新版本改名为 :VCAN_PORT
#define FIRE_BAUD           19200                  
  //新版本改名为 :VCAN_BAUD





不同版本的例程可能有不同的管脚配置,请自己看自己的例程是设置多少,使用到什么端口。

另外,由于printf所用的端口已经在系统启动的时候初始化了,所以不需要再在 main函数里初始化串口,直接用printf所用的端口即可。



printf所用的管脚,我们的管脚都可以快速配置的:在工程 fire_drivers_cfg.h 里有详细的说明(一天攻破 K60 V5.0在:\Board\inc\FIRE_PORT_cfg.h ,一天攻破 K60 V5.1在:\app\inc\PORT_cfg.h (打开看看,很容易知道如何配置的)

例如下述的,假设是 选择 uart3,那么就是 C16 和 C17 管脚



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2013-5-5 18:33:47 | 显示全部楼层
就是 串口 printf 的管脚, 需要设置
回复 支持 反对

使用道具 举报

发表于 2013-5-23 09:25:11 | 显示全部楼层
顶山外哥
回复 支持 反对

使用道具 举报

发表于 2013-6-3 19:35:21 | 显示全部楼层
山外哥求QQ指教,我的全部正确,但是串口软件依然无显示
回复 支持 反对

使用道具 举报

发表于 2013-7-30 18:21:00 | 显示全部楼层
既然这样为啥你们的例程在调用printf函数之前,还要在主函数中初始化串口呢
,这些是为什么呢   是不是要做些修改呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-8-25 20:35:36 | 显示全部楼层
山外哥。关于串口打印long double应该用哪个?用printf写%lf不行、写%g也不行。究竟该写什么?
回复 支持 反对

使用道具 举报

发表于 2013-8-25 20:38:11 | 显示全部楼层
windqj 发表于 2013-8-25 20:35
山外哥。关于串口打印long double应该用哪个?用printf写%lf不行、写%g也不行。究竟该写什么?

不支持 long double 和 float 的
回复 支持 反对

使用道具 举报

发表于 2013-8-26 14:52:29 | 显示全部楼层
风落小鱼 发表于 2013-8-25 20:38
不支持 long double 和 float 的

那个USART1_printf也不支持么
回复 支持 反对

使用道具 举报

发表于 2014-3-8 14:52:38 | 显示全部楼层
风落小鱼 发表于 2013-8-25 20:38
不支持 long double 和 float 的

其他地方都支持的,这个是山外库的问题吗?请问哪有支持float的printf代码?
回复 支持 反对

使用道具 举报

发表于 2014-3-8 14:55:11 | 显示全部楼层
木君之上 发表于 2014-3-8 14:52
其他地方都支持的,这个是山外库的问题吗?请问哪有支持float的printf代码?

现在的版本,我们是直接调用IAR的库的,不是我们的库自带的函数。
回复 支持 反对

使用道具 举报

发表于 2014-5-3 21:32:21 | 显示全部楼层
好棒!》》》》》》》》》》》》》》》》》》》》》》
回复 支持 反对

使用道具 举报

发表于 2014-11-5 10:15:48 | 显示全部楼层
额,都改了,但还是不行
回复 支持 反对

使用道具 举报

发表于 2014-11-5 13:10:13 | 显示全部楼层
冰狼 发表于 2014-11-5 10:15
额,都改了,但还是不行

不会吧,你用的是山外哥的板子吗?
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-5 18:45:36 | 显示全部楼层
虚竹 发表于 2014-11-5 13:10
不会吧,你用的是山外哥的板子吗?

额,不是,但应该不是板子的问题
回复 支持 反对

使用道具 举报

发表于 2014-11-29 18:50:14 | 显示全部楼层
怎么输出float型变量啊 = =或者有什么解决方法?
回复 支持 反对

使用道具 举报

发表于 2014-12-13 02:24:30 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-8 14:55
现在的版本,我们是直接调用IAR的库的,不是我们的库自带的函数。

栾端静 发表于 2014-3-19 14:11
呵呵,帮人的同时,直接也学到东西的。
山外哥论坛的淘贴里,很多资料值得去看的


#include "common.h"
#include "include.h"

void main()
{
    char ch;
    uart_init(UART4,115200);     //初始化串口(由于 printf 函数 所用的端口就是 UART3,已经初始化了,因此此处不需要再初始化)
    printf("\n山外初学123论坛:www.vcan123.com");
    uart_putstr(UART4 ,"\n\n\n接受数据,并进行发送:");         //发送字符串
    while(1)
    {
      if(uart_query(UART4)!= 0)  //查询是否接收到数据                              
        {
            uart_getchar(UART4,&ch);                               //等待接收一个数据,保存到 ch里
            uart_putchar(UART4, ch);                                //发送1个字节
        }
        if(uart_querychar(UART4, &ch) != 0)                        //查询接收1个字符
        {
            uart_putchar(UART4, ch);                                //发送1个字节
        }

        //注:上面两个 if 的实现功能都是一样的。

        //uart_getchar 和 uart_querychar 的区别在于 ,前者 需要等待接收到数据,后者查询是否接收到,接收到就接收,接收不到就退出
    }
}


我用蓝牙进行发送,也用UART4,但是发送数据,串口接收不到。。。这是什么问题?求助山外哥。。。在底层已经将默认的UART3换成UART4了

回复 支持 反对

使用道具 举报

发表于 2015-1-25 07:52:42 | 显示全部楼层
出现乱码这是怎么回事?求大神指导

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-5-3 18:15:12 | 显示全部楼层
乱码这个应该是波特率设置的不对
回复 支持 反对

使用道具 举报

发表于 2015-6-2 20:19:55 | 显示全部楼层
顶顶顶
回复 支持 反对

使用道具 举报

发表于 2015-8-4 17:41:30 | 显示全部楼层
void main()
{
    char str[100];

  // uart_init(UART3,115200);     //初始化串口(由于 printf 函数 所用的端口就是 UART3,已经初始化了,因此此处不需要再初始化)

    printf("\n山外论坛:www.vcan123.com");

    DELAY_MS(500);
  //  uart_putstr    (UART3 , "\n\n\n请上位机发送多个字符:");             //发送字符串

    while(1)
    {
        if(uart_querystr (UART3,str,sizeof(str)-1) != 0)                //查询是否接收到字符串
        {

            uart_putstr    (UART3 , "\n\n\n请上位机发送多个字符:");             //发送字符串
            uart_putstr (UART3, "\n接收到字符串:");                    //发送字符串
            uart_putstr (UART3, (uint8 *)str);                          //发送字符串
            printf("\n山外论坛:www.vcan123.com"); printf加在这里在串口才有反应   其他的都正常

        }
    }
}


回复 支持 反对

使用道具 举报

发表于 2015-8-9 17:32:25 | 显示全部楼层
不懂                  
回复 支持 反对

使用道具 举报

发表于 2015-10-23 22:51:59 | 显示全部楼层
hjjas 发表于 2015-8-4 17:41
void main()
{
    char str[100];

我用你的程序去调试,为什么只是在       if(uart_querystr (UART3,str,sizeof(str)-1) != 0)                //查询是否接收到字符串 这一句停止了。 我随便输入了一个数,串口没有回复。。可以讲解下吗


回复 支持 反对

使用道具 举报

发表于 2015-12-6 20:13:19 | 显示全部楼层
;p
回复 支持 反对

使用道具 举报

发表于 2015-12-13 10:41:03 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-8 14:55
现在的版本,我们是直接调用IAR的库的,不是我们的库自带的函数。

山外哥,为啥我把直立中级篇的printf的串口输出端口改了之后,电机就不转了,测得的脉冲数也一直是零
回复 支持 反对

使用道具 举报

发表于 2015-12-13 10:41:58 | 显示全部楼层
2240090869 发表于 2015-12-13 10:41
山外哥,为啥我把直立中级篇的printf的串口输出端口改了之后,电机就不转了,测得的脉冲数也一直是零

是否管脚有冲突了?

回复 支持 反对

使用道具 举报

发表于 2015-12-13 11:25:53 | 显示全部楼层
山外メ雲ジ 发表于 2015-12-13 10:41
是否管脚有冲突了?

山外哥,管脚应该没有冲突,因为别人的程序烧进去之后就是正常的,还有我想问一下,那个在线调试是怎么弄呢,它只能在主函数里一步一步执行呀,让后到while(1)那就一直循环

回复 支持 反对

使用道具 举报

发表于 2015-12-14 18:51:51 | 显示全部楼层
2240090869 发表于 2015-12-13 11:25
山外哥,管脚应该没有冲突,因为别人的程序烧进去之后就是正常的,还有我想问一下,那个在线调试是怎么弄 ...

设置断点
回复 支持 反对

使用道具 举报

发表于 2016-1-15 00:26:47 | 显示全部楼层
hjjas 发表于 2015-8-4 17:41
void main()
{
    char str[100];

你的问题解决了吗?我的也是的
回复 支持 反对

使用道具 举报

发表于 2016-3-3 10:34:35 | 显示全部楼层
wzwajy 发表于 2016-1-15 00:26
你的问题解决了吗?我的也是的

同样遇到了,感觉山外的例程可以发送数据,可是没法接受数据,我用的是蓝牙当串口
回复 支持 反对

使用道具 举报

发表于 2016-3-15 16:15:47 | 显示全部楼层
山外哥,我在调试串口的时候,上位机显示的值总是不对,所以我怀疑是波特率不匹配?
用的是UART0,板子上的晶振是25M的,我用的山外库以前定义的外部晶振是50MHz的,我就把那个宏定义改成25了
难道除此之外还要改别的设置吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2016-3-15 16:16:34 | 显示全部楼层
今我非昔我 发表于 2016-3-15 16:15
山外哥,我在调试串口的时候,上位机显示的值总是不对,所以我怀疑是波特率不匹配?
用的是UART0,板子上 ...

用的是 MK60FX512VLQ15
回复 支持 反对

使用道具 举报

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

本版积分规则

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