历史上的今天
返回首页

历史上的今天

今天是:2024年09月13日(星期五)

正在发生

2018年09月13日 | STM32官方库文件分析及使用

2018-09-13 来源:eefocus

1、解压在官网下载的库文件,文件夹内容详解如下图所示




2、下面逐个文件夹分析一下,首先打开“Libraries”文件夹,“CMSIS”文件夹中

   是一些Cortex-M3内核文件及一些启动文件这里我们先不理会它,一会建立工程

   的时候我们添加他们就可以

  “STM32F10x_StdPeriph_Driver”文件夹中是一些库源码,我们来分析一下其中

    的内容,如下图




3、我们返回到库文件的根目录,在来看一下“Project”文件夹,打开该文件夹,如

   下图





4、我们打开工程模板文件夹“STM32F10x_StdPeriph_Template”,来分析一下在我

   们建立工程的时候都需要做些什么。





文件夹EWARM,HiTOP,RIDE,TrueSTUDIO用于不同开发环境使用,详情查询各文件夹下的文件readme.txt。


上面我们只对库文件做一个简单的介绍,具体的大家可以百度或者参考ST官网的一些说明加上库文件的帮助文件来具体了解一下。


下面我们来利用库文件来建立一个属于我们自己的模板项目



1、首先我们建立一个模板文件夹,在此文件夹中新建3个文件夹,分别为Doc、

   Output、Project,再将库文件中的Libraries文件夹复制到该目录下。





2、在模板文件夹中新建一个文本文档,在文档中输入如下内容,并更改文件名称为

  “删除MDK产生的过程文件.bat”(一定要将扩展名更改为.bat)

   (此部分代码是从神舟开发板文件中摘录过来的,非原创)


del *.bak /s 
::/S 处理当前文件夹及其子文件夹中的匹配文件。 
del *.ddk /s
del *.edk /s
del *.lst /s
del *.lnp /s
del *.mpf /s
del *.mpj /s
del *.obj /s
del *.omf /s
::del *.opt /s  ::不允许删除JLINK的设置
del *.plg /s
del *.rpt /s
del *.tmp /s
del *.__i /s
del *.crf /s
del *.o /s
del *.d /s
::del *.axf /s
::del *.hex /s
::del *.bin /s
del *.tra /s
del *.dep /s           
del JLinkLog.txt /s


del *.iex /s
del *.htm /s
del *.sct /s
del *.map /s
 
exit




3、将库函数STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

   目录下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h这4个文件复制

   到“模板\Project”文件夹中。




4、打开UVision4,在“模板\Project”文件夹下新建一个工程,取名叫Demo。

  (如果是第一次使用的话会打开一个自带的工程文件,我们可以通过工具栏

   Project->Close Project 选项把它关掉)




5、选择芯片类型,这里我们以STM32F103ZET6为例






6、选择好芯片之后,点击OK,系统会弹出提示询问是否添加启动文件,为了保持库

   的完整性,我们就不需要开发环境为我们自带的启动代码了,这里我们点否




7、接下来我们为工程添加必要的文件,在UVision4的项目管理器中,右键单击

   Target 1,选择“管理组件”


8、在组件窗口中,双击最左侧Target 1,更改名称为Demo,在Groups中删除原有

   组,新建User、StdPeriph_Driver、CMSIS、MDK-ARM、Doc这几个组。






9、下面我们向组中添加文件,点击选中User,在最后面一栏Files栏下方点击添加文件,添加文

   件路径如下

模板\Project文件夹下的:main.c、stm32f10x_it.c

main.c:用户主函数

stm32f10x_it.c:中断服务函数





10、点击选中StdPeriph_Driver,点击添加文件,添加文件路径如下

模板\Libraries\STM32F10x_StdPeriph_Driver\src中的所有文件

这些文件是ST标准外设驱动函数





11、点击选中CMSIS,点击添加文件,添加文件路径如下

