stm32f031G6U6单片机SWD烧写一次后,无法再次烧写解决方法。

这几天在做一个小项目,需要用到stm32f0系列的单片机,画好的板子引出swd,方便调试和烧写程序,可是第一次swd烧写程序后,想再次烧写,发现keil里始终找不到设备,而且我的程序里也并没有复用swd的两个引脚,很是疑惑。上网找了很多方法,我试了几个发现,只有一个对我这个情况有用。

步骤:

将单片机reset脚拉低,keil即可找到设备,此时将reset脚拉高,进行swd烧写,成功。


具体原因我并不是很理解,但这个方法确实解决了困扰我两天的问题,值得记录下来。

### STM32F031K6U6 单片机概述 STM32F031K6U6 是一款基于 ARM Cortex-M0 内核的微控制器,属于 STM32F0 系列的一部分。该系列 MCU 提供了高性能、低功耗以及丰富的外设接口,适用于多种嵌入式应用开发环境[^1]。 #### 主要特性 - **内核**: ARM Cortex-M0 处理器核心 - **工作频率**: 高达 48 MHz 的 CPU 工作速度 - **存储空间** - Flash 存储器大小为 32 KB 或者 64KB (具体取决于型号) - SRAM 容量达到 8 KB - **供电电压范围**: 支持宽泛的工作电源区间(2.0V 至 3.6V),适应不同应用场景需求 - **封装形式多样**, 包括 LQFP48, TSSOP20 和 UFQFPN32 封装选项可供选择 - **集成丰富外设资源** 如 UART/SPI/I²C 接口、定时器模块等,满足多样化通信与控制功能实现的要求 对于开发者而言,在着手项目前详细了解目标器件的数据手册是非常必要的。数据手册不仅涵盖了上述提到的基础属性介绍,还包括详细的寄存器映射表、引脚定义说明等内容,这些都是编底层驱动程序不可或缺的重要参考资料。 当遇到外部晶振无法正常起振的情况时,可以通过编程方式切换至内部 RC 振荡源来确保系统能够顺利初始化并运行起来。根据官方文档指导,适当调整 RCC(Reset and Clock Control)相关设置即可完成此操作[^2]。 至于 Keil IDE 下载调试过程中可能出现 "No Target Found" 错误提示的问题,则通常是因为硬件连接不稳定或是 ST-LINK 调试工具未被正确识别所引起。按照特定的操作流程——即保持复位按钮按下状态直至固件上传完毕后再释放——往往可以有效规避这类困扰[^3]。 ```cpp // 示例代码:启用内部高速RC振荡器作为系统时钟源 RCC->CR |= RCC_CR_HSION; // 打开HSI使能位 while (!(RCC->CR & RCC_CR_HSIRDY));// 等待 HSI 准备就绪标志置位 FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_1WS; RCC->CFGR &= ~RCC_CFGR_SW; // 清除SW[1:0]位 RCC->CFGR |= RCC_CFGR_SW_HSI; // 设置SYSCLK=HSI ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值