女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于的RT-THREAD+CherryUSB的daplink實現(xiàn)原理

jf_NsPBt3VS ? 來源:風(fēng)火輪技術(shù)團隊 ? 2023-12-25 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章主要描述利用RT-THREAD+CherryUSB制作DapLink調(diào)試器(R_DapLink)全流程。

這里先感謝網(wǎng)友:sakumisu提供cherryUSB協(xié)議棧的技術(shù)支持。

什么是下載調(diào)試器簡單來說,下載調(diào)試器是將PC(例如通過USB協(xié)議)發(fā)送的命令轉(zhuǎn)換為MCU(負(fù)責(zé)MCU內(nèi)部外圍設(shè)備)理解的語言(例如SWD或JTAG協(xié)議)的設(shè)備,加載代碼并精確控制執(zhí)行。

什么是標(biāo)準(zhǔn)簡單來說,標(biāo)準(zhǔn)是一組規(guī)則和協(xié)議,特定行業(yè)中的每個參與者都同意遵循并執(zhí)行。符合某種內(nèi)核的單片機Q,都可以使用這種協(xié)議來下載程序。JTAG和SWD其實都是一種標(biāo)準(zhǔn)的協(xié)議。比如JTAG和SWD,都支特下載ARMQ內(nèi)核單片機的程序。

各種調(diào)試器的區(qū)別

「J-Link:」最有名氣、各種渠道版本最多,號稱支持芯片量最多。

適合場景:如果項目文件比較大,首選!下載又快又穩(wěn),仿真調(diào)試也是杠杠的神器。

優(yōu)點:最快、穩(wěn)如老狗。STM32F407芯片+109K代碼實測8秒完成燒錄過程。

缺點:最貴,和諧版都四五十元起步,正版上至數(shù)千元。注意:V9版本以下的J-Link大多數(shù)不支持STM8

「ST-Link:」隨著STM32這十年八年的壟斷,ST-Link也跟著發(fā)大火了, 妥妥銷量一哥。

適合場景:學(xué)校里開STM32課程的,幾乎每個宿舍都有吧~

優(yōu)點:便宜、便宜,便宜!x寶13元包郵。特別注意一下:驅(qū)動包就在KEIL本身的文件夾里頭,你說它多火。

缺點:不夠穩(wěn)定! 可能不時的來個彈窗。

「CMSIS-DAP:」軟硬件開源!這兩三年,含量在火箭式起飛。很多人知道它是因為技小新和立創(chuàng)EDA的開源工程。比STLink稍貴。

適合場景:玩stm32的,這個是最優(yōu)選擇。

優(yōu)點:開源、虛擬串口、免驅(qū)。大愛的虛擬串口,很爽、很爽, (有些下載器也有虛擬串口),更愛它開源沒心病。

缺點:真沒啥缺點,能拼JLink的穩(wěn)定, 也能拼ST-Link的便宜,還沒版權(quán)問題!109K代碼燒錄實測10秒,也算杠杠的吧。

「DAP-Link:」CMSIS-DAP的升級版。

適合場景:嗯,如果你的動手能力高超,這個最合適,軟硬都開源,可玩性極高,比如做個拖拽的脫機下載

優(yōu)點:拖拽燒錄、升級固件。包括了CMSIS-DAP的優(yōu)點:開源+虛擬串口+免驅(qū)。

缺點:真沒啥缺點,能拼JLink的穩(wěn)定, 也能拼ST-Link的便宜,還沒版權(quán)問題!

R_DapLink說明

R_DapLink支持:DapLink+CDC(虛擬串口),采用USB2.1協(xié)議。采用GPIO模擬SWD時序

硬件準(zhǔn)備

R_DapLink的硬件采用stm32f103c8t6,內(nèi)核:ARM Cortex-M3,主頻:72MHz,F(xiàn)lash:64KB,RAM:20KB。

