scpcw 发表于 2025-7-16 06:35:25

我这次回贴不知有没有大神能看到:
AIcube生成的AI8051 USB_CDC不能工作在
模式,
提示*** WARNING L14: INCOMPATIBLE MEMORY MODEL
    MODULE:.\Sources\lib\stc_usb_cdc_32g.lib (usb)
    MODEL:   XSMALL
*** ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC
    SYMBOL:OutNumber
    MODULE:.\Objects\usblib.obj (usblib)
   DEFINED:.\Sources\lib\stc_usb_cdc_32g.lib (usb)
*** ERROR L103: EXTERNAL ATTRIBUT DO NOT MATCH PUBLIC
    SYMBOL:DeviceState
    MODULE:.\Objects\usblib.obj (usblib)
   DEFINED:.\Sources\lib\stc_usb_cdc_32g.lib (usb)
*** WARNING L14: INCOMPATIBLE MEMORY MODEL
   如果XSmall模式安装CosyOS,2K内存就很小了。能不能改动AIcube生成的工程,或者给我提一下思路。

scpcw 发表于 2025-7-17 07:16:44

昨天测试了一下我安装的CosyOS点灯,
看到街上有车的转向灯也想了几行代码,自认为很巧妙,灯的效果也很炫:

dCreateTask(task_2, 1, 256, 3, "task_led")
{      
    while(1){
                u8 i,m;
                for(m=8; m>0;m--){               
                        for (i=0;i<m;i++){                                                               
                              P2 = ~((1<<i) | (0xff<<m));
                              uDelay_ms(25);
                        }
                }
                uDelay_ms(1000);               
    }
}
使用过程中发现printf("%x",a);不正常了。无变量只输出字符串是正常的,有变量就加了3个字节,看不出规律。
并且关闭taskmgr再打开P2口的灯就不闪了。
看来,我还要再做一个用串口print的系统。
又想把USB_CDC库文件打开了解一下,冲哥说过厂家的库文件是开源的。但又怀疑我能否看懂。


神农鼎 发表于 2025-7-17 08:25:46









scpcw 发表于 2025-7-17 21:47:52

还是老老实实用Uart作debug,AI8051的XLarge内存模式与USB_cdc暂时还不行。
明天用UART DMA。

25/7/17 DMA还没加
25-7-17 15:25DMA发出加好了,用了128字节
25-7-19   DMA发出加好了,接受都是接受字符命令所以不用DMA,用UART中断.有bug:第一次发命令不接受,第二次才接收。
      但用公司的电脑测试命令接受功能正常。去掉DMA发送中断。这个问题在 程序的注释有解释了。
本文件暂时不动了,改为2.0
19号的晚上还是改了一下:
2025-7-19 V2.1 对主频自适应
               加了一个命令taskmgr1   只发送一次任务管理器就停止,无论是什么状态这个命令都会生效。
2025-7-20 V2.2 找到第一次串口命令不接受的原因了:还是需要在串口初始化中赋初值。u_debug_recv_p = u_debug_recv_buff;
               为什么在定义变量时赋初始值无效?被某个操作改变了一下?





scpcw 发表于 2025-7-18 07:38:15

论坛里找到了冲哥发的USB_CDC源文件包,打开看了一下,感觉还是有信心,把直接把源程序移植进CosyOS里面。先发个冲哥的包放这里,谢谢冲哥。

scpcw 发表于 2025-7-21 22:18:41

从今天开始剖析冲哥给的USB-CDC包。
20250721 改头文件为AI8051。建立工具箱上P42 UART2。测试通过串口2发送数据,通过成功CDC传回。不断电下载正常。

在冲哥的基础上剖析文件:
20250721 Ver:0.1改头文件为AI8051。建立工具箱上P42 UART2。测试通过串口2发送数据,通过成功CDC传回。
20250722 VER:0.2精简掉UART2
20250722 VER:0.3 去掉Uart.C 还合并了util文件到usb_reg_class   合并了usb_reg_vendor到usb.c文件

20250723 V0.4建立USB_CDC.c包含usb_OUT_done()   USB_SendData() #defineOutNumber RxWptr
               #define   UsbOutBufferTxBuffer能发送,能接收,先把功能实现,明天优化。
