STC32G12K128 printf 怪异事件
//配置好了串口2//定义了串口发送函数
void SendByte(u8 dat)
{
S2TI=0;
S2BUF = dat;
while(!S2TI);
}
void sendstr(char *str) //发送字符串函数
{
while(*str!='\0')
{SendByte(*str++);}
}
u8 test[]="1234abcd"
这些函数再其他 STC 8位机上一直没有问题,正常使用。
只是到 STC32G 下回发生问题
sendstr(tset);//这样是可以正确发送的。
sendstr("1234abdd");//这样发送出去的数据完全不对,感觉是指针不知道指到哪里去了。
这个问题导致printf函数同样也是输出乱码……
有遇到同样的问题吗?
用 STC32G数据手册中的 串口1,2,3,4的测试程序先测试下 https://www.stcai.com/filedownload/635668 我参考你的方法写了个例程,测试没有问题,你参考一下。
烧录时IRC主频设置24MHz,串口波特率:115200.
由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3中模式中的一种
zhp 发表于 2022-12-8 09:15
由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3 ...
谢谢大神,原因写得也很详细 zhp 发表于 2022-12-8 09:15
由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3 ...
感谢大佬,我也学到了。 细节问题,我又学了一个技巧
页:
[1]