一、目的

Raspberry_Pi_PICO板载有SWD接口,上图中的中间的最下面位置(SWCLK/GND/SWDIO)。

SWD接口是Cortex-M系列控制器的标准接口,可以用来复位芯片、下载代码、设置代码运行以及调试功能,通过SWD接口烧写代码时不再需要按住BOOTSEL按键。

有些朋友可能没有硬件调试器,那么可以购买两个PICO,其中一个通过下面的步骤就可以变成一个SWD接口的硬件调试器和一个USB转串口工具(USB CDC)高级)。

本篇包含两部分内容:

    1、构建openocd和Picoprobe

        2、使用SWD下载调试

注意下面的操作都是在Ubuntu上进行的,其他OS上的步骤请查看官方文档说明。

说干就干,首先进入到我们的工作目录

$ cd ~/workspace/third/raspberry_pi_pico

二、准备

构建OpenOCD

$ sudo apt install automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev$ git clone https://github.com/raspberrypi/openocd.git --branch picoprobe --depth=1 --no-single-branch$ cd openocd/
$ ./bootstrap
$ ./configure --enable-picoprobe
$ make
$ sudo make install

安装后检查一下openocd工具

$ openocd -v
Open On-Chip Debugger 0.11.0-g4f2ae61-dirty (2022-02-19-10:45)
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html

构建和下载PICOPROBE

$ cd ~/workspace/third/raspberry_pi_pico
$ git clone https://github.com/raspberrypi/picoprobe.git
$ cd picoprobe/
$mkdir build
$ cd build/
$ cmake ..
$ make

编译输出

