打印
[应用相关]

stm32 开发环境MDK+库文件配置-Changing's Blog

[复制链接]
2591|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32 是一款arm cortex-m3 架构的芯片 结合库函数使用 可以更方便的实现各种功能 尤其是结合各种总线开发应用时 因为库函数已经封装很多总线的处理方法和驱动 直接调用对应库函数 就可以操作各个总线 相比于 直接操作寄存器来说 操作I2C SPI CAN 等总线结构 会简单很多
stm32 的开发工具有很多MDK ADS AVR 等 我用的是MDk 其实就是可以编译arm的keil 界面和keil是一样的 之前安装过keil 直接把MDK 覆盖原来的keil 就可以支持51单片机和arm的芯片的开发
MDK官网下载地址 :
stm32 V3.5.0 库文件官网下载:stm32f10x_stdperiph_lib.zip
stm32 相关资料:http://www.st.com/internet/mcu/product/164492.jsp
关于开发应用 是使用库函数 还是直接操作寄存器的问题 我觉得使用库函数 有很多的好处 尤其是在团队开发应用的时候 每个程序员都有自己的代码风格 加上操作寄存器的复杂 项目巨大的代码量 会让开发和维护变得困难 当然想更为深入了解arm 的原理 直接操作寄存器当然可取 而且当你熟悉到一定程度  可能写出的代码 会比库函数的效率更高 不过一般的应用 使用库函数都可以实现 库函数很类似于 php 等语言中框架的概念 对开发很有帮助

使用特权

评论回复
沙发
有何不可0365|  楼主 | 2022-3-31 20:27 | 只看该作者
固件库设置

库函数中很多内容是可以删减的  减小项目的大小 可以根据自己的习惯 改变库函数结构

首先解压缩下载的固件库(保留一个备份,你懂的)

    _htmresc : ST 的** 完全无用,可以删去。

    Libraries: 比较重要的文件包含STM32的系统文件和大量头文件,也就是库文件了。

    Project: 包含大量外设的例程,和各个软件版本的评估版工程模板。KEIL 对应的就是MDK-ARM 文件下的工程模板。你也可以利用这个工程模板来修改,得到你自己的工程模块,开发中不需要,可以删去。

    Utilities: 就是评估版的相关文件:也不会用到,可以删去。

需要先去掉这四个文件的只读属性,选择文件夹后,右键属性,勾去只读。。。

我删减后库函数结构如下图:

使用特权

评论回复
板凳
有何不可0365|  楼主 | 2022-3-31 20:27 | 只看该作者
STM32 v3.5 库函数实际文件结构
Cmsis 包含微控制器外设访问层和内核设备访问层文件;

Startup 当然包含的是stm32的 启动文件,与芯片Flash容量有关,详见手册

Libraries 包含的是 标准外设库驱动源文件(src文件夹) 和 (inc) 标准外设库驱动头文件

User中包含的是项目的代码 和中断代码

Project 用于包含编译是时生成的一系列文件,Output 用来放置输出文件 .hex .axf,Listing用来放置Listing信息

使用特权

评论回复
地板
有何不可0365|  楼主 | 2022-3-31 20:28 | 只看该作者
MDK设置

在库函数压缩包中找到相应文件  如上图分配好各个文件 (可参考此文:stm32固件库使用V3.5) 就可以继续下一步

在keil中新建工程  比如建TEST.uvproj,保存在刚才的Project 文件夹下面。选择你使用的STM32芯片,比如我用的是103RB 的,就选择那个,确定后,会跳出来个窗口,问你是否复制启动代码,选择否,因为我们库函数中已经有了,前面的准备工作不是白做的。

使用特权

评论回复
5
有何不可0365|  楼主 | 2022-3-31 20:30 | 只看该作者

使用特权

评论回复
6
有何不可0365|  楼主 | 2022-3-31 20:31 | 只看该作者
然后右键TARGET 1,选择Manage Ccmponents,根据刚才的库函数文件结构把文件加进去,新建文件夹,再加入相应文件。

设置好的界面如下:

使用特权

评论回复
7
有何不可0365|  楼主 | 2022-3-31 20:32 | 只看该作者
keil下的这些文件夹会虚的 不一定是对应存在的文件夹的

最后在右键TARGET 1,选择Options for TARGET1 。。在tab页 Listing,Output下点击Select Folder for Objects...设置对应的输出文件夹 。

使用特权

评论回复
8
有何不可0365|  楼主 | 2022-3-31 20:33 | 只看该作者
Output设置如下:

使用特权

评论回复
9
有何不可0365|  楼主 | 2022-3-31 20:34 | 只看该作者
在C/C++下 还需要设置下Include Paths路径,这个路径根据你的实际文件目录结构相关:

使用特权

评论回复
10
有何不可0365|  楼主 | 2022-3-31 20:34 | 只看该作者
设置完成后就可以编译一下测试 库函数可以正常运行。

使用特权

评论回复
11
Jacquetry| | 2022-10-5 21:22 | 只看该作者
测试成功

使用特权

评论回复
12
Uriah| | 2022-10-8 13:30 | 只看该作者

不同的代码逻辑就代表了不同的策略

使用特权

评论回复
13
Bblythe| | 2022-10-8 16:29 | 只看该作者

确定好硬件原理图,硬件布线,最后才是软件的开发

使用特权

评论回复
14
Pulitzer| | 2022-10-8 19:28 | 只看该作者

ART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择

使用特权

评论回复
15
周半梅| | 2023-7-1 07:32 | 只看该作者

写程序不难,但是程序怎么样才能写的好,写的快,那是需要点经验积累的

使用特权

评论回复
16
童雨竹| | 2023-7-1 08:25 | 只看该作者

直接查看该脚的IDR位的电平

使用特权

评论回复
17
Wordsworth| | 2023-7-1 09:28 | 只看该作者

我本人非常喜欢 shell 脚本,因为它做事太简单粗暴了

使用特权

评论回复
18
Clyde011| | 2023-7-1 10:31 | 只看该作者

控制模块的时钟仍然由外设时钟PCLK提供

使用特权

评论回复
19
万图| | 2023-7-1 12:27 | 只看该作者

程序开发人员做项目版本管理时的首选

使用特权

评论回复
20
Uriah| | 2023-7-1 13:30 | 只看该作者

将整个表面铺上一层薄薄的铜箔,并且把多余的部份给消除

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

445

帖子

0

粉丝