目录
IDE版本:PSoC Creator 4.4
本文根据PSoc官方文档描述了如何重定向printf的方法以及如何使用PSoC配置USART,如果不知道如何配置USART可以往下看USART配置方法。
重定向printf方法
Printf()函数使用模型
printf()函数格式化一系列字符串和数值,并构建一个写入输出流的字符串。该函数可以与UART结合使用,以简化数据的格式化和传输。本节描述允许在UART组件中使用printf()函数所需的代码。
printf()函数在不同的编译器中有不同的实现。每个编译器都提供了一个负责发送数据的函数。下面列出了支持的编译器的这些函数:
Compiler | Function |
GCC | _write() |
MDK | fputc() |
RVDS | fputc() |
IAR | __write() |
应用程序应该修改这些函数,以调用通信组件API,通过选定的接口(在本例中是UART接口)发送数据。
下面的代码示例SCB UART组件使用了一个名为"SCB"的示例名:
#include <project.h>
#include <stdio.h>
#if defined (__GNUC__)
/* Add an explicit reference to the floating point printf library to allow
the usage of floating point conversion specifier. */
asm (".global _printf_float");
/* For GCC compiler revise _write() function for printf functionality */
int _write(int file, char *ptr, int len)
{
int i;
for (i = 0; i < len; i++)
{
SCB_UartPutChar(*ptr++);
}
return(len);
}
#elif defined(__ARMCC_VERSION)
/* For MDK/RVDS compiler revise fputc() function for printf functionality */
struct __FILE
{
int handle;
};
enum
{
STDIN_HANDLE,
STDOUT_HANDLE,
STDERR_HANDLE
};
FILE __stdin = {STDIN_HANDLE};
FILE __stdout = {STDOUT_HANDLE};
FILE __stderr = {STDERR_HANDLE};
int fputc(int ch, FILE *file)
{
int ret = EOF;
switch(file->handle)
{
case STDOUT_HANDLE:
SCB_UartPutChar(ch);
ret = ch;
break;
case STDERR_HANDLE:
ret = ch;
break;
default:
file = file;
break;
}
return(ret);
}
#elif defined (__ICCARM__)
/* For IAR compiler revise __write() function for printf functionality */
size_t __write(int handle, const unsigned char * buffer, size_t size)
{
size_t nChars = 0;
for (/* Empty */; size != 0; --size)
{
SCB_UartPutChar(*buffer++);
++nChars;
}
return (nChars);
}
#endif /* (__GNUC__) */
int main()
{
uint32 i = 444444444;
float f = 55.555f;
CyGlobalIntEnable; /* Enable interrupts */
SCB_Start(); /* Start communication Component */
/* Use printf() function which will send formatted data through
* UART (SCB mode) */
printf("Test printf function. long: %ld, float: %f \n",i,f);
for(;;)
{
/* Place your application code here. */
}
}
(以上示例中描述了之前提到的四种编译器的重定向printf方法,可根据需要删减不需要的部分)
usart简单配置
(真的只是简单配置一下)
2.左侧找到TopDesign.cysch打开
3.在右侧Communications中找到UART(SCB mode)
4.修改想要的控件名
5.调整需要的参数
6.右侧打开Design Wide Resources
7.将右侧的控件拖选到需要配置的引脚上
8.点击左上角编译按钮,完成
以上配置完成后USART就算配置好了,可以继续回去看printf重定向教程了。