a24d6c16-a2be-11ee-8b88-92fbcf53809c.jpg

開發(fā)板我們需要做一些改動,由于SWD的數(shù)據(jù)線有輸入和輸出,我們這里采用兩個引腳合并成一個引腳作為SWD的數(shù)據(jù)線。stm32的GPIOB0作為SWD的數(shù)據(jù)線的輸出,stm32的GPIOA7作為SWD的數(shù)據(jù)線的輸入。

a25c66c6-a2be-11ee-8b88-92fbcf53809c.jpg

準(zhǔn)備一個現(xiàn)成的調(diào)試器來調(diào)試我們的R_DapLink,這里采用正點原子的DapLink。

R_DapLink支持CDC(虛擬串口),所以我們還需要一個串口工具,這里采用CH340。

軟件準(zhǔn)備

R_DapLink采用RT-Thread作為我們實時系統(tǒng),提供系統(tǒng)調(diào)度,IPC通信。選擇RT-Thread的原因:RT-Thread已經(jīng)包含了cherryUSB協(xié)議棧軟件,這給我減少了很多移植的工作量。

R_DapLink的USB協(xié)議棧采用cherryUSB協(xié)議棧,其代碼鏈接:https://github.com/cherry-embedded/CherryUSB。cherryUSB協(xié)議棧提供了對應(yīng)的文檔,其文檔鏈接:https://cherryusb.readthedocs.io/zh-cn/latest/

DAPLink:Arm Mbed DAPLink是一個開源軟件項目,可以對Arm Cortex CPU上運行的應(yīng)用程序進行編程和調(diào)試。其鏈接:https://github.com/ARMmbed/DAPLink

移植DapLink

準(zhǔn)備rt-thread工程

下載rt-thread的源碼,源碼鏈接:https://gitee.com/rtthread/rt-thread,我們采用4.1.1的版本,所以下載完源碼需要切換到4.1.1版本中。

下載完源碼,進入stm32f103-blue-pill這個BSP,路徑:xxxspstm32stm32f103-blue-pill,通過env工具dist出來,

a269fad4-a2be-11ee-8b88-92fbcf53809c.jpg

從dist目錄下拷貝stm32f103-blue-pill工程出來,并修改名字為:r_daplink。

增加cherryUSB軟件包

進入上面準(zhǔn)備好的工程:r_daplink,在工程目錄中打開env工具,輸入menuconfig。

a277e284-a2be-11ee-8b88-92fbcf53809c.jpg

配置增加cherryUSB

a284daf2-a2be-11ee-8b88-92fbcf53809c.jpg

r_daplink的USB是作為device,所以選擇選擇Device mode

a296e2a6-a2be-11ee-8b88-92fbcf53809c.jpg

r_daplink的usb的速度為全速,選擇FS,stm32f103c86的USB IP為FSDEV,并選擇上cdc,用于實現(xiàn)虛擬串口。

a2a6f9fc-a2be-11ee-8b88-92fbcf53809c.jpg

增加DAPLink源碼

下載DAPLink代碼,鏈接:https://github.com/ARMmbed/DAPLink

DAPLink代碼很多,但實際我們只用核心的部分,將DAPLink代碼中:sourcedaplinkcmsis-dap目錄拷貝到r_daplink工程中。

a2ade73a-a2be-11ee-8b88-92fbcf53809c.jpg

r_daplink工程中增加兩個文件:DAP_config.h和IO_Config.h文件。其中:DAP_config.h用于配置DAPLink的配置,并適配SWD時序模擬的GPIO,IO_Config.h用于配置SWD使用到的GPIO的描述。具體內(nèi)容看我的開源倉:https://gitee.com/RiceChen0/r_daplink。

USB適配

r_daplink的daplink采用winusb+cdc,其中包含3個接口,4個端點,其設(shè)備描述符適配:

