一、源自于:大侠有话说
1.假如你在学习单片机之前学过C言语,那么必定知道printf这个函数.它最最好用的功用
除了打印你想要的字符到屏幕上外,还能把数字进行格式化.例如十进制的33,用十进制
方法输出便是33,用十六进制的方式就输出成21,假如用字符方式输出,那便是ASCII码
表对应的’!’.
2. 51年代,一些人软件仿真的时分也很喜爱运用printf,但实践代码运转中,用的人则不多,因
为甭说51年代,便是用AVR的,也会觉得printf这个函数消耗的CPU资源适当可观.所以
printf在8位单片机年代,了解的人确实不多.但到了ARM年代,状况则大为不同.究竟
ARM的处理才能和51彻底不是一个等级,这使得不少人开端喜爱运用printf在实践项目
中作为调试进程的串口输出.由于它的格式化功用实在是适当便当.
而本例程便是教会你这么运用printf.
3.程序把printf的输出目标设定为串口1.有一个规范的函数是必需求自己界说的,那便是
fputc,把这个函数的功用写成串口输出一个字符.主张在串口的初始化模块中界说
int fputc(int ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
return ch;
}
然后记住一点,便是MicroLib要勾上.其实大部分状况下,都主张运用MDK顺便的
MicroLib,这东西是有必定用处的.留下今后再更多地介绍.
以上两步做好后,还记住要包括printf的头文件:
#include
那么,一切作业就功德圆满了,你能够纵情的测验printf带来的便当.
4.别的我们是否意识到一点,便是printf输出到哪,其实是由fputc函数决议的.所以假如有兴
趣,能够改写这个fputc函数,使得其printf的目标是DX-32板上的TFT屏或许黑白屏.我们有
爱好的无妨试试.
二、源自于:STM32开发板(正点原子)
//参加以下代码,支撑printf函数,而不需求挑选use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//规范库需求的支撑函数
struct __FILE
{
int handle;
};
FILE __stdout;
//界说_sys_exit()以防止运用半主机形式
_sys_exit(int x)
{
x = x;
}
//重界说fputc函数 ,串口1
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送结束
USART1->DR = (u8) ch;
return ch;
}
#endif