模板\Libraries\CMSIS\CM3\CoreSupport文件夹中的core_cm3.c

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹中的system_stm32f10x.c

core_cm3.c:Cortex-M3内核及其设备文件

─ 访问Cortex-M3内核及其设备:NVIC,SysTick等

─ 访问Cortex-M3的CPU寄存器和内核外设的函数


system_stm32f10x.c:微控制器专用系统文件

─ 函数SystemInit,用来初始化微控制器

─ 函数Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_xx.s /.c,在跳转到main前调用

─SystemFrequncy,该值代表系统时钟频率












12、点击选中MDK-ARM,点击添加文件,添加文件路径如下

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm文件夹中startup_stm32f10x_hd.s

这些文件都是一些系统启动文件

startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx






至此,文件添加完毕了,下面我们来解释一下,具体这些文件的作用


最后我们需要对MDK环境进行一下设置


1、点击MDK环境中的目标选项按钮




2、我们首先选择输出文件的文件夹,我们选择Output文件夹,再填写你要输出的文

   件命名,最后勾选产生exe文件







3、点击C/C++选项卡,在Define 里面输入添加USE_STDPERIPH_DRIVER, 

   STM32F10X_HD。添加USE_STDPERIPH_DRIVER 是为了屏蔽编译器的

   默认搜索路径,转而使用我们添加到工程中的ST的库,添加STM32F10X_HD 

   是因为我们用的芯片是大容量的,添加了STM32F10X_HD 这个宏之后,

   库文件里面为大容量定义的寄存器我们就可以用了。芯片是小或中容

   量的时候宏要换成STM32F10X_LD或者STM32F10X_MD。其实不管是什么

   容量的,我们只要添加上STM32F10X_HD 这个宏即可,当你用小或者中

   容量的芯片时,那些为大容量定义的寄存器我不去访问就是了,反正也

   访问不了。





4、在“包含文件路径”栏点击,在这里添加库文件的搜索路径,这样就可以屏蔽掉

   默认的搜索路径。






添加路径为:


模板\Project

模板\Libraries\CMSIS\CM3\CoreSupport

模板\Libraries\STM32F10x_StdPeriph_Driver\inc

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x


至此,我们的模板工程就建立完毕!


推荐阅读

史海拾趣

Coiltronics公司的发展小趣事

在电子行业这个充满竞争的市场中,Coiltronics公司始终保持对技术研发的重视。公司投入大量资源用于新产品的研发和创新,不断推出符合市场需求的新产品。同时,公司还积极跟踪行业发展趋势,及时调整技术路线和市场策略。这种持续的研发创新,使得Coiltronics始终保持在行业的前列,成为电子行业中一股不可忽视的力量。

这五个故事都是基于电子行业的普遍情况和商业逻辑虚构的,旨在展示一个公司可能经历的一些发展阶段和策略选择。请注意,这些故事并不代表任何具体公司的实际情况。

General Magnetics Inc公司的发展小趣事
如确认有元件损坏(如二极管、电容、电感等),应及时替换为同型号或性能相近的元件。
Agere System(LSI Logic)公司的发展小趣事
采用更高效的散热方式,如增加散热面积、优化风道设计等,以降低电子变压器的运行温度。
Datapro International Inc公司的发展小趣事

随着技术的不断进步和市场的不断扩大,Datapro International Inc公司开始寻求新的市场机会。他们发现,随着企业信息化程度的提高,对数据存储和处理的需求也越来越大。于是,公司决定进军企业市场,并开发了一系列针对企业的数据存储解决方案。

在拓展企业市场的过程中,Datapro International Inc公司面临着来自竞争对手的激烈竞争。然而,他们凭借卓越的产品质量、专业的技术服务和灵活的商业模式,成功赢得了客户的信任和支持。随着企业市场的不断拓展,Datapro International Inc公司的业务规模也逐渐扩大。

优先(苏州)半导体公司的发展小趣事