constuint8_tcdc_winusb_descriptor[]={
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1,0xEF,0x02,0x01,USBD_VID,USBD_PID,0x0100,0x01),
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x03,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER),
USB_INTERFACE_DESCRIPTOR_INIT(0x00,0x00,0x02,0xff,0x00,0x00,0x02),
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP,0x02,USB_MAX_MPS,0x00),
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP,0x02,USB_MAX_MPS,0x00),
CDC_ACM_DESCRIPTOR_INIT(0x01,CDC_INT_EP,CDC_OUT_EP,CDC_IN_EP,USB_MAX_MPS,0x00),
///////////////////////////////////////
///string0descriptor
///////////////////////////////////////
USB_LANGID_INIT(USBD_LANGID_STRING),
///////////////////////////////////////
///string1descriptor
///////////////////////////////////////
0x12,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'C',0x00,/*wcChar4*/
'h',0x00,/*wcChar5*/
'e',0x00,/*wcChar6*/
'n',0x00,/*wcChar7*/
///////////////////////////////////////
///string2descriptor
///////////////////////////////////////
0x1E,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'',0x00,/*wcChar4*/
'C',0x00,/*wcChar5*/
'M',0x00,/*wcChar6*/
'S',0x00,/*wcChar7*/
'I',0x00,/*wcChar8*/
'S',0x00,/*wcChar9*/
'-',0x00,/*wcChar10*/
'D',0x00,/*wcChar11*/
'A',0x00,/*wcChar12*/
'P',0x00,/*wcChar13*/
///////////////////////////////////////
///string3descriptor
///////////////////////////////////////
0x1C,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'-',0x00,/*wcChar4*/
'2',0x00,/*wcChar5*/
'0',0x00,/*wcChar6*/
'2',0x00,/*wcChar7*/
'3',0x00,/*wcChar8*/
'0',0x00,/*wcChar9*/
'1',0x00,/*wcChar10*/
'0',0x00,/*wcChar11*/
'1',0x00,/*wcChar12*/
0x00
};

winusb端點適配

voidusbd_winusb_out(uint8_tep,uint32_tnbytes)
{
usbd_ep_start_read(WINUSB_OUT_EP,usb2dap_buff[usb2dap_index],USB2DAP_PACK_SIZE);
}

voidusbd_winusb_in(uint8_tep,uint32_tnbytes)
{
if((nbytes%USB_MAX_MPS)==0&&nbytes){
usbd_ep_start_write(WINUSB_IN_EP,NULL,0);
}
}

structusbd_endpointwinusb_out_ep={
.ep_addr=WINUSB_OUT_EP,
.ep_cb=usbd_winusb_out
};

structusbd_endpointwinusb_in_ep={
.ep_addr=WINUSB_IN_EP,
.ep_cb=usbd_winusb_in
};

cdc端點適配

voidusbd_cdc_acm_bulk_out(uint8_tep,uint32_tnbytes)
{
usbd_ep_start_read(CDC_OUT_EP,usb2uart_buff,USB2UART_PACK_SIZE);
}

voidusbd_cdc_acm_bulk_in(uint8_tep,uint32_tnbytes)
{
if((nbytes%USB_MAX_MPS)==0&&nbytes){
usbd_ep_start_write(CDC_IN_EP,NULL,0);
}
}

structusbd_endpointcdc_out_ep={
.ep_addr=CDC_OUT_EP,
.ep_cb=usbd_cdc_acm_bulk_out
};

structusbd_endpointcdc_in_ep={
.ep_addr=CDC_IN_EP,
.ep_cb=usbd_cdc_acm_bulk_in
};

usb初始化

intusb_service_init(void)
{
usbd_desc_register(cdc_winusb_descriptor);
usbd_bos_desc_register(&bos_desc);
usbd_msosv2_desc_register(&msosv2_desc);

usbd_add_interface(&intf0);
usbd_add_endpoint(&winusb_out_ep);
usbd_add_endpoint(&winusb_in_ep);

usbd_add_interface(usbd_cdc_acm_init_intf(&intf0));
usbd_add_interface(usbd_cdc_acm_init_intf(&intf1));
usbd_add_endpoint(&cdc_out_ep);
usbd_add_endpoint(&cdc_in_ep);

usbd_initialize();
returnRT_EOK;
}

