微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F10x 学习笔记 1 (使用STM32F10x StdPeriph Driver)

STM32F10x 学习笔记 1 (使用STM32F10x StdPeriph Driver)

时间:11-20 来源:互联网 点击:
前段时间将Cortex-M3权威指南看完了,现在开始拿块开发板练手。

STM32F1xx本身并不难,不过因为第一次用KeilMDK,还有想在程序中使用最新的stm32f10x_stdperiph_libV3.5,最后让程序跑通也经历了一番周折。这里简单的记录一下,希望对刚刚开始学STM32的初学者有些帮助。(这篇的内容很初级,高手请绕道)

首先介绍一下我这里的实验环境,开发板是块便宜货“神舟IV号STM32F107VCT开发板”,听这个名字就挺山寨,不过便宜倒是真的。仿真器是国内山寨的J-LinkV8,买开发板时送的。J-Link用的是V4.12版的驱动程序,segger网站上有新版的驱动,不过我试过了,新版的驱动添加了检测J-Link是否是山寨的功能,装上也不能用,在网上也没有找到解决办法,所以还是死心吧,4.12版的驱动也能支持挺多的ARM芯片型号了。

IDE环境是KeiluVersionV4.10,工具链的版本为:RealViewMDK-ARM4.12,当然是D版的。

总之,这一套从头到脚都挺山寨。不过我这是非商业用途,仅供个人学习,想来ARM和segger也不会来难为我。

不说废话了。首先讲一讲如何在程序中使用STM32F10x_StdPeriph_Driver

(1)新建一个文件夹存放项目文件,要注意路径不能有中文,我这里目录名取为stm32-test1。

(2)打开KeiluVersion,新建一个项目“test.uvproj”,CPU选择STM32F107VC。

(3)KeiluVersion会提示是否添加启动代码,选择否,因为我们要用STM32F10x_StdPeriph_Driver中提供的启动代码。

(4)给ProjectTargets改名,我改的名为:STM32F107。这一步不是必须的,只是默认的名称“Target1”太没个性了。

(5)Groups中我建立了三个组:Source、CMSIS、StdPeriphDriver。Source中存放我写的代码,另外两个顾名思义存放相应的代码。

(6)stm32-test1目录中也添加相应的三个文件夹:Source、CMSIS、StdPeriphDriver。这时stm32-test1目录中应该有这些文件(文件夹):

CMSIS

Source

StdPeriphDriver

test.plg

test.uvopt

test.uvproj

test_STM32F107.dep

test_Target1.dep

(7)网上下载的STM32F10x_StdPeriph_Lib_V3.5.0,解压缩后“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport”和“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x”目录中的c文件和h文件都拷贝到CMSIS目录中。“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm”目录中“startup_stm32f10x_cl.s”也拷贝到CMSIS目录中。这里多说一句,startup_stm32f10x_cl.s是STM32F105和STM32F107系列的启动文件,cl指的是Connectivityline。如果用的是其他类型的STM32,需要换用合适的启动文件。

(8)“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc”和“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src”文件中的内容都拷贝到StdPeriphDriver目录中。“STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h”拷贝到StdPeriphDriver目录中。读者可能注意到我将c文件和头文件都混到了一个文件夹中了,之所以这样管理文件,是为了让项目的目录结构看起来尽量的简单。现在,CMSIS下的文件应该有这些:

core_cm3.c

core_cm3.h

startup_stm32f10x_cl.s

stm32f10x.h

system_stm32f10x.c

system_stm32f10x.h

StdPeriphDriver目录中文件应该有这些:

misc.h

stm32f10x_adc.c

stm32f10x_adc.h

stm32f10x_bkp.c

stm32f10x_bkp.h

stm32f10x_can.c

stm32f10x_can.h

stm32f10x_cec.c

stm32f10x_cec.h

stm32f10x_crc.c

stm32f10x_crc.h

stm32f10x_dac.c

stm32f10x_dac.h

stm32f10x_dbgmcu.c

stm32f10x_dbgmcu.h

stm32f10x_dma.c

stm32f10x_dma.h

stm32f10x_exti.c

stm32f10x_exti.h

stm32f10x_flash.c

stm32f10x_flash.h

stm32f10x_fsmc.c

stm32f10x_fsmc.h

stm32f10x_gpio.c

stm32f10x_gpio.h

stm32f10x_i2c.c

stm32f10x_i2c.h

stm32f10x_iwdg.c

stm32f10x_iwdg.h

stm32f10x_pwr.c

stm32f10x_pwr.h

stm32f10x_rcc.c

stm32f10x_rcc.h

stm32f10x_rtc.c

stm32f10x_rtc.h

stm32f10x_sdio.c

stm32f10x_sdio.h

stm32f10x_spi.c

stm32f10x_spi.h

stm32f10x_tim.c

stm32f10x_tim.h

stm32f10x_usart.c

stm32f10x_usart.h

stm32f10x_wwdg.c

stm32f10x_wwdg.h

stm32f10x_conf.h

对于某个具体的项目,这些文件不一定都会用到,不过放在这里也没什

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top