STM32如何使用STLINK下载程序:点亮LED跑马灯(库版本)

系列文章目录

STM32F103ZE学习记录:主要参考正点原子教程



前言

这篇笔记主要是介绍一下使用ST_SLINK进行烧录点亮LED灯程序,以及我遇到的一些问题,


一、环境的搭建

1.新建编程文件操作步骤

1.1在以搭建好的工程文件中,新建外设文件夹

在这里插入图片描述
1.2在工程文件夹中,添加路径
在这里插入图片描述
在这里插入图片描述
1.3建立<.c>和<.h>文件
在这里插入图片描述
在这里插入图片描述
1.4将<.c>文件添加到文件夹中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<.h>同样的操作步骤

2.ST_LINK烧录搭建

2.1点击魔术棒
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是我在使用STLINK下载时出现了问题

3.STlink下载出现st-link usb communication error解决方法

解决方法就是进行固件升级

点击ST-LinkUpgrade.exe,打开st-link upgrade软件进行固件升级

插上st-link固件到电脑,点击Device Connect按钮,连接st-link

千万不要将USB接口拔掉,否则会导致升级失败

在这里插入图片描述
若出现如下报错,则可尝试重新插拔st-link固件,或者换一个usb接口进行连接
在这里插入图片描述

连接成功!如下图,可以看到当前固件版本以及即将升级的版本,点击yes进行升级
在这里插入图片描述
更新驱动

已管理员身份运行D:\MDKkeil5\ARM\STLink\USBDriver\stlink_winusb_install.bat文件,进行驱动更新
在这里插入图片描述
点击下一步,直至完成。
问题就轻松加愉快的解决了!

二、LED跑马灯程序

STM32与51单片机确实不同,STM32要比51更高级;
STM32程序直接调用库函数,比51要方便很多,STM32的寄存器很多,功能也比51要更加强大。
*操作步骤 借鉴正点原子PPT
在这里插入图片描述
实际上也是对寄存器进行操作。

1.LED.c程序

用到的重要函数 *借鉴正点原子PPT
在这里插入图片描述

代码如下(所示):

#include "led.h"
#include "stm32f10x.h"
void LED_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStruct;
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB的时钟
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能GPIOE的时钟
	
		GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//选择推挽是因为可以直接输出高电平
		GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;//选择GPIOB5
		GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;//输出速度是50M
	
		GPIO_Init(GPIOB,&GPIO_InitStruct);//GPIOB5初始化
	
		GPIO_SetBits(GPIOB,GPIO_Pin_5);//对GPIOB5设置高电平
	
		GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//选择推挽是因为可以直接输出高电平
		GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;//选择GPIOB5
		GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;//输出速度是50M
	
		GPIO_Init(GPIOE,&GPIO_InitStruct);//GPIOE5初始化
		GPIO_SetBits(GPIOE,GPIO_Pin_5);//对GPIOE5设置高电平
}

2.LED.h程序

代码如下(所示):

#ifndef __led_H
#define __led_H
void LED_Init(void);

#endif

在这里我遇到了一个警告,很有意思啊

3…\harwred\led\led.h(7): warning: #1-d: last line of file ends without a newline

这可能是MDK开发人员留的一个小彩蛋,就是最后一行代码,必须回车才可以,感觉那个人一定有强迫症。

4.main.c程序

进行函数的调用就可以了

代码如下(所示):

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
int main(void)
{
		LED_Init();//进行LED初始化的调用
		delay_init();//进行延时函数初始化的调用
		while(1)
		{
					GPIO_SetBits(GPIOB,GPIO_Pin_5);//对GPIOB5设置高电平
					delay_ms(500);//延时500毫秒
					GPIO_ResetBits(GPIOB,GPIO_Pin_5);//对GPIOB5设置低电平
					delay_ms(500);//延时500毫秒
					GPIO_SetBits(GPIOE,GPIO_Pin_5);//对GPIOE5设置高电平
					delay_ms(500);//延时500毫秒
//					GPIO_ResetBits(GPIOB,GPIO_Pin_5);//对GPIOB5设置低电平
					GPIO_ResetBits(GPIOE,GPIO_Pin_5);//对GPIOE5设置低电平
					delay_ms(500);//延时500毫秒
		}
}

5.最后进行STLINK的下载

在这里插入图片描述


实验现象

STM32LED灯闪烁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bitter tea seeds

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

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

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

打赏作者

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

抵扣说明:

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

余额充值