STM32F103指南者开发板配置函数库工程文件并点灯(使用STLINK)
创始人
2025-05-30 16:02:24

1 前言

使用STM32F103指南者开发板,安装了Keil5,使用St-Link下载调试(手里有St-Link就没买DAP),也使用板载串口ISP下载hex文件。

使用库函数开发,新建了工程模板文件,我参考了野火和江科大自动化协的视频教程,还是觉得江科大自动化协的比较好理解。

2 工程模板文件

出于直观的考虑,我直接展示我的工程模板文件目录,再做解释。

STM32工程模板
--Start
----startup_stm32f10x_hd.s
----core_cm3.c
----core_cm3.h
----stm32f10x.h
----system_stm32f10x.c
----system_stm32f10x.h
--Library
----misc.c
----misc.h
----stm32f10x_adc.c
----stm32f10x_adc.h
----stm32f10x_bkp.c
-----stm32f10x_bkp.h
-----stm32f10x_can.c
-----stm32f10x_can.h
-----stm32f10x_cec.c
-----stm32f10x_cec.h
-----stm32f10x_crc.c
-----stm32f10x_crc.h
-----stm32f10x_dac.c
-----stm32f10x_dac.h
-----stm32f10x_dbgmcu.c
-----stm32f10x_dbgmcu.h
-----stm32f10x_dma.c
-----stm32f10x_dma.h
-----stm32f10x_exti.c
-----stm32f10x_exti.h
-----stm32f10x_flash.c
-----stm32f10x_flash.h
-----stm32f10x_fsmc.c
-----stm32f10x_fsmc.h
-----stm32f10x_gpio.c
-----stm32f10x_gpio.h
-----stm32f10x_i2c.c
-----stm32f10x_i2c.h
----stm32f10x_iwdg.c
----stm32f10x_iwdg.h
----stm32f10x_pwr.c
----stm32f10x_pwr.h
----stm32f10x_rcc.c
----stm32f10x_rcc.h
----stm32f10x_rtc.c
----stm32f10x_rtc.h
----stm32f10x_sdio.c
----stm32f10x_sdio.h
----stm32f10x_spi.c
----stm32f10x_spi.h
----stm32f10x_tim.c
----stm32f10x_tim.h
----stm32f10x_usart.c
----stm32f10x_usart.h
----stm32f10x_wwdg.c
----stm32f10x_wwdg.h
--User
----main.c
----stm32f10x_conf.h
----stm32f10x_it.c
----stm32f10x_it.h

2.1 Start文件

1️⃣添加STM32的启动文件:startup_stm32f10x_hd.s

汇编文件,设置堆栈指针、设置pc指针、初始化中断向量表、配置系统时钟、引用c库函数 main
在这里插入图片描述
2️⃣把寄存器映射文件:stm32f10x.h 时钟配置文件system_stm32f10x.c、system_stm32f10x.h 移到 start文件夹下。

stm32f10x.h实现了内核之外的外设的寄存器的映射,就像51单片机的reg51.h
把外部时钟HSE=8M,经过PLL(锁相环)倍频为72M。
在这里插入图片描述
3️⃣将内核寄存器描述core_cm3.ccore_cm3.h移到start文件夹 下。
在这里插入图片描述

2.2 Library文件

incsrc下的文件都复制到 library文件夹 。

在这里插入图片描述

2.3 User文件

1️⃣main文件,主函数文件

2️⃣stm32f10x_conf.h stm32f10x_it.c stm32f10x_it.h 复制到user目录下

在这里插入图片描述
stm32f10x_conf.h是一个头文件,包含了一些宏定义和函数原型,用于配置STM32F10x系列微控制器的外设。**这个文件中的宏定义包括了许多常用的配置参数,如时钟源、GPIO端口、USART波特率等等。**此外,它还包含了一些函数的声明,如GPIO_Init、USART_Init等等,用于初始化各种外设。

