在Keil4中建立基于V3.4.0固件库的STM32工程(转)


几个月前刚接触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文件:"\SysTick\Lib\CMSIS\CM3\CoreSupport\core_cm3.c"以及"\SysTick\User\system_stm32f10x.c"。
           在"User"Group下添加如下两个c文件:"\SysTick\User\main.c"和"\SysTick\User\stm32f10x_it.c"。
           在"Lib"Group下添加如下四个c文件:"\SysTick\Lib\STM32F10x_StdPeriph_Driver\src\misc.c"、
"\SysTick\Lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c"、"\SysTick\Lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c"
和"\SysTick\Lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c"。
           在 "StartUp"Group下添加"\SysTick\Lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_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"内添加".\Lib\CMSIS\CM3\CoreSupport"、".\Lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x"、".\Lib\STM32F10x_StdPeriph_Driver\inc"、".\User"。添加完成后点击"OK"。
           完成所有设置后,点击"OK"。
      到此为止,工程已建立完成。

    关键点提示:
      1、步骤2.5中"C/C++"中定义的两个宏,"USE_STDPERIPH_DRIVER"表示使用固件库,"STM32F10X_MD"与你所使用的芯片相对应,步骤2.4中启动代码文件的选择也与此类似。
      2、"stm32f10x_conf.h"这个文件,里面可以选择你所使用的外设,方法是——将使用的外设前的注释去掉即可。
      3、步骤2.4,其目的是添加头文件的路径,虽然看起来很烦琐,但理解其目的后就会显得清楚多了。

      
       这个地方讲得更清楚跟透彻: http://blog.ednchina.com/xukai871105/1981649/message.aspx
       这里的视频也不错: http://v.youku.com/v_show/id_XMjQyMDg1MDMy.html

补充:

MDK中出现 Error: Flash download failed-"Cortex-M3"的原因及解决办法

出现这处问题通常是MDK中的Flash的编程算法没有配置或没有配置正确,

在主菜单中打开Flash->Configure Falsh Tools配置窗口,切换到“Utilities"页。


按“Setting"按钮进入“Flash download setup"配置窗口

然后一路按“OK”按钮退出配置窗口


在“Flash download setup"配置窗口点击“Add”按钮进入“Add Flash Programming Algorlthm"窗口

在“Add Flash Programming Algorlthm"窗口,根据你实际使用的芯片选择,这里的豆皮STM32开发板用的是STM32F103VBT6,应先择"STM32F10X 128kB Flash",选定编程算法后,按“Add”按钮。


之后一路按"OK"按扭确认修改的配置.
Version: 2.15.0 (2020-09-28) Keil.STM32F4xx_DFP.2.15.0.pack Download Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.25.1 using HAL Drivers V1.7.9. STM32CubeMX integration (Version 6.0.1): Added support for Timebase Source TIMx (FrameworkCubeMX_gpdsc.ftl). Removed non-existent include path. CMSIS Flash Algorithm: Corrected STM32F42xxx_43xxx_OPT Algorithm. CMSIS SVD: Updated STM32F42*.svd, STM32F43*.svd files. CMSIS-Driver: I2C: Corrected 2 byte reception in master mode. MCI: Replaced empty delay loops with _NOP(). SPI: Corrected PowerControl function (to return error if Initialize was not called, to abort active transfer if power off was requested). Updated GetDataCount function to give accurate count in DMA mode. Corrected Control function (abort in DMA mode, software controlled slave select in slave mode, TI Frame Format selection, ignore bus speed for slave mode). Corrected Uninitialize function (to power off the peripheral if it is powered). Corrected SPI3_SCK pin configuration. Corrected DMA MemDataAlignment configuration. USART: Corrected DMA MemDataAlignment configuration. USBD_HS/USBH_HS: OTG_HS ULPI clock disabled in low power if internal PHY is used to enable proper operation of OTG_HS port in FS mode during CPU sleep. CAN/EMAC/USBD/USBH: Removed macros already provided by cmsis_compiler.h. Updated Boards Examples: Migrated CubeMX projects to V6.0.1 and updated config files. Changed variant selection to "MDK-Plus" where possible. Updated all USB Host/Device examples with user templates from MDK-Middleware v7.11.1. Terminating app_main thread with osThreadExit() to avoid endless loop Updated MS Windows UBS driver files.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值