本帖最后由 happysoul 于 2023-7-20 17:52 编辑
看代码库里 UsbOutBuffer 的长度是 64,也就是说缓存只能读取 64
如果用库,只能拼2份读取方式,放到数组中
STC8H8K64U 64pin
问题:
1. 感觉这么写有点奇怪... 虽然能用,但 有没有更好的方法能读取 128字节、256字节?
2. 现在用的波特率是 115200,最高如果稳定的话能用到多少?
3. IRC 频率能用到多少?现在 USB-CDC 40MHz,选更高的时候 usb 就不认了
readBuffer64() 读取 64 字节
readBuffer128() 读取 128 字节
// 使用的库是 STC_USB_LIBRARY_DEMO-20230630 / STC_CDC_QUERY_LIBRARY / stc8h_cdc_xdata_query_demo
代码粘贴后就变样了。。。看上面图片
-
-
- u8 pageBuffer[256];
-
- // 发送指定长度消息给上位机
-
- void usb_send(char cs[],int length)
- {
- USB_SendData(cs,length);
- usb_OUT_done();
- }
-
- //读取64字节
- void readBuffer()
- {
- uint8_t i;
- while(1){
- if (bUsbOutReady){
- if(OutNumber>0){
- for(i=0;i<OutNumber;i++){
- pageBuffer[i]=UsbOutBuffer[i];
- }
- usb_OUT_done();
- return;
- }
- }
- }
- }
-
- // 读取 128 读取 2 次 64
- void readBuffer128()
- {
- uint8_t i;
- while(1){
- if (bUsbOutReady){
- if(OutNumber>0){
- for(i=0;i<OutNumber;i++){
- pageBuffer[i]=UsbOutBuffer[i];
- }
- //usb_OUT_done();
- // 通知上位机读取64字节完成
- usb_send("ok\r\n",4);
- break;
- }
- }
- }
- while(1){
- if (bUsbOutReady){
- if(OutNumber>0){
- for(i=0;i<OutNumber;i++){
- pageBuffer[i+64]=UsbOutBuffer[i];
- }
- usb_OUT_done();
- break;
- }
- }
- }
- }
-
-
复制代码
|