
因为是这样的,在Keil\C51\LIB目录下有个putcharc文件,printf函数会调用该文件中的
putchar函数,putchar里面的使用的寄存器都是标准51的(如TI,SBUF),它
们的地址是固定的,由此可知printf函数只针对串口0。
如果想让printf函数支持串口1或串口2。。。那么修改putchar函数的寄存器即可,比如SBUF改为SBUF1。但是能不能用printf函数对串口0,串口1。。。都适用呢
或者重定义putchar函数。
#include<reg51h>
#define uchar unsigned char
sfr AUXR=0x8e;
sfr S2CON=0x9a;
sfr S2BUF=0x9b;
sfr BRT=0x9c;
sfr IE2=0xaf;
#define S2RI=0x01
#define S2TI=0x02
uartinit()
{
S2CON=0x50;
BRT=-12000000/32/9600;
AUXR=0x14;
IE2=0x01;
EA=1;
}
在STM32中,外围设备的配置思路比较固定。首先是使能相关的时钟,一方面是设备本身的时钟,另一方面如果设备通过IO口输出还需要使能IO口的时钟;最后如果对应的IO口是复用功能的IO口,则还必须使能AFIO的时钟。
其次是配置GPIO,GPIO的各种属性由硬件手册的AFIO一章详细规定,较为简单。
接着相关设备需要如果需要使用中断功能,必须先配置中断优先级,后文详述。
以上就是关于51单片机Keil C51下使用printf输出到串口,为何初始化了串口之后就可以使用了全部的内容,包括:51单片机Keil C51下使用printf输出到串口,为何初始化了串口之后就可以使用了、单片机stc12c5a60s2串口2工作方式0初始化子程序、简述stm32串口usart1的初始化步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)