20250725用官方函数库加了不停电下载,加了函数。明天在官方库的基础上优化



scpcw 发表于 2025-7-26 07:34:56

从官方函数库改变的USB—CDC 不停电下载包源程序,自认为很完美了,无垃圾代码,无垃圾文件,可靠性高,只是比官方的USB库少一些功能。
但重在有源代码,修改灵活。
准备备份这个包,准备移植进CosyOS里。
ver0.4   解决usb_in可以任意字节数。USB_out只能189+0D+0A192个字节。我还没搞透彻。反正够用了。

scpcw 发表于 2025-7-26 12:22:45

准备移植进CosyOS里。

2025-7-26 V3.1加入了USB_cdc 改了syscfg如下:

// <o> Debug 输出模式
//   <0=> USB CDC (虚拟串口)
//   <1=> UART (普通串口)
//   <2=> UART DMA (串口DMA模式)
// <i> debug输出模式,1:只输出不输入SYSCFG_DEBUG_SENDLEN == 0 2:需要设置SYSCFG_DEBUG_SENDLEN == 1
#define DEBUG_MODE 2

#if DEBUG_MODE == 1
    #define SYSCFG_DEBUG_SENDLEN 0
#else
    #define SYSCFG_DEBUG_SENDLEN 1
#endif



2025-7-29 V4.0usb_cdc调试正常,重新编写了输入命令:
#define taskmgr                                1
#define taskmgr_exit                        2
#define taskmgr_once                3
#define taskmgr_s                        4
//taskmgr_s500
//taskmgr_s2000

scpcw 发表于 2025-7-30 06:43:38

25/7/17 DMA加进去,还没加
25-7-17 15:25DMA发出加好了,用了128字节
25-7-19   DMA发出加好了,接受都是接受字符命令所以不用DMA,用UART中断.有bug:第一次发命令不接受,第二次才接收。
      但用公司的电脑测试命令接受功能正常。去掉DMA发送中断。这个问题在 程序的注释有解释了。
本文件暂时不动了,改为2.0

2025-7-19 V2.1 对主频自适应
               加了一个命令taskmgr1   只发送一次任务管理器就停止,无论是什么状态这个命令都会生效。
2025-7-20 V2.2 找到第一次串口命令不接受的原因了:还是需要在串口初始化中赋初值。u_debug_recv_p = u_debug_recv_buff;
2025-7-26 V3.1加入了USB_cdc 改了syscfg如下:

// <o> Debug 输出模式
//   <0=> USB CDC (虚拟串口)
//   <1=> UART (普通串口)
//   <2=> UART DMA (串口DMA模式)
// <i> debug输出模式,1:只输出不输入SYSCFG_DEBUG_SENDLEN == 0 2:需要设置SYSCFG_DEBUG_SENDLEN == 1
#define DEBUG_MODE 2

#if DEBUG_MODE == 1
    #define SYSCFG_DEBUG_SENDLEN 0
#else
    #define SYSCFG_DEBUG_SENDLEN 1
#endif



2025-7-29 V4.0usb_cdc调试正常,重新编写了输入命令:
#define taskmgr                              1
#define taskmgr_exit                2
#define taskmgr_once                3
#define taskmgr_s                        4
//taskmgr_s500
//taskmgr_s2000


2025-7-30 V4.1把usb中断截断,恢复任务3,用任务3处理后续任务。

2025-8-1V4.3 输入命令使用了枚举类型enum      V4.4加入了Usb_CDC的初始化检查,以及电池供电USB初始化跳过。

scpcw 发表于 2025-8-5 21:00:27

开始研究电机,先把端口中断巩固一下。看一下CPU风扇的转速。
100的占空比圈数是正常的,与电脑主板的数据是一致。但99%占空比,圈数不低反高,也许CPU风扇开机会发一个上升沿,还是需要示波仪才能研究

2025-8-16 找到一个DELL的四线CPU风扇。PWM接蓝线控速准确,黄线测速准确。
页: 1 2 3 4 5 6 [7] 8 9
查看完整版本: 我学AI8051U | 确实是实战派,建议送强大的 AI8051U实验箱