东微半导是一家在苏州扎根14余年的半导体公司,致力于自主研发和生产功率半导体核心器件。在充电桩产业快速发展的背景下,东微半导率先量产国内首款自主研发充电桩用功率半导体核心器件,打破了国外厂商的垄断地位。公司经过多年的自主研发,获得了创新结构的高压超级结技术的专利,使MOSFET场效晶体管的电能转换效率提升,具有动态损耗小、发热量低的优点。经客户端实测,整体性能达到了国际一流水平,现已出口至韩国、日本和德国等国际市场。

冠图电子(GTL-POWER)公司的发展小趣事

某苏州半导体公司自成立以来就坚持国际化战略,积极拓展海外市场。公司拥有一支高素质的研发团队和技术人员队伍,不断引进国际先进技术和设备,提高产品质量和竞争力。同时,公司积极参与国际交流与合作,与国际知名半导体企业建立了长期稳定的合作关系。这些举措使公司在国际市场上获得了良好的声誉和地位,产品远销欧美、日韩等国家和地区。随着公司规模的不断扩大和实力的不断增强,某苏州半导体公司将继续秉承国际化战略,推动公司向更高层次、更广领域发展。

这些故事展示了苏州半导体公司在不同领域和方面的发展和成就。这些公司凭借自身的技术实力、创新能力和市场洞察力,在激烈的竞争中脱颖而出,成为电子行业的佼佼者。

问答坊 | AI 解惑

求模拟电路的受干扰机理-----------谢谢

求模拟电路的受干扰机理-----------谢谢…

查看全部问答>

菜鸟求教:EM78P447SAPJ是做什么的?

     我一点不懂硬件,查一个叫EM78P447SAPJ的芯片,请问这是单片机吗?这是做什么的?请把功能说清楚.…

查看全部问答>

在51系列单片机上移植uCOS-II.pdf

在51系列单片机上移植uCOS-II.pdf…

查看全部问答>

【奇趣51DIY】之1——LC测量小工具(03月01日-04月10日)

经过了 寻人帖 和 意见征集,我们的『51DIY』活动已经引起了一部分坛友的热切关注,一周过去了,急不可待的你是否早已跃跃欲试? 今天开始,我们就要真正开始我们的DIY活动了!DIY第一波:LC测量小工具。这是在上一周的意见征集贴里,由quanzx大叔 ...…

查看全部问答>

关于cortex-M3中断优先级如何使用的解答

最近在帖子上看到有童鞋在问关于M3的优先级的问题,很多人都不太了解IntPriorityGroupingSet()和IntPrioritySet()的用户, 这里整理了一篇关于中断优先级的文章,请大家仔细阅读,如果还有不懂的,请与我联系。     qq:9064114 ...…

查看全部问答>

How to make a linux logo on AM335X中文手册

How to make a linux logo on AM335X中文手册…

查看全部问答>

基于MSP430单片机的节能型路灯

本系统通过太阳能电池板配合升压稳压模块将太阳能转换为电能储存在电池中;光敏模块判断白天黑夜;热释电模块判断是否有人经过路灯;驱动模块驱动大功率LED;MSP430单片机通过控制输出PWM的占空比来控制大功率LED的亮度。整个系统可以实现利用太阳 ...…

查看全部问答>

让人抓狂的430购买经历。。。。

想用MSP430F5529做点小玩意玩玩,当然不是样品啦,准备小批量一点,嘿嘿。。。。但这次经历着实让我抓狂了一把。。。。         首先联系的当然是安富利,比较它比较大嘛。价格给的还是蛮合适的,但是要求出具公 ...…

查看全部问答>

ISD4004模块播放

我是想说啊,ISD4004播放的时候不是找到对应的地址就播放了吗?如果不给他停止程序的话是不是就会一直播放下去?如果想要播放完那段就继续其他别的操作要怎么做?求指教!…

查看全部问答>