找回密码
 立即注册
查看: 781|回复: 19

AI8051U-8Bit 最新 不停电下载 注意事项

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-01 09:59:28
已绑定手机

3

主题

32

回帖

369

积分

中级会员

积分
369
发表于 2025-3-21 09:46:06 | 显示全部楼层 |阅读模式
首先感谢官方送的实验箱和开发板。

AI8051U可以配置成 不掉电下载 在编写完程序后,
无需反复按按键进行冷启动然后下载,可直接烧录程序
这减少了设备的停机时间,提高了开发效率和设备的可维护性,
为开发者提供了便利,尤其适用于需要频繁更新程序的场景。

最近我用最新的USB库文件时,刚开始总是移植不成功。

即便我把所有的文件及代码用复制过去,也是失败的。
经过我折腾一天终于总结出了。一次成功的方法。

1,下载最新的USB库,这个库是20250319更新的。
微信截图_20250321093129.png
2,这个是能不能成功能关键,选择对应型号的MCU后,
一定要勾先LX51 OF BL51 否则会编译失败。
微信截图_20250226101159.png

3,最新的库不需要用户程序中不需要再对
USER_DEVICEDESC,
USER_PRODUCTDESC,
USER_STCISPCMD
进行定义如已定义,请删除。

微信截图_20250321093058.png
4,增加 REMOVEUNUSED 命令,
这个不增加不影响使用,但是会弹出警告。

微信截图_20250321092930.png

注意以上几点,基本上能成功移植USB不掉电下载程序,
解放你的双手。



1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2025-3-21 14:31:04 | 显示全部楼层
截图202503211429592745.jpg


新USB库函数使用说明:
1、使用此压缩包中的新USB库函数,用户程序中不需要再对
   USER_DEVICEDESCUSER_PRODUCTDESCUSER_STCISPCMD 进行定义
   如已定义,请删除
2、USB库默认的不停电下载命令为“@STCISP#”
3、新USB库函数不再区分查询库和中断库,已统一为同一个库
   使用set_usb_OUT_callback函数设置回调函数时可实现中断模数
   若不设置回调函数则为查询模数(详情请参考范例程序)

截图202503211430434126.jpg
深圳国芯人工智能有限公司-库函数

ai_usb.h 头文件内容如下


#ifndef __AI_USB_H__
#define __AI_USB_H__

//使用串口“printf”打印信息需屏蔽以下两个定义
//#define PRINTF_SEGLED         //printf输出重定向到ISP下载软件中的7段数码管
//#define PRINTF_HID            //printf输出直接重定向到USB口
//#define PRINTF_USB            //printf输出直接重定向到USB口

typedef bit BOOL;
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;

typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned int ushort;
typedef unsigned long ulong;

typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long uint32_t;

#ifndef NULL
#define NULL ((void *) 0)
#endif

#define DEVSTATE_ATTACHED       0
#define DEVSTATE_POWERED        1
#define DEVSTATE_DEFAULT        2
#define DEVSTATE_ADDRESS        3
#define DEVSTATE_CONFIGURED     4
#define DEVSTATE_SUSPENDED      5

void usb_init();
void usb_OUT_done();
void USB_SendData(BYTE *dat, int size);

void set_usb_OUT_callback(void (*pfn)(void));   //如果需要实现中断,需要调用此函数来设置回调函数
void set_usb_ispcmd(char *cmd);                 //设置不停电下载的用户自定义命令,不设置时默认下载命令为“@STCISP#”

int SEG7_ShowString(const char *fmt, ...);
void SEG7_ShowLong(long n, char radix);
void SEG7_ShowFloat(float f);
void SEG7_ShowCode(BYTE *cod);

void LED40_SendData(BYTE *dat, BYTE size);
void LED40_SetPort(BYTE port, BYTE dat);
void LED40_SetBit(BYTE port, BYTE bt);
void LED40_ClrBit(BYTE port, BYTE bt);

void LED64_SendData(BYTE *dat, BYTE size);
void LED64_SetPort(BYTE port, BYTE dat);
void LED64_SetBit(BYTE port, BYTE bt);
void LED64_ClrBit(BYTE port, BYTE bt);

void LCD12864_DisplayOff();
void LCD12864_DisplayOn();
void LCD12864_CursorOff();
void LCD12864_CursorOn();
void LCD12864_CursorMoveLeft();
void LCD12864_CursorMoveRight();
void LCD12864_CursorReturnHome();
void LCD12864_ScrollLeft();
void LCD12864_ScrollRight();
void LCD12864_ScrollUp(BYTE line);
void LCD12864_AutoWrapOff();
void LCD12864_AutoWrapOn();
void LCD12864_ReverseLine(BYTE line);
void LCD12864_DisplayClear();
void LCD12864_ShowString(BYTE x, BYTE y, char *str);
void LCD12864_ShowPicture(BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat);