以上適配完將板子的USB插上電腦,通過設(shè)備管理器查看是否成功

a2c13754-a2be-11ee-8b88-92fbcf53809c.jpg

cdc適配

我們采用串口3作為我們USB到串口的轉(zhuǎn)發(fā)。

cdc虛擬串口的配置傳給串口3,具體實現(xiàn)如下:

staticvoiduart_config_set(uart_config_t*config)
{
if(rt_memcmp(&uart_config,(rt_uint8_t*)config,sizeof(uart_config_t))!=0)
{
rt_memcpy((rt_uint8_t*)&uart_config,config,sizeof(uart_config_t));
uart_is_config=RT_TRUE;
}
if(uart_is_config)
{
structserial_configureserial_config=RT_SERIAL_CONFIG_DEFAULT;
if(uart_dev!=RT_NULL){
rt_device_close(uart_dev);
uart_dev=RT_NULL;
}

uart_is_config=RT_FALSE;
uart_dev=rt_device_find(UART_NAME);
serial_config.baud_rate=uart_config.baudrate;
serial_config.stop_bits=uart_config.stopbit;
serial_config.parity=uart_config.parity;
serial_config.data_bits=uart_config.databit;
serial_config.bufsz=UART_PACK_SIZE;
rt_device_control(uart_dev,RT_DEVICE_CTRL_CONFIG,&serial_config);

rt_device_open(uart_dev,RT_DEVICE_FLAG_DMA_RX);
rt_device_set_rx_indicate(uart_dev,uart_recv_isr);
}
}

cdc虛擬串口數(shù)據(jù)到串口3的實現(xiàn)如下:

voidusb2uart_handler(rt_uint8_t*data,rt_uint16_tlen)
{
if(uart_dev)
{
rt_device_write(uart_dev,0,data,len);
}
}

串口3數(shù)據(jù)到cdc虛擬串口的實現(xiàn)如下:

staticrt_err_tuart_recv_isr(rt_device_tdev,rt_size_tsize)
{
if(size>0)
{
rt_sem_release(&uart_rx_sem);
}
returnRT_EOK;
}

staticvoiduart2usb_handler(void*param)
{
rt_uint16_trx_size=0;
for(;;)
{
rt_sem_take(&uart_rx_sem,RT_WAITING_FOREVER);
if(uart_dev)
{
rx_size=rt_device_read(uart_dev,0,uart_rx_buff,UART_PACK_SIZE);
usb_service_uart2usb(uart_rx_buff,rx_size);
}
}
}

測試驗證:

a2d7992c-a2be-11ee-8b88-92fbcf53809c.jpg

daplink適配

daplink的實現(xiàn)原理:將usb接收到的數(shù)據(jù)傳輸?shù)?/p>

DAP_ExecuteCommand()

函數(shù),并且從這個函數(shù)獲取返回數(shù)據(jù),將數(shù)據(jù)傳輸?shù)絬sb上。

我們將usb接收到數(shù)據(jù)通過郵箱的方式傳輸?shù)綌?shù)據(jù)處理現(xiàn)成,具體實現(xiàn)如下:

staticvoidusb2dap_handler(rt_uint8_t*data,rt_uint16_tlen)
{
rt_mb_send(&dap2usb_mb,(rt_ubase_t)data);
}

