资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
【原创】STM32Printf函数实现方法2012-04-3019:30:2|分类:stm32|字号大中小订阅今天调试了stm32f407的ADC,一切顺利,然而用串口发送ADC结果时都是16进制数,看着很不爽。于是打算用用牛B的“printf”函数,按照以前的做法,在main文件中添加了“stdio.h”,写好了“printf”函数,沏杯茶,打算边品茶边坐等结果,然而这一坐竟坐了半天也没见结果。一调试发现程序停在了printf函数处,百思不得其解,百度之,得答案,不敢独享,分享如下:STM32串口通信中使用printf发送数据配置方法(开发环境KeilRVMDK)标签:STM32串口通信printf方法201-06-293:29在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。下面就说一下使用printf需要做哪些配置。有两种配置方法:一、对工程属性进行配置,详细步骤如下1、首先要在你的main文件中包含“stdio.h”(标准输入输出头文件)。2、在main文件中重定义函数如下:/发送数据intfputc(intch,FILE*f)USART_SendDat(USART1,(unsignedchar)ch);/USART1可以换成USART2等while(!USART1-SR&USART_FLAG_TXE);return(ch);/接收数据intGetKy(void)while(!USART1-SR&USART_FLAG_RXNE);return(int)(USART1-DR&0x1F);这样在使用printf时就会调用自定义的fputc函数,来发送字符。3、在工程属性的“Target-CodeGenration选项中勾选UseMicroLIB”MicroLIB是缺省C的备份库,关于它可以到网上查找详细资料。至此完成配置,在工程中可以随意使用printf向串口发送数据了。二、第二种方法是在工程中添加“Regtarge.c”文件1、在main文件中包含“stdio.h”文件2、在工程中创建一个文件保存为Regtarge.c,然后将其添加工程中在文件中输入如下内容(直接复制即可)#include#include#pragmaiport(_use_no_semihosting_swi)extrnitSendChar(intch);/声明外部函数,在main文件中定义extrnitGetKy(void);struct_FILEinthandle;/Adwhatevryounedher;FILE_stdout;FILE_stdin;intfputc(intch,FILE*f)return(SendChar(ch);intfgetc(FILE*f)return(SendChar(GetKy();void_tywrch(intch)SendChar(ch);intferor(FILE*f)/YourimplentationferorreturnEOF;void_sy_exit(intreturn_code)label:gotlabel;/endleslop3、在main文件中添加定义以下两个函数intSendChar(intch)while(!USART1-SR&USART_FLAG_TXE);/USART1可换成你程序中通信的串口USART1-DR=(ch&0x1F);return(ch);intGetKy(void)while(!USART1-SR&USART_FLAG_RXNE);return(int)(USART1-DR&0x1F);至此完成配置,可以在main文件中随意使用printf。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号