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
至此,我们的模板工程就建立完毕!
上一篇:STM32库文件结构及CMSIS介绍
下一篇:STM32学习笔记之USB库文件分析
推荐阅读
史海拾趣
聚辰(Giantec)公司电子行业发展的五个故事
故事一:技术传承与独立运营
聚辰半导体股份有限公司(Giantec Semiconductor Corporation)的故事始于2009年,由美国ISSI公司与其高管共同出资成立。这家公司继承了ISSI在EEPROM和智能卡芯片技术上的专利和研发团队,为后续的快速发展奠定了坚实基础。随着ISSI公司股权的变动,聚辰半导体逐渐由国资企业接手并开始独立运营。这一转变不仅让聚辰获得了更大的自主权,也为其在存储芯片领域的深耕细作提供了有力支持。
故事二:全球布局与市场拓展
自成立以来,聚辰半导体便致力于全球化布局,不仅在上海设立总部,还在美国硅谷、韩国、中国香港、中国台湾、深圳、南京、苏州等地设立了子公司、办事处或销售机构。这一战略布局使得聚辰能够更好地服务全球客户,迅速响应市场需求。同时,聚辰的产品线不断扩展,从最初的EEPROM存储芯片,逐步延伸到NOR Flash、音圈马达驱动芯片和智能卡芯片等多个领域,广泛应用于智能手机、汽车电子、工业控制等多个行业。
故事三:技术突破与产品创新
在技术创新方面,聚辰半导体始终走在行业前列。2012年,聚辰推出的EEPROM存储芯片成功进入三星、OPPO等手机品牌的摄像头模组供应链,标志着公司在全球EEPROM存储芯片市场的地位逐渐稳固。此后,聚辰不断推出新产品,如音圈马达驱动芯片与EEPROM二合一产品,进一步提升了其在手机摄像头模组中的竞争力。同时,聚辰还积极布局汽车电子市场,多款车规级存储芯片获得市场认可,为公司带来了新的增长点。
故事四:资本市场助力与品牌提升
2019年,聚辰半导体在上海证券交易所科创板成功上市,为公司的发展注入了强劲动力。资本市场的助力不仅让聚辰获得了更多的资金支持,还显著提升了公司的品牌影响力和市场认知度。上市以来,聚辰持续加大研发投入,优化产品结构,提升产品性能,进一步巩固了其在存储芯片领域的市场地位。
故事五:荣誉加身与行业认可
近年来,聚辰半导体凭借其出色的业绩和技术实力赢得了多项荣誉和行业认可。公司多次入选中国物联网企业百强榜单、上海硬核科技企业TOP100榜单等权威榜单,彰显了其在行业内的领先地位。同时,聚辰还积极履行社会责任,参与公益事业,如向中国科学技术大学捐赠资金用于支持人工智能创新中心建设等,进一步提升了公司的社会形象和品牌价值。这些荣誉和认可不仅是对聚辰过去努力的肯定,也是对其未来发展的期待和鼓舞。
2005年,AMOTECH被Deloitte评为“亚太技术500强”,这进一步提升了公司在国际上的知名度和影响力。同年,公司还获得了ISO14001认证,这体现了公司对环境保护的重视和承诺。随着业务的不断拓展,AMOTECH在2006年和2008年分别建立了青岛办公室和韩国第四工厂,进一步提升了公司的产能和效率。
ERNI Electronics的源头可以追溯到1947年,当时其瑞士母公司成立。而在1956年,ERNI Electronics以生产继电器为起点,正式进入电子行业。在创立初期,公司专注于继电器的开发和制造,积累了丰富的电子行业经验。随着市场需求的不断变化,ERNI在1967年开发了第一个背板连接器,这一创新产品迅速成为公司的核心产品,并推动了公司的快速发展。
GradConn Ltd的创立初期,公司便明确了其专注于电子连接器和同轴电缆组件的市场定位。这一战略选择使GradConn能够迅速在通讯、工业、医疗和汽车等领域建立起稳定的客户基础。通过不断研发创新,GradConn推出了一系列高质量的产品,如板对板连接器、电缆组件连接器以及SIM卡连接器等,满足了市场对精密、可靠连接解决方案的迫切需求。
EIC公司自创立之初,就致力于离散半导体技术的研发与创新。在成立初期,公司面临了技术瓶颈和市场接受度的双重挑战。然而,EIC的研发团队通过不懈努力,成功研发出了一款高性能、低功耗的离散半导体产品,这一技术突破不仅为公司赢得了市场认可,也为后续的产品线扩展奠定了坚实的基础。随着技术的不断进步和产品线的不断丰富,EIC逐渐在电子行业中树立起了自己的品牌形象。
Elpress AB始终将质量管理作为公司发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。为了进一步提升产品质量和管理水平,Elpress AB于1992年获得了ISO 9001认证,成为电气连接领域的领军企业之一。此后,公司还通过了ISO 14001:2015环境管理体系认证,积极履行环保责任。
【有偿求做】PCI数据采集卡的应用软件 我采用的是凌华AD—9812型号PCI数据采集卡,要求采集高速超声波信号(约10M/s),采用DMA方式,本人提供版子的动态链接库,只是做一个应用软件就可,最好能够动态显示(比如用labview开发)用其它VB VC MATLA ...… 查看全部问答∨ |
|
俗称“推特”(编按:非官方中文翻译)的微网志平台 Twitter ,是当前广受欢迎的社交网络工具之一;但该平台号称一天超过5,000万则的“推文(Tweet)”,发文者与接收者是电子工程师的却不多,主要是因为他们还没能接受这种限制讯息长度的微网志平台。 ...… 查看全部问答∨ |
|
WINCE,LINUX什么都可以。只要有驱动开发经验、应用开发经验都可以,如果外语佳的更好。 本科生刚毕业大约税后有5000吧;本科生3年税后7000吧;本科生工作6年税后1万左右吧。 我的QQ:674694784 也可以和我沟通技术问题,谢谢。… 查看全部问答∨ |
CFileDialog::OnLBSelChangedNotify()怎么用? 我想当用户在文件列表中移动光标时,获得当前选中文件的信息。 从CFileDialog派生出CMyFileDialog类,并重载了OnLBSelChangedNotify()。 试了一下,可是什么反应都没有啊。… 查看全部问答∨ |
程序是这样的,做一个视图列表,里面显示某文件夹内的若干.txt文件名称,然后读出某个文件,将包括文件路径在内的文件名付给一个字符串,但现在不知道如何能实现打开这个文件,大家帮帮忙,谢谢! … 查看全部问答∨ |
最近老师给了TWR K40和TWRK 60的两套板子让研究, 跟着它的TWRK40X256QSDLAB-MQ3.6做的时候,用IAR Embedded workbench for ARM 6.21 软件刷程序时,按“download and debug”的时候软件提示内存不能为read ,接着软件就自动关闭了,板子里面本来带 ...… 查看全部问答∨ |
小子我刚写好了一段程序,也在studio中调试过了,语法上基本没错,只是我一个新手,还不知道程序能否实现想要的功能,麻烦大家帮我看看,给些提示,我总感觉自己的程序存在一些问题。过几天就要用开发板调试了,谢谢大家帮我哈 我要得到的功能是 ...… 查看全部问答∨ |