找回密码
 立即注册
楼主: zhangzhonghua

只引出P3.0,P3.1,想要把printf()打印的信息通过USB传到电脑?

[复制链接]

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 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:0]:串口 1 功能脚选择位
00 RxD TxD -> P3.0 P3.1

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-12-29 11:01:20 | 显示全部楼层
zhangzh*** 发表于 2023-12-29 10:34
那么问题来了:芯片的P3.0,P3.1引脚的复用是怎么控制的?
因为它有3种用法,(1)并口P3.0,P3.1,(2)串 ...

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

使用道具 举报 送花

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 2023-12-29 13:49:09 | 显示全部楼层
乘风*** 发表于 2023-12-29 11:01
如果使用了USB功能,那么串口1就需要切到其它脚位通道使用。
每个脚位使能其中一种复用功能,除非你能处 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-12-29 13:59:43 | 显示全部楼层
zhangzh*** 发表于 2023-12-29 13:49
了解,就是说要开发者自己控制好、避免冲突。
但我还想问下,芯片内部的硬件连线是怎样的,是直接连接到U ...

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

截图202312291358499553.jpg

回复 支持 反对

使用道具 举报 送花

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 2023-12-29 15:28:05 | 显示全部楼层
乘风*** 发表于 2023-12-29 13:59
STC单片机可以通过寄存器选择硬件使用的脚位通道:

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

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-12-29 15:56:46 | 显示全部楼层
zhangzh*** 发表于 2023-12-29 15:28
这里的几选1的1是指UART,我上面帖子问的几选1的1是指引脚。

了解,估计是没有。

功能脚切换寄存器,切换的就是脚位,建议看看规格书:
截图202312291551205405.jpg
USB CDC提供printf接口方便打印调试信息,没有提供scanf接口,接收数据通过下面接口获取:
  1.     if (bUsbOutReady) //USB调试及复位所需代码
  2.     {
  3. //        USB_SendData(UsbOutBuffer,64);  //发送数据缓冲区,长度(接收数据原样返回, 用于测试HID)
  4.         
  5.         usb_OUT_done();
  6.     }
复制代码

附件提供一套串口printf、scanf的使用方法供参考。

串口printf-scanf-20230419.zip

11.97 KB, 下载次数: 142

回复 支持 反对

使用道具 举报 送花

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 2023-12-29 15:58:23 | 显示全部楼层
本帖最后由 zhangzhonghua 于 2023-12-29 16:18 编辑

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

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

点评

清空是不做处理的,STC-ISP不会擦除未使用的区域,擦除芯片需要全部填充0x00再下载,0x00在指令集中是NOP空操作,单片机不会执行任何操作  发表于 2024-2-10 14:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:414
  • 最近打卡:2025-05-02 09:17:58

5

主题

296

回帖

2034

积分

金牌会员

积分
2034
发表于 2023-12-29 16:08:47 | 显示全部楼层
zhangzh*** 发表于 2023-12-29 15:58
问题:我想仅仅擦除,让芯片回到刚到手时的空白应用程序状态,怎么做?
...

你想清空芯片吗?
回复 支持 反对

使用道具 举报 送花

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 2023-12-29 16:59:33 | 显示全部楼层
lzl1*** 发表于 2023-12-29 16:08
你想清空芯片吗?

是的,怎么搞?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:414
  • 最近打卡:2025-05-02 09:17:58

5

主题

296

回帖

2034

积分

金牌会员

积分
2034
发表于 2023-12-29 17:03:56 | 显示全部楼层
自己写一个空程序就好了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 15:37 , Processed in 0.131561 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表