STM32F103C8T6—烧录程序

1. ST-Link烧录程序

该USB驱动程序(STSW-LINK009)适用于ST-LINK/V2, ST-LINK/V2-1和STLINK-V3板及其衍生物
首先下载ST-link驱动,网址:https://www.st.com/zh/development-tools/stsw-link009.html

ST-Link软件下载

进入链接后点击获取软件

点击获取最新版本

然后接收许可协议,如果有账号登录即可,没有账号可以填写资料发送到邮箱下载

ST-Link软件安装

将下载好的压缩包en.stsw-link009.zip解压,根据自己的操作系统选择响应的安装包,64位的操作系统选择dpinst_amd64.exe,32位的操作系统选择dpinst_x86.exe,双击运行

选择下一页

点击安装

安装完成,点击完成

打开设备管理器,找到通用串行总线设备,此时安装成功

程序下载

注意:要将开发板上的BOOT0的跳线帽连接低电平

2. 串口烧录程序

CH340驱动下载安装

进入https://www.wch.cn/downloads/CH341SER_ZIP.html,下载驱动并安装

连接

将usb转ttl插入电脑,可以看到下图内容,说明安装成功

将usb转ttl的GND和3.3V分别连接到stm32f103c8t6的GND和3.3V,TX连接开发板的A10RX连接开发板的A9

程序下载

注意:开发板的BOOT0接1,BOOT1接0
点击开始编程就可以下载程序

STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区 域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 3)SRAM = 芯片内置的RAM区,就是内存啦。            在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表: BOOT1=x   BOOT0=0   从用户闪存启动,这是正常的工作模式。 BOOT1=0   BOOT0=1   从系统存储器启动,这种模式启动的程序功能由厂家设置。 BOOT1=1   BOOT0=1   从内置SRAM启动,这种模式可以用于调试。         在系统复位后, SYSCLK的第4个上升沿, BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。         在从待机模式退出时, BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后, CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。        因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。 Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。 STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。         根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问: ● 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000 或 0x0800 0000。 ● 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。(可用于串口下载) ● 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。 注意: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,从新映射向量表之SRAM中。 ————————————————
### 可能的原因分析 当遇到STM32F103C8T6烧录程序无反应的情况时,可能由多种因素引起。以下是常见原因及其解决方案: #### 电源和硬件连接问题 确保所有硬件连接正确且稳固非常重要。对于STM32F103C8T6与J-LINK之间的连接,请确认以下几点[^1]: - **供电正常**:检查STM32开发板是否已通过USB或其他方式获得稳定的工作电压。 - **接地良好**:GND端子应牢固接触以保证电路回路完整。 - **信号线匹配**:SWDIO、SWCLK等调试接口引脚需按照规定一一对应接好。 如果上述物理层面均无误,则可进一步排查软件配置方面的问题。 #### 软件环境设置不当 编程工具链以及IDE中的项目属性设定也会影响下载过程的成功与否。具体来说要注意: - 使用支持该型号MCU的固件库版本创建工程文件; - 正确指定目标设备参数(如芯片系列、闪存大小); - 配置合适的启动模式(通常为系统存储器或内部Flash); 另外,在某些情况下,可能是由于所选驱动不兼容造成的通信失败现象。此时建议更新至最新版STLink Utility 或者尝试更换其他第三方烧写工具来排除此类干扰源。 #### 处理异常状态下的单片机 假如以上措施仍未能解决问题的话,那么很有可能是因为MCU进入了某种特殊工作模式而无法响应外部指令。针对这种情况可以采取如下手段恢复默认行为: - 断电重启法——移除电源一段时间后再重新接入; - 进入Bootloader模式——利用特定按键组合使微控制器进入引导加载程序等待接收新代码; 最后提醒一点,务必保持良好的静电防护习惯以免损坏敏感元件。 ```cpp // 示例:简单测试LED闪烁程序用于验证基本功能 #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); while (1) { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 切换PA5引脚电平 HAL_Delay(500); // 延迟500ms } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值