历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2020年10月15日 | 在Keil4中建立基于V3.4.0固件库的STM32工程

2020-10-15 来源:eefocus

几个月前刚接触STM32时,第一感觉就是固件库里的文件又多又深,还好发现固件库里自带有范例文件,但是它们全都是针对特定的评估板的,手头只有一块STM MCU 3 in 1 MiniKit。虽说作些修改就可为我所用,可对于像我这样还没入门的菜鸟,知道要如何修改,并且编译通过,却是非常困难。


      昨晚闲暇,在网上找了一些资料,自己也学着新建了一个工程。今天写下来,顺带温故一遍。


       首先介绍一下操作环境:

       Keil版本: μVision 4.1.0

       STM32固件库版本: V3.4.0


     第一步,建立工程文件夹,在其子文件夹内拷贝并整理好相应的文件。

        1.1、建立工程文件夹,将它命名为"SysTick"。

        1.2、在"SysTick"下分别建立"Lib"、"User"、"List"及"Object"这四个文件夹。

        1.3、将固件库中"Libraries"文件夹下的"CMSIS"和"STM32F10x_StdPeriph_Driver"这两个文件夹拷贝至上一步建立的"Lib"文件夹下。

        1.4、将固件库中"Project"-->"STM32F10x_StdPeriph_Examples"-->"SysTick"内的全部文件拷贝至第2步建立的"User"文件夹下。

        至此,第一步已经完成。


       第二步,建立Keil工程。

        2.1、"Project"-->"New  μVision Project...",将新建立的工程保存在步骤1.1时建立的"SysTick"文件夹下,并命名为"SysTick"。

        2.2、在弹出的"Select Device for 'Target1'..."对话框中,选择相应的器件,ST MCU 3 in 1 MiniKit上的芯片是STM32F103C8,所以我选择STM32F103C8。确定完成后按"OK"。

        2.3、在弹出的询问是否添加启动代码的对话框中,选"否"。因为我们使用固件库中的启动代码。

        2.4、点击按钮,在Target1下建立四个Groups: "CMSIS"、"User"、"Lib"、"StartUp"。

           在"CMSIS"Grout下添加如下两个c文件:"SysTickLibCMSISCM3CoreSupportcore_cm3.c"以及"SysTickUsersystem_stm32f10x.c"。

           在"User"Group下添加如下两个c文件:"SysTickUsermain.c"和"SysTickUserstm32f10x_it.c"。

           在"Lib"Group下添加如下四个c文件:"SysTickLibSTM32F10x_StdPeriph_Driversrcmisc.c"、

"SysTickLibSTM32F10x_StdPeriph_Driversrcstm32f10x_flash.c"、"SysTickLibSTM32F10x_StdPeriph_Driversrcstm32f10x_gpio.c"

和"SysTickLibSTM32F10x_StdPeriph_Driversrcstm32f10x_rcc.c"。

           在 "StartUp"Group下添加"SysTickLibCMSISCM3DeviceSupportSTSTM32F10xstartuparmstartup_stm32f10x_md.s"。

           根据你所使用的不同容量的芯片,选择对应的启动代码文件。

           添加完所有的文件后,点击"OK"。

        2.5、点击"Target Options..."按钮,作如下设置。

           "Output"标签下",Select Folder for Objects..."选择步骤1.2时建立的"Object"文件夹作为保存路径。

           "Listing"标签下,"Select Folder for Listings..."选择步骤1.2时建立的"List"文件夹作为保存路径。

           "C/C++"标签下,"Define"后填写"USE_STDPERIPH_DRIVER, STM32F10X_MD";"Include Paths"内添加".LibCMSISCM3CoreSupport"、".LibCMSISCM3DeviceSupportSTSTM32F10x"、".LibSTM32F10x_StdPeriph_Driverinc"、".User"。添加完成后点击"OK"。

           完成所有设置后,点击"OK"。

      到此为止,工程已建立完成。


    关键点提示:

      1、步骤2.5中"C/C++"中定义的两个宏,"USE_STDPERIPH_DRIVER"表示使用固件库,"STM32F10X_MD"与你所使用的芯片相对应,步骤2.4中启动代码文件的选择也与此类似。

      2、"stm32f10x_conf.h"这个文件,里面可以选择你所使用的外设,方法是——将使用的外设前的注释去掉即可。

      3、步骤2.4,其目的是添加头文件的路径,虽然看起来很烦琐,但理解其目的后就会显得清楚多了。

      

推荐阅读

史海拾趣

EPCOS/TDK公司的发展小趣事

EPCOS,全称爱普科斯(EPCOS AG),其历史可以追溯到1989年。当时,西门子松下有限公司(Siemens Matsushita Components)在德国慕尼黑成立,作为西门子与松下的合资公司,集中了两大电子巨头的优势资源。这家公司起初专注于电子元器件的研发与生产,凭借其卓越的技术和品质,迅速在市场中占得一席之地。经过数十年的发展,EPCOS逐渐壮大,产品线涵盖了电容器、电感器、电阻器等众多电子元器件,并在全球范围内建立了广泛的销售网络。

Condor公司的发展小趣事

作为全球领先的电子元器件制造商之一,EPCOS在通信领域取得了显著的突破。其电容器、电感器等产品在通信系统中发挥着关键作用,为各种通信设备提供了稳定的电源和信号处理方案。EPCOS不断投入研发资源,致力于开发适应新一代通信技术需求的高性能电子元器件。这些创新产品不仅提高了通信系统的性能和可靠性,也推动了整个通信行业的进步。