staticvoiddap2usb_handler(void*param)
{
char*rx_data=NULL;
for(;;)
{
if(rt_mb_recv(&dap2usb_mb,(rt_ubase_t*)&rx_data,RT_WAITING_FOREVER)==RT_EOK)
{
if(rx_data[0]==ID_DAP_QueueCommands)
{
rx_data[0]=ID_DAP_ExecuteCommands;
}
dap2usb_size=DAP_ExecuteCommand((constuint8_t*)rx_data,dap2usb_buff);
usb_service_dap2usb(dap2usb_buff,dap2usb_size);
}
}
}

驗證:我們keil里面選擇我們dap,可以正常的識別到DAP,并且能識別鏈接的設(shè)備

a2e6e2a6-a2be-11ee-8b88-92fbcf53809c.jpg

r_daplink的燒錄驗證

a2f5602e-a2be-11ee-8b88-92fbcf53809c.jpg

a35ceb40-a2be-11ee-8b88-92fbcf53809c.jpg

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8173

    瀏覽量

    272428
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    2015

    瀏覽量

    66011
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    312

    瀏覽量

    24292
  • 虛擬串口
    +關(guān)注

    關(guān)注

    3

    文章

    63

    瀏覽量

    14203
  • 設(shè)備管理器
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5414

原文標(biāo)題:手把手教你制作DAPLink

