STM32单片机电路中, BOOT0电阻设计

文章详细测试了在STM32单片机开发中,使用SWD下载时,BOOT0和RST端口的电阻可以省略,无需额外的外部电阻,简化了电路设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简化STM32开发端口设计

 

01 STM32单片机设计


一、前言

  在 STM32单片机设计中,  之前习惯在 BOOT0端口加上一个下拉电阻, RESET端口增加一个上拉电阻。  那么问题来了, 如果将 BOOT0, RST 都悬空, 或者分别直接接地,接VCC, 是否会影响单片机程序开发呢? 这个问题很关键, 因为在手工制版的时候, 可以避免很大的麻烦。 另外, 如果RST管脚在 SWD 下载的过程中不需要, 也可以简化调试端口的设计。 下面通过手边的测试电路, 回答上面的问题。

GM1707632088_1920_1080.MPG|_-4

二、测试结果

  使用这个前两天制作的 STM32F373 单片机实验电路板进行测试,  通过六芯的探针夹子将JLINK 连接到电路板, 其中包括有 SWD的两条线, RST以及两条串口线。  下面使用 JFLASH 测试对它的编程。

GM1707632583_1920_1080.MPG|_-4

  不知道为什么, 昨天还好好地测试电路板, 今天使用 JLINK 无法下载程序了。  只好重新更换一块测试电路板。 现在可以正常下载程序了。  下面使用 0欧姆电阻替换掉原来的 10kΩ 的 BOOT0电阻,  测试是否能够进行正常程序下载。  经过测试, 一切OK。  下面将 BOOT0 电阻去掉, BOOT0 管脚悬空, 经过测量, 这个管脚本身内部接地了。  通过测试, 下载程序正常。 这说明后面进行电路设计中, BOOT0 上的电阻 的确可以省略了。

GM1707633751_1920_1080.MPG|_-8
  下面将 RST 电阻去掉,  使得 RESET管脚悬空,  靠芯片内部弱的上拉电阻置高电平。  测试下载功能, 一切正常。  下面将 RESET引线从 6芯调试端口去掉,  重新进行测试。  下载运行功能正常。

GM1707634316_1920_1080.MPG|_-7

 

  结 ※


  文测试了在STM32单片机开发过程中,  如果使用SWD进行程序更新的情况下。  可以直接将 BOOT0 直接接地, 或者悬空。  RESET管脚也可以省略。  这样就可以大大简化电路板的设计制作了。

GM1707634464_1920_1080.MPG|_-5


### STM32 单片机BOOT0BOOT1 引脚连接方法及作用 #### BOOT0 引脚的功能与连接方式 BOOT0 是一个输入引脚,用于选择系统的启动模式。当此引脚被拉高(通常通过上拉电阻到 VDD 或者外部信号源),STM32 将进入系统存储器启动模式;而当其接地时,则会从内部 Flash 启动并运行用户编写的程序[^1]。 对于大多数应用来说,在不需要频繁更改启动配置的情况下,建议将 BOOT0 接地以确保设备每次加电都能自动执行预存于闪存内的固件代码[^2]。 #### BOOT1 引脚的功能与连接方式 在某些系列的 STM32 中还存在另一个名为 BOOT1 的引脚,它配合 BOOT0 使用来进一步定义具体的启动行为。不过需要注意的是,并不是所有的型号都具备这个额外的选择端子。如果目标器件确实拥有两个这样的管脚: - 当两者均为低电平时 (即均接地),则默认按照常规流程加载内建 ROM Monitor; - 若仅使能其中一个为高状态(比如只让BOOT0=High,BOOT1=Low),那么可能意味着激活特定类型的引导加载过程,具体取决于所使用的MCU版本及其文档说明; - 如果二者皆处于逻辑高位,则可能会触发其他特殊功能或是保留给未来扩展使用[^3]。 为了便于日后维护或在线编程的需求,设计电路板时可考虑加入跳线帽或者拨码开关等形式允许灵活调整上述两者的组合情况,以便按需切换不同的工作模式而不必重新焊接硬件连线。 ```c // 示例:读取BOOT0BOOT1的状态 GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); // 假设BOOT0/BOOT1位于PA口 GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); uint8_t bootMode = ((HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) << 0) | (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) << 1)); switch(bootMode){ case 0b00: /* Normal execution from flash */ break; case 0b01: /* System memory boot mode */ break; default : /* Reserved or special modes */ break; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值