STM8的UART初始化完成后,不能发送数据,按例程中的再后面加上这个函数之后才能发送,想问一下大侠们,是不是在发送前还需要什么操作。。
char putchar (char c)
{
if (c == '\n')
{
/* put '\r' to hardware here */
/* Wait transmission is completed : otherwise the first data is not sent */
while (!(UART2_SR & 0x40));
UART2_DR = ('\r');
/* Wait transmission is completed */
while (!(UART2_SR & 0x40));
}
/* put c to hardware here */
/* Wait transmission is completed : otherwise the first data is not sent */
while (!(UART2_SR & 0x80));
UART2_DR = (c);
/* Wait transmission is completed */
while (!(UART2_SR & 0x80));
return (c);
}
不知道楼主在说什么,是要用标准C的Printf函数吗?
这是个判断语句,而且有返回值,具体干什么用的,也不是很清楚
Cosmic的printf函数库没有实现对硬件支持,因此你要自己做具体的putchar函数,这样你可以任意定义printf输出到UART1,UART2,还是UART3,甚至你都可以将其定义输出到SPI,CAN
我出遇到同样的问题了,我的情况是串口初始化后不能发送数据,要接收一字节后才能发送数据.手动复位后一切正常,但上电复位后却需要接收一字节才可发送,真是什么怪问题都有!
回复 楼主 stonepal 的帖子
楼主您好! 想请教您个问题,我在用STM8S207的UART3,奇怪的是我能发送数据,却接收不了从串口调试工具上发送的数据。 不知道问题出在哪里 还请楼主多指点 271360230 QQ 可以的话,加下QQ 方便交流