打印

在PSoC 中使用printf函数

[复制链接]
4544|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dsll2010|  楼主 | 2015-6-12 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
平时调试工程,看串口日志是很方便的手段。

在Creator实现printf功能很方便,步骤如下:

1. 软硬环境:Creator 3.1 SP2或以上, PSoC 4 或 PSoC BLE
2. 操作过程

(1) 工程中拖一个SCB UART组件。
(2) 配置rx/tx接口,如果是使用BLE Kit,直接配置到P1.4/P1.5即可。如果是042 Kit,还需要飞线跳一下。
(3) 在Main.c中添加必要内容:(以下默认使用gcc编译器,其他编译器需要参考UART的组件手册)

#include <stdio.h>

int _write(int file, char *ptr, int len)
{
    int i;
    for (i = 0; i < len; i++)
    {
        UART_UartPutChar(*ptr++);
    }
    return len;
}

(4) main()函数中添加:

UART_Start();

(5) 打开cydwr文件,修改system > Heap sizee为0x200或更大。

(6) 在需要的地方使用printf(...)



(完)

沙发
关小波522| | 2015-6-12 22:28 | 只看该作者
学习了,这个在调试的过程中用处比较大

使用特权

评论回复
板凳
Larkinn| | 2015-8-20 17:18 | 只看该作者
真是天感谢楼主了。。。。。。解决了困扰我许久的问题~~~~~~~~~~~~~~~~~

使用特权

评论回复
地板
有妖气| | 2015-8-27 11:27 | 只看该作者
还可以这样,学习到了。

使用特权

评论回复
5
gll123| | 2015-8-27 14:57 | 只看该作者
赞赞赞,超级好用

使用特权

评论回复
6
丁弋宇| | 2015-8-27 14:58 | 只看该作者
用SW_Tx_UART不好吗?

使用特权

评论回复
7
cbojan| | 2016-4-12 21:58 | 只看该作者
感谢啦!!终于解决问题了!!!!原来还有这样的设定!!

使用特权

评论回复
8
lclxjy| | 2017-5-23 15:25 | 只看该作者
请问我的printf函数不能打印出float型变量,其余都是正常的,是什么原因呢?

使用特权

评论回复
9
gll123| | 2017-5-23 16:47 | 只看该作者
        uint32 i = 444444444;
        float f = 55.555f;
    char *s;
    //UART_SetCustomInterruptHandler(&MyIntHandler);
   
   // isr_StartEx(UART_SCB_IRQ_Interrupt);
        UART_Start(); /* Start communication component */
        CyGlobalIntEnable; /* Enable interrupts */
   
        /* Use printf() function which will send formatted data through
        * UART (SCB mode) */
   
        UART_UartPutString("Welcome\r\n");
    sprintf(s, "%10.3f", 3.1415626);
       
    printf("Test printf function. long: %ld, float: %s \n",i,s);
        for(;;)
        {

        }

你需要把这个浮点型的数据做一个格式转换,然后就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

118

帖子

9

粉丝