stm32f10x_it.c是一个源文件,用于处理STM32F10x系列微控制器的中断。在这个文件中,可以定义各种中断处理函数,如NVIC中断处理函数、EXTI中断处理函数、USART中断处理函数等等。这些中断处理函数可以根据具体的需求进行编写,用于处理各种外部中断事件。同时,这个文件还包含了一些外部变量和函数的声明,如NVIC_Configuration函数、

stm32f10x_it.h是一个头文件,包含了一些函数原型和宏定义,用于声明中断处理函数和配置NVIC。这个文件中定义了一些中断处理函数的函数原型,如EXTI0_IRQHandler、USART1_IRQHandler等等。此外,它还包含了一些宏定义,用于配置NVIC的优先级和分组模式。

工程模板文件建立以后,我们不需要动 Start 和 Library 文件夹的内容,后续只在 User 文件夹里面修改。

3 Keil5建立项目

3.1 新建project

点击新建project(选项1) 选择在STM32工程模板文件中。
在这里插入图片描述

3.2 添加文件

右键 Target1 新建 group ,并添加对应模板的文件
在这里插入图片描述

3.3 魔术棒配置

1️⃣c/c++里面Include paths添加h文件路径,即为start、library和user文件夹路径。
在这里插入图片描述
2️⃣设置宏定义

如果你定义了USE_STDPERIPH_DRIVER 这个字符串,下面的include “stm32f10x_conf.h” 才有效

在这里插入图片描述

在这里插入图片描述

4 点灯文件

LED 硬件原理图,这里我们点亮的是R,给出PB5低电平,led就会点亮。
在这里插入图片描述

// main.c文件
#include "stm32f10x.h"                  // Device headerint main(void)
{//使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//配置端口模式GPIO_InitTypeDef GPIO_UnitStructure; //定义结构体GPIO_UnitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置推挽输出GPIO_UnitStructure.GPIO_Pin = GPIO_Pin_5;//选择端口GPIO_UnitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置速度GPIO_Init(GPIOB, &GPIO_UnitStructure); //端口初始化//设置端口电平//GPIO_SetBits(GPIOB, GPIO_Pin_5); //高电平GPIO_ResetBits(GPIOB, GPIO_Pin_5);//低电平while(1){}
}

最后一行需要留空,否则会报错。

想让以上代码正常编译,还需要修改以下两点:

1️⃣修改ARM 编译器版本

在这里插入图片描述

2️⃣修改为C99 Mode

在这里插入图片描述
3️⃣输出hex文件

在这里插入图片描述

5 配置St-Link烧录

我使用usb供电,所以St-Link 可以不接VCC,只接只要接GND,SWDIO,SWCLK三根线就可以实现。(但是需要手动 reset !)

在这里插入图片描述

Debug 选择ST-Link

在这里插入图片描述

点击Setting

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果没有stlink驱动,参考站内文章:https://blog.csdn.net/qq_52102933/article/details/126830904,在官网下载,可以用。

烧录

在这里插入图片描述

最后再按下板子的复位按钮。

在这里插入图片描述
成功点亮了。

相关内容

热门资讯

