<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>工具链 on 云雾海的博客</title><link>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/</link><description>Recent content in 工具链 on 云雾海的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 05 Nov 2021 14:06:52 +0800</lastBuildDate><atom:link href="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/index.xml" rel="self" type="application/rss+xml"/><item><title>如何在STM32CubeIDE中使用CMSIS DSP库</title><link>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E5%A6%82%E4%BD%95%E5%9C%A8stm32cubeide%E4%B8%AD%E4%BD%BF%E7%94%A8cmsis-dsp%E5%BA%93%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E5%9C%B0%E5%9D%80/</link><pubDate>Fri, 05 Nov 2021 14:06:52 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E5%A6%82%E4%BD%95%E5%9C%A8stm32cubeide%E4%B8%AD%E4%BD%BF%E7%94%A8cmsis-dsp%E5%BA%93%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E5%9C%B0%E5%9D%80/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E5%A6%82%E4%BD%95%E5%9C%A8stm32cubeide%E4%B8%AD%E4%BD%BF%E7%94%A8cmsis-dsp%E5%BA%93%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E5%9C%B0%E5%9D%80/cover.jpg" alt="Featured image of post 如何在STM32CubeIDE中使用CMSIS DSP库" /&gt;&lt;p&gt;&lt;a class="link" href="https://community.st.com/s/article/configuring-dsp-libraries-on-stm32cubeide" target="_blank" rel="noopener"&#10; &gt;Configuring DSP libraries on STM32CubeIDE&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>使用 CCS 导出 TXT 用于 BSL 烧录</title><link>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/</link><pubDate>Fri, 28 Aug 2020 16:34:57 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/cover.jpg" alt="Featured image of post 使用 CCS 导出 TXT 用于 BSL 烧录" /&gt;&lt;h1 id="使用-ccs-导出-txt-用于-bsl-烧录"&gt;&lt;a href="#%e4%bd%bf%e7%94%a8-ccs-%e5%af%bc%e5%87%ba-txt-%e7%94%a8%e4%ba%8e-bsl-%e7%83%a7%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;使用 CCS 导出 TXT 用于 BSL 烧录&#10;&lt;/h1&gt;&lt;p&gt;&lt;img alt="在这里插入图片描述" class="gallery-image" data-flex-basis="324px" data-flex-grow="135" height="739" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/img/c4583c9a3d9f17715f7bfe9319a8bc29.webp" width="999"&gt;&#10;&lt;img alt="在这里插入图片描述" class="gallery-image" data-flex-basis="324px" data-flex-grow="135" height="739" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/img/9699fe20aa6ffef261a000b3fd8bc2ba.webp" width="999"&gt;&#10;&lt;img alt="在这里插入图片描述" class="gallery-image" data-flex-basis="324px" data-flex-grow="135" height="739" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/img/dbe6eb5628f458c8fb049e0216c87aff.webp" width="999"&gt;&#10;&lt;img alt="在这里插入图片描述" class="gallery-image" data-flex-basis="213px" data-flex-grow="88" height="1080" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/%E4%BD%BF%E7%94%A8ccs%E5%AF%BC%E5%87%BAtxt%E7%94%A8%E4%BA%8Ebsl%E7%83%A7%E5%BD%95/img/73853efe3996224d43427459dd322c6f.webp" width="960"&gt;&lt;/p&gt;&#10;</description></item><item><title>Arduino通过USB转TTL无BootLoader（引导程序）烧录程序的两种办法</title><link>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/</link><pubDate>Sun, 09 Aug 2020 19:51:21 +0800</pubDate><guid>https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/</guid><description>&lt;img src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/cover.jpg" alt="Featured image of post Arduino通过USB转TTL无BootLoader（引导程序）烧录程序的两种办法" /&gt;&lt;h1 id="arduino-通过-usb-转-ttl-无-bootloader引导程序烧录程序的两种办法"&gt;&lt;a href="#arduino-%e9%80%9a%e8%bf%87-usb-%e8%bd%ac-ttl-%e6%97%a0-bootloader%e5%bc%95%e5%af%bc%e7%a8%8b%e5%ba%8f%e7%83%a7%e5%bd%95%e7%a8%8b%e5%ba%8f%e7%9a%84%e4%b8%a4%e7%a7%8d%e5%8a%9e%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;Arduino 通过 USB 转 TTL 无 BootLoader（引导程序）烧录程序的两种办法&#10;&lt;/h1&gt;&lt;!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} --&gt;&#10;&lt;!-- code_chunk_output --&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="#arduino-%e9%80%9a%e8%bf%87-usb-%e8%bd%ac-ttl-%e6%97%a0-bootloader%e5%bc%95%e5%af%bc%e7%a8%8b%e5%ba%8f%e7%83%a7%e5%bd%95%e7%a8%8b%e5%ba%8f%e7%9a%84%e4%b8%a4%e7%a7%8d%e5%8a%9e%e6%b3%95" &gt;Arduino 通过 USB 转 TTL 无 BootLoader（引导程序）烧录程序的两种办法&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e6%b3%a8%e6%84%8f" &gt;注意&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e4%ba%8e-bootloader-%e7%9a%84%e5%ba%9f%e8%af%9d" &gt;于 BootLoader 的废话&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e9%80%9a%e8%bf%87-arduinoide-%e7%9a%84-serial-%e6%a8%a1%e5%bc%8f%e7%83%a7%e5%bd%95" &gt;通过 ArduinoIDE 的 Serial 模式烧录&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e9%80%9a%e8%bf%87%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%96%87%e4%bb%b6%e7%83%a7%e5%bd%95" &gt;通过二进制文件烧录&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a class="link" href="#%e6%80%bb%e7%bb%93" &gt;总结&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;!-- /code_chunk_output --&gt;&#10;&lt;h2 id="注意"&gt;&lt;a href="#%e6%b3%a8%e6%84%8f" class="header-anchor"&gt;&lt;/a&gt;注意&#10;&lt;/h2&gt;&lt;p&gt;（这个实验室基于 stm32duino 的，avr 单片机并不直接通用，不过如果你准备尝试使用串口来给 avr 单片机（&lt;em&gt;就是 Arduino 官方出的几款 Arduino&lt;/em&gt;）烧录 Arduino 的 BootLoader，建议直接放弃因为 avr 单片机并不支持直接使用串口上传程序，而且 Arduino 的 BootLoader 好像目的也就是让 Arduino 能够直接串口烧录程序。&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;也就是说你不能在没有 BootLoader 的情况下烧录 avr-Arduino 的 BootLoader，而当你可以用串口给 avr-Arduino 烧录 BootLoader 时就说明你已经有 BootLoader 了，可以不用再烧录一次了&lt;/em&gt;）&lt;/p&gt;&#10;&lt;h2 id="于-bootloader-的废话"&gt;&lt;a href="#%e4%ba%8e-bootloader-%e7%9a%84%e5%ba%9f%e8%af%9d" class="header-anchor"&gt;&lt;/a&gt;于 BootLoader 的废话&#10;&lt;/h2&gt;&lt;p&gt;因为准备参加电赛，想着如果比赛可以用 Arduino 或许会方便很多，所以准备研究一下 Arduino 的底层程序，学习一下如何把随便一块芯片都能做成 Arduino 来开发。不过这篇帖子和此并没有太大关系，只是属于机缘巧合做的一个小实验而已，对于已知 BootLoader 的原理或者想自己写 BootLoader 的朋友并无太大帮助。&lt;/p&gt;&#10;&lt;p&gt;最开始初学的时候，买了一块 nano 板，结果在我准备做点骚操作的时候（具体忘了做了啥了，好像是写错了个指针？），它被我搞废了，烧录不了程序。然后各种查资料，怀疑是 BootLoader 的问题，需要重新烧 BootLoader。（事实上现在我也不知道具体是不是真的，因为拖延症导致我很久没去碰这块板子，现在不知道扔哪去了。而且当时没有记录的习惯，这个世界又多了个未解之谜）&lt;/p&gt;&#10;&lt;p&gt;当时我并不清除 BootLoader 是个什么东西，毕竟年轻的我看见 hardware 文件夹里那一堆文件就头（tuo）疼（yan），但是总体印象大概就是 Arduino 的便捷和这玩意有很大关系。然后在我脑海中 Arduino 不能没有 BootLoader 这个想法就形成了，于是这次准备把 MSP430 做成 Arduino 的时候我就想到了是不是要烧 BootLoader？但是打开官方给出的 energia 软件，在其目录下并未发现 BootLoader 的文件，而且软件也没有给出烧录引导程序这一选项，所以我对我的认知产生了一丝丝怀疑。&#10;&lt;img alt="avr" class="gallery-image" data-flex-basis="438px" data-flex-grow="182" height="525" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/img/89700e50a16f79ed64fc41553b94362c.webp" width="960"&gt;&lt;/p&gt;&#10;&lt;img alt="energia" class="gallery-image" data-flex-basis="438px" data-flex-grow="182" height="525" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/img/1faee740b48f0ec670aebde6bbf8f117.webp" width="960"&gt;&lt;p&gt;于是，我选择再搜索一下 BootLoader 到底是什么，&lt;a class="link" href="https://baike.baidu.com/item/BootLoader/8733520?fr=aladdin" target="_blank" rel="noopener"&#10; &gt;百度的解释&lt;/a&gt;是可以把它当做一个启动引导程序，但是感觉这种解释有点抽象，然后我找到&lt;a class="link" href="https://www.cnblogs.com/anandexuechengzhangzhilu/p/10719808.html" target="_blank" rel="noopener"&#10; &gt;另外一篇文章&lt;/a&gt;是说把它当做一个系统，我们的程序就是运行在这个系统的软件，这种说法感觉有一定道理，但是感觉又不是那么对，因为平常如果我们没有 BootLoader，我们也可以对普通单片机烧录程序，但是如果软件没了系统，是无法直接在电脑裸机上运行的。但是这个文章还是给了我一定的思路，所以我搜索了一下“如何使用串口给 avr 烧录程序”，然后我找到了&lt;a class="link" href="https://wenku.baidu.com/view/de9810795acfa1c7aa00ccd8.html" target="_blank" rel="noopener"&#10; &gt;这个&lt;/a&gt;。然后结合我目前掌握的知识和已知条件：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;每次 Arduino 在上传程序时都会进行一次复位，我怀疑是为了让 Arduino 进入 BootLoader 模式&lt;/li&gt;&#10;&lt;li&gt;没有 BootLoader 的 avr 单片机不能直接在 ArduinoIDE 上烧录程序，在如何使用串口给 avr 烧录程序那篇文章里，提到了需要给 avr 烧录 BootLoader 后才可以通过串口给 avr 直接烧录程序&lt;/li&gt;&#10;&lt;li&gt;Arduino UNO 的原理图中，官方最原版使用了一块 atmega16u2，而市面上常见的 UNO R3 都是使用的一块 ch340（USB 转串口芯片）来代替，说明 BootLoader 并没有直接让 avr 芯片拥有 USB 功能&lt;/li&gt;&#10;&lt;li&gt;Arduino Leonardo 的原理图就没有使用 ch340 或是其他芯片，而是直接用 USB 数据口连接 USB 接口，而 Leonardo 和 UNO 这些的区别在于其芯片 atmega32u4 可以作为 USB 设备来识别。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;所以我姑且对 avr-Arduino 的 BootLoader 进行了这样的推测性理解：&lt;strong&gt;Arduino 的 BootLoader 可以当做一段启动程序，它的作用是让 Arduino 可以拥有与电脑直接（如 Leonardo）（或间接（如 UNO）），然后烧录时会把程序发送给 BootLoader 处理，然后 BootLoader 将其放到指定的 ROM 地址作为起始地址。在烧录结束后，芯片将从 BootLoader 部分跳到程序部分。而普通使用时，因为没有复位进入烧录这一行为，BootLoader 会被直接运行到底然后跳到真正程序起始位。如果不烧录 BootLoader，可以节省出 BootLoader 的内存空间，但是需要比较麻烦的接线方式（如 JTAG，ISP 之类）&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;当然以上为我的个人推理猜测，目前太忙（tuo）还没有专门系统地学习这一块知识（内容感觉太杂不确定学习路线，有点东学点西学点的样子，如果有大佬能够指导一下方向就太好了），如果有错误非常欢迎指正。&lt;/p&gt;&#10;&lt;p&gt;然后以下才进入正文……&lt;/p&gt;&#10;&lt;h2 id="通过-arduinoide-的-serial-模式烧录"&gt;&lt;a href="#%e9%80%9a%e8%bf%87-arduinoide-%e7%9a%84-serial-%e6%a8%a1%e5%bc%8f%e7%83%a7%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;通过 ArduinoIDE 的 Serial 模式烧录&#10;&lt;/h2&gt;&lt;p&gt;因为没有找到 MSP430 的引导程序，而 avr 的引导程序又需要烧熔丝，和我的目的（研究 msp430 的 Arduino）有比较大的差别，所以我选择了 stm32 来做测试。&lt;/p&gt;&#10;&lt;p&gt;用的是 stm32f103c8t6 的小蓝板（blue pill），大概步骤为：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;ArduinoIDE 安装开发板：http://dan.drown.org/stm32duino/package_STM32duino_index.json&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;img alt="开发板管理" class="gallery-image" data-flex-basis="394px" data-flex-grow="164" height="488" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/img/70f01c9835cfe2792692c5f00555ede4.webp" width="802"&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;stm32f103c8t6 调整好 boot 引脚，连接 usb 转 ttl，然后连接电脑&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;随便写个程序，注意引脚名称修改，我这里使用了 blink 例程，把引脚改为了 PC13&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PC13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PC13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// turn the LED on (HIGH is the voltage level)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// wait for a second&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PC13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// turn the LED off by making the voltage LOW&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// wait for a second&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;&#10;&lt;li&gt;选择好板子、端口，然后选择烧录模式为 serial&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;img alt="Serial" class="gallery-image" data-flex-basis="246px" data-flex-grow="102" height="388" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/img/0c32af7676ee0b7015f5451cf51485f7.webp" width="399"&gt;&lt;ol start="5"&gt;&#10;&lt;li&gt;点击上传即可&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;详细步骤请参考帖子：http://www.elecfans.com/d/1002467.html&lt;/p&gt;&#10;&lt;h2 id="通过二进制文件烧录"&gt;&lt;a href="#%e9%80%9a%e8%bf%87%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%96%87%e4%bb%b6%e7%83%a7%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;通过二进制文件烧录&#10;&lt;/h2&gt;&lt;p&gt;这个方法需要下载软件，软件使用时只需要一路点 next 即可，不懂的地方直接用翻译软件翻译一下就懂了，stm32 的二进制烧录方式具体步骤可以参考这个帖子：https://www.cnblogs.com/wangguchao/p/7308657.html&lt;/p&gt;&#10;&lt;p&gt;而 Arduino 的二进制文件可以通过 ArduinoIDE 的项目-导出二进制文件获取，会导出到工作文件夹下。&lt;/p&gt;&#10;&lt;img alt="二进制" class="gallery-image" data-flex-basis="371px" data-flex-grow="154" height="170" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.yunwuhai.com/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F/%E5%B7%A5%E5%85%B7%E9%93%BE/arduino%E9%80%9A%E8%BF%87usb%E8%BD%ACttl%E6%97%A0bootloader%E5%BC%95%E5%AF%BC%E7%A8%8B%E5%BA%8F%E7%83%A7%E5%BD%95%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%8A%9E%E6%B3%95/img/209ec1bafe6ef1e59222db663663839c.webp" width="263"&gt;&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结&#10;&lt;/h2&gt;&lt;p&gt;这个帖子其实就是做个思路引导，同时也是自己的学习笔记，如果需要烧录 stm32 的 Arduino 程序，在暂时不知道 BootLoader 原理或怎么写的情况下，可以用这种方式凑合着下载，而同理，avr 可以用 isp 或 jtag，msp430 用 jtag 或 sbw 或 bsl 来下载。不过最好再深入学习一下吧……&lt;/p&gt;&#10;&lt;p&gt;以上内容如有错误或遗漏，欢迎指正！&lt;/p&gt;&#10;</description></item></channel></rss>