void OLED12864_DisplayOff();
void OLED12864_DisplayOn();
void OLED12864_DisplayContent();
void OLED12864_DisplayEntire();
void OLED12864_HorizontalMirror();
void OLED12864_VerticalMirror();
void OLED12864_DisplayReverse();
void OLED12864_SetContrast(BYTE bContrast);
void OLED12864_SetAddressMode(BYTE bMode);
void OLED12864_ScrollLeft(BYTE bPageStart, BYTE bPageEnd, WORD nInterval);
void OLED12864_ScrollRight(BYTE bPageStart, BYTE bPageEnd, WORD nInterval);
void OLED12864_ScrollUp(BYTE bPageStart, BYTE bPageEnd, WORD nInterval);
void OLED12864_ScrollStart();
void OLED12864_ScrollStop();
void OLED12864_ShowPicture(BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat);

int printf_hid (const char *fmt, ...);

#if defined PRINTF_SEGLED
#define printf  SEG7_ShowString
#elif defined PRINTF_USB
#define printf  printf_usb
#elif defined  PRINTF_HID
#define printf  printf_usb
#endif

extern BYTE xdata UsbFeatureBuffer[64];
extern BYTE xdata UsbInBuffer[64];
extern BYTE xdata UsbOutBuffer[64];
extern BOOL bUsbFeatureReady;
extern BOOL bUsbInBusy;
extern BOOL bUsbOutReady;
extern BYTE DeviceState;
extern BYTE OutNumber;

#endif





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2025-3-21 23:37:17 | 显示全部楼层

截图202503212341363156.jpg

截图202503212342114900.jpg

截图202503212335104977.jpg

截图202503212336037875.jpg

截图202503212336379617.jpg

截图202503212337118144.jpg


截图202503212338336498.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2025-3-26 08:26:02 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-01 09:59:28
已绑定手机

3

主题

32

回帖

369

积分

中级会员

积分
369
发表于 2025-3-21 09:47:04 | 显示全部楼层
用了一个晚上才总结出来的,官方加精
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-3-21 10:16:47 | 显示全部楼层
这加精有点儿难把

感觉至少得说出来为什么
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

积分
1441
发表于 2025-3-21 13:07:45 | 显示全部楼层
用冲哥教程中的头文件和库文件0错误0警告,换成最新版库和头文件之后有两个警告:
compiling main.c...
main.c(40): warning C140: 'printf_usb' undefined; assuming 'extern int printf_usb()'
main.c(40): warning C95: 'printf_usb': too many actual parameters
main.c - 0 Error(s), 2 Warning(s).


编译信息如下:
Build target 'Target 1'
linking...
*** WARNING L25: DATA TYPES DIFFERENT
    SYMBOL:  printf_usb
    MODULE:  .\Objects\main.obj (main)
   DEFINED:  .\stc_usb_cdc_32g.LIB (util)
Program Size: data=8.3 edata+hdata=341 xdata=192 const=55 code=5062
creating hex file from ".\Objects\demo"...
".\Objects\demo" - 0 Error(s), 1 Warning(s).
Build Time Elapsed:  00:00:06

点评

是头文件没有更新的问题  详情 回复 发表于 2025-3-21 15:16
[attachimg]88963[/attachimg] 将第三个取消注释可以解决报错的问题 不过这个应该是库本身的小问题,我再去反馈修复一下  详情 回复 发表于 2025-3-21 14:17
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2025-3-21 14:17:58 | 显示全部楼层
小涵*** 发表于 2025-3-21 13:07
用冲哥教程中的头文件和库文件0错误0警告,换成最新版库和头文件之后有两个警告:
compiling main.c...
mai ...

截图202503211417226360.jpg

将第三个取消注释可以解决报错的问题
不过这个应该是库本身的小问题,我再去反馈修复一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2025-3-21 15:16:26 | 显示全部楼层
小涵*** 发表于 2025-3-21 13:07
用冲哥教程中的头文件和库文件0错误0警告,换成最新版库和头文件之后有两个警告:
compiling main.c...
mai ...

是库文件包中的头文件没有更新导致的

正确定义如下:
截图202503211516399821.jpg

早期的库只有printf_hid
后期有将HID和CDC统一为printf_usb





STC_USB_LIBRARY.zip

913.76 KB, 下载次数: 7

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

积分
1441
发表于 2025-3-21 15:39:35 | 显示全部楼层
王*** 发表于 2025-3-21 14:17
将第三个取消注释可以解决报错的问题
不过这个应该是库本身的小问题,我再去反馈修复一下
...

问题已解决,感谢支持
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

积分
1441
发表于 2025-3-21 15:42:25 | 显示全部楼层
zh*** 发表于 2025-3-21 15:16
是库文件包中的头文件没有更新导致的

正确定义如下:

原来如此,问题已解决,感谢支持
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:08 , Processed in 0.138067 second(s), 128 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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