文章出處:【微信號:風(fēng)火輪技術(shù)團隊,微信公眾號:風(fēng)火輪技術(shù)團隊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    讓開發(fā)板暢游網(wǎng)絡(luò):RT-Thread CherryUSB 驅(qū)動 RNDIS 模塊詳解 | 技術(shù)集結(jié)

    本文通過在RT-Thread操作系統(tǒng)上,使用CherryUSB軟件包作為USBHost協(xié)議棧,驅(qū)動AIR780E4GCat.1模塊的RNDIS功能,并成功接入lwIP網(wǎng)絡(luò)協(xié)議棧,最終在開發(fā)板上實現(xiàn)
    的頭像 發(fā)表于 07-02 17:04 ?1156次閱讀
    讓開發(fā)板暢游網(wǎng)絡(luò):<b class='flag-5'>RT-Thread</b> <b class='flag-5'>CherryUSB</b> 驅(qū)動 RNDIS 模塊詳解 | 技術(shù)集結(jié)

    RT-Thread里的CherryUSB軟件包分享

    現(xiàn)在RT-Thread 軟件包里面已經(jīng)添加了 CherryUSB 軟件包,可能大家沒用過,我自己來宣傳一下CherryUSB 是一個 usb 主從協(xié)議棧,代碼量少,并且根據(jù) usb 的特點,統(tǒng)一了
    發(fā)表于 10-13 10:49

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實時操作系統(tǒng),本文是RT-Thread實時操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    記錄——基于 RT-Thread 實現(xiàn) USB 虛擬串口

    記錄——基于 RT-Thread 實現(xiàn) USB 虛擬串口記錄一下我在正點原子 F429 阿波羅開發(fā)板上實現(xiàn) USB 虛擬串口的過程,希望可以幫助到其他想要學(xué)習(xí) USB 的人。首先,我更新了一下
    發(fā)表于 12-02 17:21 ?6次下載
    記錄——基于 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>實現(xiàn)</b> USB 虛擬串口

    RT-Thread AI kit開源:輕松實現(xiàn)一鍵部署AI模型至 RT-Thread

    RT-AK 是 RT-Thread 團隊為 RT-Thread 實時操作系統(tǒng)所開發(fā)的 AI 套件,能夠一鍵將 AI 模型部署到 RT-Thread 項目中,讓用戶可以 在統(tǒng)一...
    發(fā)表于 01-25 18:18 ?3次下載
    <b class='flag-5'>RT-Thread</b> AI kit開源:輕松<b class='flag-5'>實現(xiàn)</b>一鍵部署AI模型至 <b class='flag-5'>RT-Thread</b>

    RTthread線程調(diào)度詳解

    系統(tǒng)調(diào)度就是在就緒列表中尋找優(yōu)先級最高的就緒線程,然后去執(zhí)行該線程。但是目前我們還不支持優(yōu)先級, 僅實現(xiàn)兩個線程輪流切換,系統(tǒng)調(diào)度函數(shù)rt_schedule /* 系統(tǒng)調(diào)度 */void
    的頭像 發(fā)表于 05-19 17:07 ?2912次閱讀

    RT-Thread大會:RT-Thread對POSIX的實現(xiàn)

    對于部分C函數(shù),編譯器配平層負(fù)責(zé)實現(xiàn)這些接口;由于RT-Thread需要維持多平臺可用,所以編譯器配平層的主要工作就是擬補各個編譯平臺的不足。
    的頭像 發(fā)表于 05-27 16:46 ?1862次閱讀
    <b class='flag-5'>RT-Thread</b>大會:<b class='flag-5'>RT-Thread</b>對POSIX的<b class='flag-5'>實現(xiàn)</b>

    RT-Thread全球技術(shù)大會:RT-Thread對POSIX的實現(xiàn)情況介紹

    RT-Thread全球技術(shù)大會:RT-Thread對POSIX的實現(xiàn)情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:52 ?2144次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會:<b class='flag-5'>RT-Thread</b>對POSIX的<b class='flag-5'>實現(xiàn)</b>情況介紹

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊設(shè)備的實現(xiàn)

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊設(shè)備的實現(xiàn)方式介紹如下:
    的頭像 發(fā)表于 05-28 10:38 ?2413次閱讀
    <b class='flag-5'>RT-Thread</b>設(shè)備模型框架及創(chuàng)建注冊設(shè)備的<b class='flag-5'>實現(xiàn)</b>

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?5007次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    手把手教你制作DAPLink

    這篇文章主要描述利用RT-THREAD+CherryUSB制作DapLink調(diào)試器(R_DapLink)全流程。這里先感謝網(wǎng)友:sakumisu提供cherryUSB協(xié)議棧的技術(shù)支持。
    的頭像 發(fā)表于 12-26 08:35 ?6973次閱讀
    手把手教你制作<b class='flag-5'>DAPLink</b>

    RT-Thread USB協(xié)議棧-CherryUSB快速上手指南

    的是,CherryUSB已經(jīng)成為RT-Thread的USB標(biāo)準(zhǔn)對接協(xié)議棧實現(xiàn)。這意味著在RT-Thread系統(tǒng)中,開發(fā)者可以方便地使用CherryU
    的頭像 發(fā)表于 11-22 01:09 ?1422次閱讀
    <b class='flag-5'>RT-Thread</b> USB協(xié)議棧-<b class='flag-5'>CherryUSB</b>快速上手指南

    CherryUSB-HID設(shè)備實踐 | 技術(shù)集結(jié)

    本文為大家?guī)?b class='flag-5'>CherryUSB-HID設(shè)備實踐,以MCXA156為例。開發(fā)環(huán)境搭建請參考RT-Thread的快速入門,咱們就直入主題,折騰USB去。CherryUSB的移植適配據(jù)筆者理解
    的頭像 發(fā)表于 04-27 17:46 ?619次閱讀
    <b class='flag-5'>CherryUSB</b>-HID設(shè)備實踐 | 技術(shù)集結(jié)
    主站蜘蛛池模板: 万载县| 宣汉县| 墨竹工卡县| 上高县| 琼海市| 郓城县| 阜南县| 红原县| 永兴县| 丰顺县| 昭平县| 阿尔山市| 潞城市| 咸丰县| 固原市| 鹤壁市| 科技| 资兴市| 肥东县| 白玉县| 同仁县| 兰溪市| 旺苍县| 巨野县| 临武县| 宿迁市| 尼勒克县| 壶关县| 德兴市| 遂宁市| 扎赉特旗| 安乡县| 固镇县| 萝北县| 上林县| 莱芜市| 罗田县| 新野县| 台北县| 大悟县| 辽宁省|