STM32单片机通过串口烧录hex程序

    我之前买过一个STM32最小程序单片机,原来下载51单片机都是使用串口方式,这里也通过串口方式烧录STM32单片机,还需要借助一个USB TO TTL工具。

    USB TO TTL工具类似一个U盘工具,只不过它另一端是接线,一般电脑会自动安装驱动,如果插上电脑,串口号识别不了,那么就需要安装CH340驱动。

    这个USB TO TTL工具,这里需要3V3,RXD,TXD,GND四根接线。分别接上单片机的3V3,A9,A10,GND。

    单片机上还有一个需要设置,就是BOOT0,跳帽要接到1那一侧,BOOT1接到0那一侧,如下所示:

    A9,A10是给串口收发数据的。这里简单焊接了一下。 

    下载程序到STM32单片机还需要一个FlyMcu程序,这个程序很小,很多地方都可以下载到,打开之后,界面如下所示:

    ①串口COM6是单片机连接USB TO TTL,插上电脑之后自动识别的,波特率也是默认的。如果这里没有识别,检查CH340驱动是否安装。

    ②第二个是我们的点灯程序,这里是编译之后的hex文件。

#include "stm32f10x.h"

void Delay()
{
  unsigned int i,j;
	for(i=0;i<1000;i++)
	  for(j=0;j<1000;j++);
}

void LED_Config()
{
    GPIO_InitTypeDef GPIO_InitStructure;                 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;             
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
    GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}

int main(void)
{
	LED_Config();
	while(1)
	{
	    GPIO_SetBits(GPIOC, GPIO_Pin_13);
		Delay();
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		Delay();
	}
}

    最小程序单片机,有一个LED是电源管理的,还有一个是连接PC13端口的,这里的程序就是用来让PC13端口输出高低电平并延时,达到闪烁效果的。程序使用了标准库。

     ③ 勾选上编程后执行,也就是下载之后执行。

     ④ 选择第四个选项:DTR低电平复位,RTS高电平进BootLoader

     ⑤ 开始编程,点击之后就是下载程序到单片机。

     如果下载成功,那么单片机程序运行,绿色的LED就会闪烁。

     值得注意的是,这里程序下载之后,马上执行,没有额外操作,不需要将BOOT0切换到0那一侧,也不需要按reset按键。(断电之后,重新上电,要运行程序,需要先将BOOT0切换到0,然后按reset)

    这里下载程序是正常的,所以操作可能看不出什么问题,但是有时候,点击开始编程,单片机并没有下载程序,FlyMcu工具里面显示一直在连接中,最后失败。这种硬件问题排查,非常痛苦,因为我们不确定哪里完全没问题,只能不断检查这个设置,那个配置。我这里也出现过这样的问题。我开始怀疑是串口线接错了,但是反复确认,不是线接错了。又怀疑BOOT0,BOOT1跳线帽设置错误,反复更改,之后还按下reset按键,依旧没有改变。最后又把问题转到FlyMcu工具的设置上,其实这里面唯一可能出错的就是DTR,RTS电平设置 下拉选择。最后,把问题放在了单片机排针上,我本来是用了排针,但是没有焊接每一个针脚,只是让他固定住就行了,3后来卸下排针,直接用公母杜邦线连接A9,A10,竟然烧录成功,而且程序运行正常。最后又把排针装上,把A9,A10口焊接,再次验证,又烧录成功了,这次的教训就是排针有可能也是不导通的,虽然插入了对应的电路板孔中。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luffy5459

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

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

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

打赏作者

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

抵扣说明:

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

余额充值