久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1423|回復: 0
收起左側

STC8H超級簡單的USB-CDC虛擬串口應用及不停電下載

[復制鏈接]
ID:1072417 發表于 2023-4-18 14:05 | 顯示全部樓層 |閱讀模式
本帖最后由 清風拂山崗~ 于 2023-4-18 14:10 編輯

1.1   USB-CDC虛擬串口概述

當單片機需要和電腦之間進行數據交換時,首選一般都是串口通訊。1T 8051, STC8H8K64U單片機內置USB控制器和收發器。
當用戶代碼中嵌入USB-CDC代碼后,使用USB線將單片機與電腦直接相連接,在電腦端就可識別出【USB-CDC虛擬串口】,
【USB-CDC虛擬串口】就是【串口】, 就是【zui簡單zui強大的串口】
USB-CDC虛擬串口和傳統串口相比有如下優點:
Ø  數據傳輸更快:   USB-CDC虛擬串口忽略傳統串口的波特率,傳輸速度的比特率即為全速USB的通訊速度12MBPS(即每秒12M位)
Ø  使用更簡單便捷:USB-CDC虛擬串口忽略傳統串口的起始位、停止位等冗余信息
Ø  數據傳輸更可靠:USB-CDC虛擬串口丟棄傳統串口簡單的軟件奇偶校驗機制,USB-CDC虛擬串口數據傳輸時有USB硬件CRC校驗,
                              以及校驗出錯重傳機制,保證數據100%正確
Ø  自動緩存數據:   USB-CDC虛擬串口會自動緩存數據。單片機在沒有處理完成上位機下傳的上一筆數據時,如果此時上位機又有新的數據下傳,
                              虛擬串口會自動將新的數據緩存,從而保證數據100%不會丟失或被覆蓋。
jpg.1.JPG
USB-CDC虛擬串口和傳統串口相比有如下優點:
Ø  數據傳輸更快:   USB-CDC虛擬串口忽略傳統串口的波特率,傳輸速度的比特率即為全速USB的通訊速度12MBPS(即每秒12M位)
Ø  使用更簡單便捷:USB-CDC虛擬串口忽略傳統串口的起始位、停止位等冗余信息
Ø  數據傳輸更可靠:USB-CDC虛擬串口丟棄傳統串口簡單的軟件奇偶校驗機制,USB-CDC虛擬串口數據傳輸時有USB硬件CRC校驗,
                             以及校驗出錯重傳機制,保證數據100%正確
Ø  自動緩存數據:  USB-CDC虛擬串口會自動緩存數據。單片機在沒有處理完成上位機下傳的上一筆數據時,如果此時上位機又有新的數據下傳,
                            虛擬串口會自動將新的數據緩存,從而保證數據100%不會丟失或被覆蓋。
1.2                  新建Keil項目并加入CDC模塊

2、下載完成后,從壓縮包中將“stc_usb_cdc_8h_data.lib”和“stc32_stc8_usb.h”解壓到項目目錄中
jpg.2.JPG


3、打開Keil軟件,并新建項目
jpg.3.jpg
jpg.4.jpg

Database請選擇“STC MCU Database”
5.jpg


單片機型號選擇“STC8H8K64U Series”
6.jpg

4、項目建立完成后,將下面的代碼命名為main.c文件并保存到項目目錄中

//測試工作頻率為24MHz
#include "stc8h.h"
#include "stc32_stc8_usb.h"
#define       FOSC                 24000000UL//ISP下載時需將工作頻率設置為24MHz
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                                     //不停電自動ISP下載命令
void main()
{
         P_SW2|= 0x80;
         P0M1= 0x00;   P0M0 = 0x00;
         P1M1= 0x00;   P1M0 = 0x00;
         P2M1= 0x00;   P2M0 = 0x00;
         P3M1= 0x00;   P3M0 = 0x00;
         P4M1= 0x00;   P4M0 = 0x00;
         P5M1= 0x00;   P5M0 = 0x00;
         P6M1= 0x00;   P6M0 = 0x00;
         P7M1= 0x00;   P7M0 = 0x00;
         P3M0&= ~0x03;                                                                          //P3.0/P3.1和USB的D-/D+共用PIN腳,
         P3M1|= 0x03;                                                                              //需要將P3.0/P3.1設置為高阻輸入模式
         IRC48MCR= 0x80;                                                                     //使能內部48M的USB專用IRC
         while(!(IRC48MCR & 0x01));
         USBCLK= 0x00;                                                                         //設置USB時鐘源為內部48M的USB專用IRC
         USBCON= 0x90;                                                                         //使能USB功能
         usb_init();                                                                                     //調用USB CDC初始化庫函數
         IE2|= 0x80;                                                                                  //使能USB中斷
         EA= 1;
         while(DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
         while(1)
         {
                   if(bUsbOutReady)                                                              //當硬件接收完成上位機通過串口助手發送數據后
//會自動將bUsbOutReady置1
//接收的數據字節數保存在OutNumber變量中
//接收的數據保存在UsbOutBuffer緩沖區
                   {
                            USB_SendData(UsbOutBuffer,OutNumber);         //使用USB_SendData庫函數可向上位機發送數據
//這里的測試代碼為將接收數據原樣返回
                            usb_OUT_done();                                                      //處理完成接收的數據后
//調用usb_OUT_done準備接收下一筆數據
                   }
         }
}


5、將項目目錄下的“main.c”和“stc_usb_cdc_32g.lib”加入到項目中

7.jpg

8.jpg

9.jpg


6、進行項目設置
10.jpg

11.jpg

12.jpg

13.jpg

14.jpg

設置完成后,編譯通過即可生產目標HEX文件

7、使用最新的STC-ISP下載軟件將HEX下載到目標芯片
15.jpg


8、下載完成后,系統中就會出現一個STC USB-CDC串口
16.jpg


1.3      USB-CDC虛擬串口與電腦進行數據傳輸
用STC-ISP軟件中的串口助手打開CDC串口,即可進行數據收發測試

1.4      STC USB-CDC虛擬串口實現不停電自動ISP下載

由于我們在代碼中已經定義了不停電自動ISP下載命令
17.jpg


我們只需要在下載軟件的“收到用戶命令后復位到ISP監控程序區”中的進行如下設置,即可實現不停電自動ISP下載功能了。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产777在线观看 | 久久免费视频1 | 亚洲狠狠爱 | 亚洲国产精品久久 | 午夜视频在线 | 久久新视频 | 亚洲一区二区黄 | 干干干日日日 | 国产精品久久久久久久一区探花 | 91小视频在线 | 男人天堂久久久 | 蜜月aⅴ国产精品 | 久久久久精| 91久久国产综合久久 | 在线看亚洲| 欧美日韩一 | 亚洲性人人天天夜夜摸 | 中文字幕高清av | 亚洲一区二区中文字幕 | 亚洲精品国产成人 | 亚洲一区二区三 | 视频在线观看一区 | 亚洲色综合| 国产黄色大片 | 色婷婷亚洲国产女人的天堂 | av入口| 国产91视频一区二区 | 亚洲电影免费 | 久色激情 | 亚洲成人免费 | 一级爱爱片| a视频在线观看 | 国产精品美女久久久久久免费 | 国产精品成人在线 | 久久久久免费 | 欧美中文字幕一区二区 | 中文字幕一区二区三区日韩精品 | 亚洲中午字幕 | 日本久久综合 | 欧美日韩亚洲视频 | 九九热在线视频 |