找回密码
 立即注册
查看: 719|回复: 25

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

[复制链接]

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
发表于 2023-12-28 16:31:41 | 显示全部楼层 |阅读模式
本帖最后由 zhangzhonghua 于 2023-12-28 16:35 编辑

只引出P3.0,P3.1,想要把printf()打印的信息通过USB传到电脑?遇到问题了,请教。
芯片STC8H8K64U,只引出P3.0,P3.1接到USB-TypeC座子上,还有P3.2也接到了按键上。使用STC-USB Link1D工具。
软件目前所做的是,按某个按键后,屏幕会有显示,另外把这个键的名字printf()出来,正常的话,电脑串口工具会打印键名出来。

问题:使用STC-USB Link1D工具,只是挂着,没打开CDC1串口,按了几次按键,屏幕就不动了,表明程序异常了。
打开CDC1串口,继续按键,屏幕仍不动,电脑串口也没打印。

逐个排除法,去掉STC-USB Link1D工具,USB-TypeC直接连接到电脑。只是挂着,没打开CDC串口,按了几次按键,屏幕就不动了,表明程序异常了。
但此时打开CDC串口,还没去按键,屏幕就动起来了(难道刚才电脑这边USB不接收,单片机就阻塞了?),继续按键,屏幕正常,电脑串口打印键名正常。

程序里面USB相关的代码,参考 01-跑马灯,15-通过USB CDC协议虚拟串口收发数据 里面的例程。如下,
#define PRINTF_HID              //printf输出直接重定向到USB HID接口,放在"usb.h"头文件之前
...
//USB调试及复位所需定义
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                      //设置自动复位到ISP区的用户接口命令

//P3.2口按键复位所需变量
bit Key_Flag;
u16 Key_cnt;
...
    //USB调试及复位所需代码-----
    P3M0 &= ~0x03;
    P3M1 |= 0x03;
    IRC48MCR = 0x80;
    while (!(IRC48MCR & 0x01));
    USBCLK = 0x00;
    USBCON = 0x90;
    usb_init();
    //-------------------------
...
    IE2 |= 0x80;   //IE2相关的中断位操作使能后,需要重新设置EUSB
    EA = 1;     //打开总中断
...
void KeyResetScan(void)
{
...
}
void timer0_int(void) interrupt 1  //1ms 中断函数
{
    if (bUsbOutReady) //USB调试及复位所需代码
    {
        //USB_SendData(UsbOutBuffer,OutNumber);  //发送数据缓冲区,长度(接收数据原样返回, 用于测试HID)
        
        usb_OUT_done();
    }
    KeyResetScan();   //P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
...
}
USB库使用的是 stc_usb_cdc_8h_xdata.LIB,43,925 字节,修改时间 2022‎年‎11‎月‎11‎日,‏‎13:48:20

回复 送花

使用道具 举报

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
 楼主| 发表于 2023-12-28 16:40:33 | 显示全部楼层
本帖最后由 zhangzhonghua 于 2023-12-28 16:48 编辑

以上USB代码和printf()打印语句注释掉的话,按键怎么按,屏幕都是正常的。
以前使用UART串口,好像没有这么多问题。这次想着换上USB试试,没想到遇到这么多问题。

问题是USB还只有库没有源码,怎么一步步来定位问题啊?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
 楼主| 发表于 2023-12-28 16:51:40 | 显示全部楼层
另外一个信息,按键检测、键名printf()是在main()函数下层里面做的。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

552

主题

9509

回帖

1万

积分

管理员

积分
14075
发表于 2023-12-28 17:05:39 | 显示全部楼层
截图202312281705124083.jpg

截图202312281705366867.jpg

回复 支持 反对 送花

使用道具 举报

该用户从未签到

552

主题

9509

回帖

1万

积分

管理员

积分
14075
发表于 2023-12-28 17:06:16 | 显示全部楼层
截图202312281706139225.jpg
回复 支持 反对 送花

使用道具 举报

该用户从未签到

552

主题

9509

回帖

1万

积分

管理员

积分
14075
发表于 2023-12-28 17:07:48 | 显示全部楼层
我请内部来回答下
回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

52

回帖

160

积分

注册会员

积分
160
 楼主| 发表于 2023-12-28 17:10:02 | 显示全部楼层

我就是看到这个宣传,说从UART转USB试试,但现在遇到问题,怎么逐步来定位解决啊?
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-12-28 17:59:34 | 显示全部楼层
    本帖最后由 乘风飞扬 于 2023-12-28 18:01 编辑
    zhangzhonghua 发表于 2023-12-28 17:10
    我就是看到这个宣传,说从UART转USB试试,但现在遇到问题,怎么逐步来定位解决啊? ...
    使用附件例程试试,按一次按键打印一次信息,例程使用P3.2,P3.3口按键
    截图202312281800213944.jpg

    USB-CDC-printf-STC8H.zip

    33.45 KB, 下载次数: 38

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    52

    回帖

    160

    积分

    注册会员

    积分
    160
     楼主| 发表于 2023-12-28 19:19:52 | 显示全部楼层
    本帖最后由 zhangzhonghua 于 2023-12-28 19:21 编辑

    1、解压文件,一眼注意到USB库的日期比我手头的新。
    2、下载例程到板上运行,打开串口,按按键,有打印。
    3、把该新USB库替换到我的project里,重新编译,下载运行,测试,目前再无屏幕不动的现象、也没有感觉阻塞的现象。
    结论:
    旧的库文件有问题:stc_usb_cdc_8h_xdata.LIB,43,925 字节,修改时间 2022‎年‎11‎月‎11‎日,‏‎13:48:20
    新的库文件正常:stc_usb_cdc_8h_xdata.LIB,44,129 字节,修改时间 2023‎年‎6‎月‎30‎日,‏‎18:17:21

    还剩个问题请教:使用STC-USB Link1D工具,打开CDC1串口,按按键,电脑串口是没打印的;但是,去掉STC-USB Link1D工具,USB-TypeC直接连接到电脑,打开串口,按按键,电脑串口是有打印的。这个是什么原因?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-12-29 10:06:30 | 显示全部楼层
    zhangzhonghua 发表于 2023-12-28 19:19
    1、解压文件,一眼注意到USB库的日期比我手头的新。
    2、下载例程到板上运行,打开串口,按按键,有打印。
    3 ...

    使用STC-USB Link1D工具的CDC1串口与芯片通信的话,芯片需要配置成UART串口与工具通信;
    而例程是将芯片本身配置为USB CDC串口,所以只要使用USB线连接电脑即可,不需要其它串口工具。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-19 09:28 , Processed in 0.075073 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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