Scanning dependencies of target bs2_default
[  1%] Building ASM object pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.obj
[  2%] Linking ASM executable bs2_default.elf
[  2%] Built target bs2_default
[  3%] Generating bs2_default.bin
[  4%] Generating bs2_default_padded_checksummed.S
[  4%] Built target bs2_default_padded_checksummed_asm
[  5%] Creating directories for 'PioasmBuild'
[  6%] No download step for 'PioasmBuild'
[  7%] No update step for 'PioasmBuild'
[  8%] No patch step for 'PioasmBuild'
[  9%] Performing configure step for 'PioasmBuild'
-- The CXX compiler identification is GNU 7.5.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/你的用户名/workspace/third/raspberry_pi_pico/picoprobe/build/pioasm
[ 10%] Performing build step for 'PioasmBuild'
[ 10%] Building CXX object CMakeFiles/pioasm.dir/main.cpp.o
[ 20%] Building CXX object CMakeFiles/pioasm.dir/pio_assembler.cpp.o
[ 30%] Building CXX object CMakeFiles/pioasm.dir/pio_disassembler.cpp.o
[ 40%] Building CXX object CMakeFiles/pioasm.dir/gen/lexer.cpp.o
[ 50%] Building CXX object CMakeFiles/pioasm.dir/gen/parser.cpp.o
[ 60%] Building CXX object CMakeFiles/pioasm.dir/c_sdk_output.cpp.o
[ 70%] Building CXX object CMakeFiles/pioasm.dir/python_output.cpp.o
[ 80%] Building CXX object CMakeFiles/pioasm.dir/hex_output.cpp.o
[ 90%] Building CXX object CMakeFiles/pioasm.dir/ada_output.cpp.o
[100%] Linking CXX executable pioasm
[100%] Built target pioasm
[ 11%] No install step for 'PioasmBuild'
[ 12%] Completed 'PioasmBuild'
[ 12%] Built target PioasmBuild
[ 13%] Generating probe.pio.h
[ 13%] Built target picoprobe_probe_pio_h
[ 14%] Creating directories for 'ELF2UF2Build'
[ 15%] No download step for 'ELF2UF2Build'
[ 16%] No update step for 'ELF2UF2Build'
[ 17%] No patch step for 'ELF2UF2Build'
[ 18%] Performing configure step for 'ELF2UF2Build'
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/你的用户名/workspace/third/raspberry_pi_pico/picoprobe/build/elf2uf2
[ 19%] Performing build step for 'ELF2UF2Build'
[ 50%] Building CXX object CMakeFiles/elf2uf2.dir/main.cpp.o
[100%] Linking CXX executable elf2uf2
[100%] Built target elf2uf2
[ 20%] No install step for 'ELF2UF2Build'
[ 21%] Completed 'ELF2UF2Build'
[ 21%] Built target ELF2UF2Build
Scanning dependencies of target picoprobe
[ 22%] Building C object CMakeFiles/picoprobe.dir/src/led.c.obj
[ 23%] Building C object CMakeFiles/picoprobe.dir/src/main.c.obj
[ 25%] Building C object CMakeFiles/picoprobe.dir/src/usb_descriptors.c.obj
[ 26%] Building C object CMakeFiles/picoprobe.dir/src/probe.c.obj
[ 27%] Building C object CMakeFiles/picoprobe.dir/src/cdc_uart.c.obj
[ 28%] Building C object CMakeFiles/picoprobe.dir/src/get_serial.c.obj
[ 29%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
[ 30%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
[ 31%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
[ 32%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
[ 33%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
[ 34%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj
[ 35%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj
[ 36%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_time/time.c.obj
[ 37%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj
[ 38%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj
[ 39%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_sync/sem.c.obj
[ 40%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_sync/lock_core.c.obj
[ 41%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_sync/mutex.c.obj
[ 42%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_sync/critical_section.c.obj
[ 43%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_util/datetime.c.obj
[ 44%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_util/pheap.c.obj
[ 45%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/common/pico_util/queue.c.obj
[ 46%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj
[ 47%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj
[ 48%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
[ 50%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
[ 51%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
[ 52%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj
[ 53%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj
[ 54%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj
[ 55%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj
[ 56%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj
[ 57%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj
[ 58%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj
[ 59%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj
[ 60%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj
[ 61%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj
[ 62%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj
[ 63%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj
[ 64%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj
[ 65%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj
[ 66%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj
[ 67%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj
[ 68%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj
[ 69%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj
[ 70%] Building ASM object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj
[ 71%] Building CXX object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj
[ 72%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj
[ 73%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
[ 75%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
[ 76%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_unique_id/unique_id.c.obj
[ 77%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_flash/flash.c.obj
[ 78%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c.obj
[ 79%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c.obj
[ 80%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/device/usbd.c.obj
[ 81%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/device/usbd_control.c.obj
[ 82%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/audio/audio_device.c.obj
[ 83%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/cdc/cdc_device.c.obj
[ 84%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/dfu/dfu_device.c.obj
[ 85%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/dfu/dfu_rt_device.c.obj
[ 86%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/hid/hid_device.c.obj
[ 87%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/midi/midi_device.c.obj
[ 88%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/msc/msc_device.c.obj
[ 89%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/net/ecm_rndis_device.c.obj
[ 90%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/net/ncm_device.c.obj
[ 91%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/usbtmc/usbtmc_device.c.obj
[ 92%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/vendor/vendor_device.c.obj
[ 93%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/class/video/video_device.c.obj
[ 94%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/tusb.c.obj
[ 95%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/src/common/tusb_fifo.c.obj
[ 96%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c.obj
[ 97%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/lib/tinyusb/hw/bsp/rp2040/family.c.obj
[ 98%] Building C object CMakeFiles/picoprobe.dir/home/你的用户名/workspace/third/raspberry_pi_pico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj
[100%] Linking CXX executable picoprobe.elf
[100%] Built target picoprobe

输出文件有这些

$ tree -L 1
.
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── elf2uf2
├── generated
├── Makefile
├── picoprobe.bin
├── picoprobe.dis
├── picoprobe.elf
├── picoprobe.elf.map
├── picoprobe.hex
├── picoprobe.uf2
├── pico-sdk
├── pioasm
└── probe.pio.h

烧写SWD调试器固件

其中picoprobe.uf2文件我们通过USB下载到一块PICO中,这样我们就有了一个swd调试器。

已经编译好的picoprobe固件如下

链接: https://pan.baidu.com/s/1iSthOL8d69iyQyH-qQbmzg 提取码: kfmt

三、实战

首先我们需要将两个pico通过SWD连接起来,下图是官方的连线图

注意,上图中只给左边的PICO通过USB供电,其实两个PICO都可以单独通过USB供电,只要供地即可。(如果分别用USB进行供电,上图中的红色线一定要断开)

Pico A GP4/UART1 TX -> Pico B GP1/UART0 RX
        Pico A GP5/UART1 RX -> Pico B GP0/UART0 TX
        这两个引脚连接起来的目的是,PICO B可能通过串口输出日志,通过这样的连接开发者就可以省掉一个USB转串口工具,PICO A既是SWD调试器,又是USB转串口工具,只要PICO A接在电脑上,就可以识别出一个COM口,这样PC上就可以通过串口工具软件看到PICO B的串口输出。
        

由于关于SWD的内容过多,故会在后续博文中进一步说明如何使用SWD。

Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第一章)相关推荐

  1. Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第二章)

    一.目的 在上一篇<Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第一章)> 我们已经介绍了如何准备openocd.如何编译picoprobe.如何进行 ...

  2. 在 Windows 中编程 Raspberry Pi Pico 的初学者指南

    在 Windows 中编程 Raspberry Pi Pico 的初学者指南 在本教程中,我们将了解如何在 Windows 系统中安装和设置用于编程 Raspberry Pi Pico 的 Visua ...

  3. 物联网开发笔记(69)- 使用Micropython开发树莓派pico开发板raspberry pi pico之控制晶联JLX172104G-590液晶模块

    一.目的 这一节我们学习如何使用我们的树莓派pico开发板raspberry pi pico来控制晶联JLX172104G-590液晶模块. 二.环境 Win10 + 树莓派pico开发板raspbe ...

  4. 智能垃圾桶(十二)——电路图软件fritzing+raspberry pi pico(树莓派pico)

    文章目录 一.起因 二.raspberry pi pico元件库 三.小试牛刀 一.起因 总是看到这种图,却一直不知道叫啥,上午搜索半天才知道是电路图软件fritzing,找了找官网,发现不是免费,伤 ...

  5. 树莓派Pico(Raspberry Pi Pico) Windows开发环境—①开发工具链的安装

    Windows 下搭建 树莓派Pico(Raspberry Pi Pico) 的开发环境 在Microsoft Windows上安装工具链与其他平台有所不同.然而,一旦安装,RP2040的构建代码有点 ...

  6. 树莓派-Raspberry Pi Pico RP2040 使用大全(硬件接口功能、传感器模块等)

    树莓派-RP2040 主板实物图 主板引脚图 Thonny开发IDE工具 查看帮助信息 GPIO 输出 GPIO 输入 GPIO 中断 ADC(模数转换) PWM(脉宽调制) WDT看门狗 RTC实时 ...

  7. 树莓派出微控制器了!Raspberry Pi Pico 只需 4 美元

    整理 | 郑丽媛 来源 | CSDN(ID:CSDNnews) 昨天,树莓派搞了个大动作:推出了首款微控制器开发板 Raspberry Pi Pico!该开发板基于树莓派开发的全新芯片--RP2040 ...

  8. RASPBERRY PI PICO 开发板 基础测试

    ▌01 PI PICO 颜色名 十六进制颜色值 颜色 Coral #FF7F50 rgb(255, 127, 80) 1.安装与上载程序 在 RASPBERRY PI PICO 树莓派PICO开发板双 ...

  9. RASPBERRY PI PICO 树莓派PICO开发板双核高性能低功耗RP2040芯片

    ▌01 RASPBERRY PICO 1.简介 RaspBerry Pi Pico是一款低价格.高性能的微控制器电路板,具有丰富灵活的数字接口,主要特点包括有: RP2040 microcontrol ...

  10. 树莓派竟出微控制器了!Raspberry Pi Pico 只需 4 美元!

    [CSDN 编者按]树莓派进军微控制器市场了!而这场改革的开始只需 4 美元? 整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 昨天,树莓派搞了个大动作:推出了首款微控制器开发板 Ra ...

最新文章

  1. 整型数组负数放左面,其他放右面,要求时空复杂度:O(n), O(1)。
  2. ++ 优化 频繁new_Java性能优化的50个细节,我必须分享给你!
  3. TypeScript React
  4. UVA 10269 Super Mario,最短路+动态规划
  5. .NET Core开发日志——WCF Client
  6. vue v-for循环动态获取_快速、简洁讲明Vue中vfor循环key的作用
  7. 详解语音识别的技术原理
  8. git 分支管理策略(7)
  9. Android Bitmap缓存池使用详解
  10. 译:在C#中使用LINQ To SQL
  11. 专业的数据库连接工具:DBeaverEE for Mac中文版
  12. Excel制作抛硬币动态频率趋势曲线
  13. 使用微软官方工具MediaCreationTool制作Windows10的U盘安装盘
  14. 把失败看成常态 把成功当作偶然”——与庞加莱猜想“封顶”者之一、中山大学教授朱熹平面对面
  15. 瀚高数据库和mysql区别,瀚高数据库----select用法
  16. 计算机机房新风机的作用,你知道机房为什么要装新风系统吗?
  17. acm竞赛java很少,Java多线程在ACM竞赛中的应用
  18. 分享一个07版的office, 有密匙的。
  19. Mysql中的常用类型 说明
  20. 房地产稳经济作用正在显现

热门文章

  1. PCBA水洗流程和工艺原理
  2. 测试一拳多少公斤的软件,李小龙一拳能打出400公斤,手里双节棍有多少力量,测试后难以置信...
  3. VOT Toolkit环境配置与使用
  4. TC397 EVADC
  5. leetcode LCP 03. 机器人大冒险 -java
  6. vue2 element使用笔记总结
  7. JS数据结构与算法学习笔记大全 (温故而知新,可以为师矣。)
  8. 窦唯与女儿【节选】揭秘男星与女儿之间的奇闻
  9. android手机截图,安卓手机怎么截屏,安卓手机怎么截屏幕图OPPO
  10. 时间标准 GMT, UTC, CST