STC做玩具 发表于 2022-12-7 15:44:07

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函数同样也是输出乱码……

有遇到同样的问题吗?

神农鼎 发表于 2022-12-7 16:38:56

用 STC32G数据手册中的 串口1,2,3,4的测试程序先测试下 https://www.stcai.com/filedownload/635668

乘风飞扬 发表于 2022-12-7 17:23:10

我参考你的方法写了个例程,测试没有问题,你参考一下。
烧录时IRC主频设置24MHz,串口波特率:115200.






zhp 发表于 2022-12-8 09:15:30

由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3中模式中的一种

蔡付强 发表于 2024-10-27 15:38:47

zhp 发表于 2022-12-8 09:15
由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3 ...

谢谢大神,原因写得也很详细

angalp 发表于 2024-10-28 08:32:37

zhp 发表于 2022-12-8 09:15
由于使用printf函数的参数里面包含了字符串指针
所以存储器模式必须选择4字节,如下图所示一定要选择后面3 ...

感谢大佬,我也学到了。

llyymm 发表于 2025-1-22 15:35:35

细节问题,我又学了一个技巧
页: [1]
查看完整版本: STC32G12K128 printf 怪异事件