用友NC5X数据抽取 功能通过工具,对NC帐套中的特定公司和特定模块及年度进行抽取,形成独立的...
密度泛函理论-从波函数到电荷密... 1 在许多物理学和工程领域中,取得科学和技术进步关键在于能够从原子或者分子尺寸...
烫发要多久,烫头发要多久 极速... 烫发要多久目录烫发要多久烫头发要多久一般烫发需要花多长时间烫个头发大概需要多长时间烫发要多久 ...
代码br是什么意思 极速百科网... 代码br是什么意思目录代码br是什么意思代码br是什么意思
诺科壁挂炉使用方法是什么,诺科... 诺科壁挂炉使用方法是什么目录诺科壁挂炉使用方法是什么诺科壁挂炉使用方法壁挂炉使用方法是什么?诺科壁挂...
前不见古人的意思,前不见古人什... 前不见古人的意思目录前不见古人的意思前不见古人什么意思?登幽州台歌翻译前不见古人的意思 “前不...
Android---WMS核心... 目录 Activity 与 Window 相关概念 WindowManagerService  Ac...
【JavaWeb】Cookie... Cookie 257.Cookie-什么是Cookie 1、Cookie 翻译过来是饼干的意思。 2...
功率放大器的阻抗匹配原理   设计电路的时候,经常会有很多人对于阻抗有疑问,那么什么是阻抗...
苹果xs和xr的区别,ipho... 苹果xs和xr的区别目录苹果xs和xr的区别iphonexr和xs区别苹果xr怎么更新苹果xs和xr...
建设银行个人网上银行怎么登录,... 建设银行个人网上银行怎么登录目录建设银行个人网上银行怎么登录中国建设银行个人网上银行怎么登陆建设银行...
飞机上可以带几条烟,乘飞机可以... 飞机上可以带几条烟目录飞机上可以带几条烟乘飞机可以带多少条烟坐飞机可以带几条烟坐飞机可以带几条烟?飞...
4厘的利息怎么算,银行说四厘的... 4厘的利息怎么算目录4厘的利息怎么算银行说四厘的利息,怎么算?4厘的利息怎么算4厘的利息怎么算 ...
pkg打包node项目到lin... 首先看一下pkg的一些基本操作 pkg打包node项目为exe_node静态项目 导出exe_疆~的...
实验二 Wireshark 报... 实验 Wireshark 报文捕捉分析实验 小组成员:杨某 王某 郭某 徐某 一、实验目的 掌握 W...
RC4加密——python实现... 1.RC4算法简介 ​ RC4算法由Ron rivest于1987年设计出的一种对称加密算法...
跑跑卡丁车怎么反向集气,跑跑卡... 跑跑卡丁车怎么反向集气目录跑跑卡丁车怎么反向集气跑跑卡丁车反向集气教程现代跑跑卡丁车反向补气怎么玩跑...
不做老好人给你们一个最真实的大... 今天给各位分享不做老好人给你们一个最真实的大众T-ROC测评的知识,其中也会对进行解释,如果能碰巧解...
用声音控制跳跃的游戏,别停下八... 用声音控制跳跃的游戏目录用声音控制跳跃的游戏别停下八分音符酱声控技巧分享一个游戏要用尖叫声玩音符游戏...
我国的最高国家权力机关是哪个,... 我国的最高国家权力机关是哪个目录我国的最高国家权力机关是哪个我国的最高国家权力机关是()。我国最高的...
项目管理(PMP)精选题精讲 请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟࿰...
《伤寒论》——辨太阳病脉证并治... 辨太阳病脉证并治(下)1.问曰:病有结胸①,...
Chat GPT介绍 一、Chat GPT是什么? ChatGPT是一个基于大规模预训练语言模型的对话系统&...
杨永信被判刑了吗,杨永信被判刑... 杨永信被判刑了吗目录杨永信被判刑了吗杨永信被判刑了吗?杨永信这种禽兽不如的东西为什么还没死没被判罪?...
工程管理硕士要考哪些科目 极速... 工程管理硕士要考哪些科目目录工程管理硕士要考哪些科目工程管理硕士要考哪些科目 工程管理硕士考试...
请神容易送神难下一句是什么,请... 请神容易送神难下一句是什么目录请神容易送神难下一句是什么请神容易送神难,难缠贵,十二生肖里指的是那个...
汽车保养一次大概需要多少钱(4... 今天给各位分享汽车保养一次大概需要多少钱的知识,其中也会对4s店保养一次多少钱进行解释,如果能碰巧解...
linux——文本及字符的检索... 文件夹中的目标文件名搜索 find 查询某个文件夹中的某文件:find directo...
手把手教你使用QT语言专家实现... qt版本:5.14.1qtCreator版本:4.11.1硬件ÿ...
线程安全问题,两种锁(sync... 安全问题 多个线程同时操作一个共享数据时,就有可能造成错误,如重复操作&...