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
自己写一个空程序就好了