zhangzhonghua 发表于 2023-12-29 10:34:39

乘风飞扬 发表于 2023-12-29 10:06
使用STC-USB Link1D工具的CDC1串口与芯片通信的话,芯片需要配置成UART串口与工具通信;
而例程是将芯片 ...

那么问题来了:芯片的P3.0,P3.1引脚的复用是怎么控制的?
因为它有3种用法,(1)并口P3.0,P3.1,(2)串口RxD,TxD,(3)USB口D-,D+,我怎么控制它们用做哪个?

比如,现在代码里面已经有USB配置了,如果我增加UART的代码,而且

S1_S:串口 1 功能脚选择位
00 RxD TxD -> P3.0 P3.1

USB和UART都跑,都使用这2引脚,那不是冲突了吗?

乘风飞扬 发表于 2023-12-29 11:01:20

zhangzhonghua 发表于 2023-12-29 10:34
那么问题来了:芯片的P3.0,P3.1引脚的复用是怎么控制的?
因为它有3种用法,(1)并口P3.0,P3.1,(2)串 ...

如果使用了USB功能,那么串口1就需要切到其它脚位通道使用。
每个脚位使能其中一种复用功能,除非你能处理好分时复用,否则不建议一个脚位做不同功能。

zhangzhonghua 发表于 2023-12-29 13:49:09

乘风飞扬 发表于 2023-12-29 11:01
如果使用了USB功能,那么串口1就需要切到其它脚位通道使用。
每个脚位使能其中一种复用功能,除非你能处 ...

了解,就是说要开发者自己控制好、避免冲突。
但我还想问下,芯片内部的硬件连线是怎样的,是直接连接到USB、UART,还是有3选1复用开关?
因为我印象中,其它芯片(好像TI的)对于复用引脚,有PinMux这个复用开关可以控制它连接到哪的。

乘风飞扬 发表于 2023-12-29 13:59:43

zhangzhonghua 发表于 2023-12-29 13:49
了解,就是说要开发者自己控制好、避免冲突。
但我还想问下,芯片内部的硬件连线是怎样的,是直接连接到U ...

STC单片机可以通过寄存器选择硬件使用的脚位通道:



zhangzhonghua 发表于 2023-12-29 15:28:05

乘风飞扬 发表于 2023-12-29 13:59
STC单片机可以通过寄存器选择硬件使用的脚位通道:

这里的几选1的1是指UART,我上面帖子问的几选1的1是指引脚。

了解,估计是没有。
提一个需求:既然printf()有了,它兄弟scanf()有没有连到USB啊?这2成双结对才好玩呢。

乘风飞扬 发表于 2023-12-29 15:56:46

zhangzhonghua 发表于 2023-12-29 15:28
这里的几选1的1是指UART,我上面帖子问的几选1的1是指引脚。

了解,估计是没有。


功能脚切换寄存器,切换的就是脚位,建议看看规格书:

USB CDC提供printf接口方便打印调试信息,没有提供scanf接口,接收数据通过下面接口获取:
    if (bUsbOutReady) //USB调试及复位所需代码
    {
//      USB_SendData(UsbOutBuffer,64);//发送数据缓冲区,长度(接收数据原样返回, 用于测试HID)
      
      usb_OUT_done();
    }
附件提供一套串口printf、scanf的使用方法供参考。

zhangzhonghua 发表于 2023-12-29 15:58:23

本帖最后由 zhangzhonghua 于 2023-12-29 16:18 编辑

问题:我想仅仅擦除,让芯片回到刚到手时的空白应用程序状态,怎么做?

我印象中,其它芯片的开发工具有这个功能的,但我刚才在程序文件窗口点击清空区域,再点击下载,是不行的。

lzl1okOK 发表于 2023-12-29 16:08:47

zhangzhonghua 发表于 2023-12-29 15:58
问题:我想仅仅擦除,让芯片回到刚到手时的空白应用程序状态,怎么做?
...

你想清空芯片吗?

zhangzhonghua 发表于 2023-12-29 16:59:33

lzl1okOK 发表于 2023-12-29 16:08
你想清空芯片吗?

是的,怎么搞?

lzl1okOK 发表于 2023-12-29 17:03:56

自己写一个空程序就好了
页: 1 [2] 3
查看完整版本: 只引出P3.0,P3.1,想要把printf()打印的信息通过USB传到电脑?