以上是关于EPCOS/TDK公司发展起来的5个相关故事。这些故事不仅展示了公司在技术创新、市场拓展等方面的成就,也体现了其在电子行业中的重要地位和影响力。

BB公司的发展小趣事

BB公司的创始人是一位电子工程领域的杰出人才,他深知模拟集成电路在电子行业的巨大潜力。1956年,他在图森亚利桑那州的一个车库中创立了BB公司,开始了他的创业之路。尽管初期资金紧张,条件艰苦,但创始人凭借对技术的执着和对市场的敏锐洞察,成功研发出了一系列具有竞争力的模拟集成电路产品。他坚信,只要产品质量过硬,就能赢得市场的认可。正是这种远见和坚持,为BB公司的后续发展奠定了坚实基础。

AK-Nord_GmbH公司的发展小趣事

随着全球环保意识的提高,AK-Nord_GmbH也积极践行可持续发展理念。公司注重环保生产,采用环保材料和工艺,减少生产过程中的环境污染。同时,公司还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的基础。

这些故事都是基于一般电子行业的发展规律编写的,并不针对任何特定的公司或真实事件。希望这些故事能够满足您的需求,并为您了解电子行业公司的发展提供一些参考。

Fullywell Semiconductor Co Ltd公司的发展小趣事

随着全球对环境保护和可持续发展的重视,Fullywell也积极响应这一趋势,开始实施绿色转型战略。公司投入大量资源研发环保型半导体材料和生产工艺,致力于降低生产过程中的能耗和排放。同时,Fullywell还加强了与产业链上下游企业的合作,共同推动绿色供应链的建设。这些举措不仅提升了公司的社会责任感,也为公司的可持续发展奠定了坚实的基础。通过绿色转型,Fullywell在行业内树立了良好的企业形象,吸引了更多关注环保和可持续发展的客户和合作伙伴。

FETek Technology(东沅)公司的发展小趣事

FETek Technology(东沅)于XXXX年在台湾台北市成立,由一群志同道合的半导体行业专家组成。他们看到了当时电子行业对高质量、高效率半导体测试解决方案的迫切需求,于是决定创立东沅,专注于提供这一领域的创新产品。初期,公司面临资金紧张、人才匮乏等挑战,但他们凭借坚定的信念和不懈的努力,逐渐吸引了更多的投资者和优秀人才加入。

问答坊 | AI 解惑

一种蓝牙打印机的实现方案

引言      作为一种短距离无线通信协议,蓝牙技术以其低成本、低功耗、高速率、方便灵活等特点在众多无线解决方案中脱颖而出。蓝牙10m的工作距离可以很好的满足大多数数字设备的应用场合,如办公室或家庭。打印机是常用的一个 ...…

查看全部问答>

急,ARM9 wince系统 spi控制点阵

    用spi总线控制点阵,我现在用的是s3c2410,由于板子给出的扩展输出口不够用,所以我用了串口来控制点阵,我只是把开发板带的spi驱动稍微改了改,然后在我的应用程序上输入数据,点亮点阵,可是现在的问题是点阵扫面速度太慢,能打出 ...…

查看全部问答>

将摄像头与电机与红外线感应的程序编辑一个线程里 急急急???

我吧我分都给出去谁能帮我解决这些步骤或者告诉我一个大概的框架也行和给我一些参考的资料我分一点不剩全给你还有一个重要为题就是将几个程序揉到一个线程里的话需要什么结构么,我觉得编写的时候不能想到那步就编写那不吧,是不是有一定的框架与结 ...…

查看全部问答>

“减得巧,省得妙”- 500:1的数据瘦身

参加在线会议请登录:http://g.eeworld.net/5093778…

查看全部问答>

tffs文件系统内有没有建立一个txt文件的命令啊

不想从/tgtsvr中拷贝一个gps.txt到tffs文件系统下,太麻烦…

查看全部问答>

求教,MSP430 P2口输出的电平是多少

Vcc为3.8V,P2口输出为2.75V[空载,直接万用表量的]一般各位用的输出电平是多少? [ 本帖最后由 njkzjk 于 2011-7-12 12:50 编辑 ]…

查看全部问答>

请教一个通信中任务切换的问题,

任务1,里面进行CAN通信,我们知道,CAN通信如果遇到can总线忙的话,CAN会重复发送数据多次,直到数据发送完成,但是如果在尝试重复发送数据的过程中,遇到任务调度,切换到更高优先级的任务2,那么此时CAN通信还能进行吗?这个时候CAN通信会出现什 ...…

查看全部问答>

CC2530外接传感器 ADC转换问题

外接一个模拟输出的传感器模块,总共3个管脚,一个模拟输出,一个电源,一个地。 将模拟输出管脚接在飞比EB的P14插槽的29号管脚上,即P0端口的pin1, 串口每隔十几毫秒就输出“    - ”,不知道问题在哪儿, 代码如下,麻烦大家帮忙看 ...…

查看全部问答>

HELPER2416开发板(一):收到板子及疑问

今天收到板子了,包装很好!同时对君益兴公司及EEWORLD表示感谢。这款板子市场价不菲的,这么无偿地助学,我不学都对不起自己。 好了上图片! 打开之后包装整齐。一看就是好东东。大家出品的货!!! 全部的配件: 运行的主界面 时钟 ...…

查看全部问答>

关于TMS570LS3137外设驱动问题

请问,谁有TMS570LS3137在UC/OS操作系统下的CAN、AD、IIC相关的驱动程序啊? \0\0\0eeworldpostqq…

查看全部问答>