Stm32 向 keil 中添加库及应用程序 | 学习笔记

简介: 快速学习 Stm32 向 keil 中添加库及应用程序

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Stm32 向 keil 中添加库及应用程序 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11148


Stm32 向 keil 中添加库及应用程序

三个文件 core_cm3.c、system_stm32f10x.c、startup stm32f10x xx.s 放进来,APP 自己要写一个,库自己去加载。先来看 system,在 system 里面要去添加文件,工程里面没有任何的文件,有的都是一些工程文件,自己用的自己的库,需要把的 library 给拷贝过去,这里下载下来有很多的东西,但只要考一个。要写自己的应用程序,假设叫 APP,文件夹的名字和工程里面的名字不一定要一模一样,俩没有任何关系的。

image.png

再次去添加 system,从 library 里面去找刚讲到的必须的这几个文件 core_cm3.c、system_stm32f10x.c、startup stm32f10x xx.s 文件类型选择成所有文件,然后选择 MD,因为这是属于中容量的芯片,

image.png

要选择启动文件,选完后关闭,系统文件就加进来了,接下来加载应用程序,为了节省时间,应用程序就建议从给的技术代码里面去拷贝一个过来,这里拷了两个文件,拷过来了之后选择  APP 选择添加 main.c 应用程序就有了。

应用程序可以点开看一下,很明显,是在操作 GPIO, 用到 gpio 是库里面提供的, library 里面提供的,现在再来决定到底要加载哪些库。所以说先在 library 这个地方选择 Manager,选择 lib 添加 library/src。用的 gpio 必须得添加。

其他的库 ctrl+a 全部加进来没任何问题。只是第一次编译的时候时间稍微长一点,下次编译其实很快也没有任何问题,但是这个地方既然是学习,就用到哪个加哪个,也知道哪些文件大致的作用。

用到了 GPIO 就加,但是 GPIO 是挂在总线的某条时钟上面,所以需要用到时钟配置,这里面有关时钟的设置 stm32f10x_rcc 只要用到 32 的任何一个硬件,stm32f10x_rcc 是必须添加的,无论用的是 gpio 定时器中断 flash 还是 i2c 都要加时钟,然后点 close。

工程就给构建好了,系统文件、库文件、还有、应用程序,将来还要写更多的应用程序,就自己在这个里面继续写建文件夹子文件夹,也可以在 main_c 加。

添加完看有需要什么配置。有一个头文件 stm32f10x_conf.h,库里面有的时候并不提供这个文件,可以去看相关资料,搜索到了一些文件,到 library 去搜,范围缩小,但是搜不到这个文件,应该是从例子里面搜出来的。

stm32f10x_conf.h 文件里面的东西很少,里面内容就是的库里面的 inc,所有的这些模块的头文件,意思就是 stm32f10x_conf.h 把这些模块一次性包含进来,在的程序里面,只需要包 stm32f10x_conf.h,包含的是 stm32f10x.h 文件,库是有的,这个文件里面间接的包含了 stm32f10x_conf.h,所以使得的应用程序里面可以有很少的头文件包含,但是却能够把所有模块都给涵盖进来,如果不去写stm32f10x_conf.h 头文件,只需要在程序里面把用到的,比如 GPIO 一个个写下来就可以。官方的库的结构建议。比如让应用程序去包含 stm32f10x.h 里面就包含了stm32f10x_conf.h,stm32f10x_conf.h 去包含广大的模块的接口,所以建议还是包进来。

完了之后再去配置。对于 32keil 的环境配置,主要就是在一个 options for target选项卡里面,叫魔术棒。只要点开这个,就配这一个就可以了。

如下图:

image.png

第一个设备一开始就已经选择了,所以这个就无需再去做配置,如果没选对,可以改一下在这里。

然后第二个是 8 兆,默认的其实多少兆都没有关系,因为影响不大,自己去看的原理图,

image.png

一个是 rpc 的,一个是 CPU 的。输出的文件基本上默认就可以,都不用动, user不用动,one ELF,c99 这些都去掉。

define 必须要写上 STM32F10X_MD.USE_STDPERIPH_DRIVEF. 其实就是两个宏定义,第一个宏是代表着现在芯片的类型是中容量的,第二个宏将来会出现在代码当中,会去选择以此为代表的那些代码模块,这一个是表示使用标准库标准库,定了宏,USE STDPERIPH DRIVER 这个就变成了 define,就会被调用,被包含进来。配完之后,紧接着要加入头文件的路径。用了自己的库,其实用官方的库也是要指定这个路径的,所以要在这个地方把的所有要用到的头文件全部加进来。

新建选择把路径加进来。keil 这个软件比较好的一点就是,选完路径之后,自动变成相对路径。

image.png

比如 IAR 软件开发环境,要自己去选,选择相对路径的好处就是便于在别的电脑去重新编译工程,保证能编过。

library 里面有好多库,里面有 include,要加进来。能够有头文件的地方,就全部被加进来点如下:

Sctup Compier lnclude Paths:

.vaop

.\libraries\STM32F10_StdPerph_Deivar.inc

.\Libraries\CMSIS\CM3\CoreSupport

. \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10

加完了之后继续 Debug 要改一下,就跟的下载方式有关。下载是用的是 ST link,因为这很便宜,选完了之后,再继续往后,也不用设置,Debug 退的 settings 还要重新设置一下,选择 ST link v2, port 选 Sw;trees 不修改, flash download这个地方默认是 128k,64q128k 本身是兼容的,都是属于中容量设备,因为找不到 64k。点确定,没有报错了,然后选择 review 全部编译,Build 是编译当前文件,第一次的话可能需要全部编译一下:

int main (void){

led_init ();

while(1){

LED_Xxx_ON();

delay_ms ( 300);

LED_XXx_OFF ();

delay_ms (300);

}

}

第一次编译会慢,以后就会正常,如下图基本上到链接了,说明编译就正常通过了,剩下的就是要往芯片里下载,

image.png

以上就是Keil环境的搭建。

相关文章
|
1月前
|
传感器 数据采集 物联网
STM32:高性能微控制器与广泛的应用领域
STM32:高性能微控制器与广泛的应用领域
163 0
|
4天前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
11 2
|
1月前
|
传感器
|
4天前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
10 1
|
4天前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
16 4
|
5天前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
12 2
|
5天前
|
开发者
【经典案例】使用HAL库配置STM32F407的SPI外设
在嵌入式系统开发中,STM32F407是一款广泛应用的微控制器,而SPI(Serial Peripheral Interface)是一种常用的通信接口。本文将详细介绍如何使用STM32的硬件抽象层(HAL)库配置STM32F407的SPI外设,并提供完整的代码示例。
17 1
|
29天前
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
|
1月前
|
传感器 存储 缓存