STM32学习笔记(一)

一、stm32固件学习

1. 建立模板

模板是按照附件的方法建立的,共建立了4个文件夹:CMSISStartupUSERProject。在Project中还建立了2个文件夹:ObjListing,用于存放目标文件和列表文件。最终的物理目录如下。

 

MDK4.23中建立相应的目录,实际上除了misc.cstm32f10xrcc.c是必须的外,其它的库根据需要剪裁。

 

2. 整理库代码

根据所选的芯片类型将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\下对应的启动文件

system_stm32f10x.c, system_stm32f10x.h这两个文件提供函数用来初始化stm32芯片,配置PLL、系统时钟和内置flash接口。

事实上,stm32标准外设库的使用在stm32f10x_stdperiph_lib_um.chm中的How to use the Library一节中已有说明,主要步骤如下:
    a.
根据所选芯片,把Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中的启动代码加到工程中。这里,我将startup_stm32f10x_md.s拷贝到Libraries\startup文件夹中。

b. stm32f10x.h66-73行,根据所选芯片类型,去掉相应注释,这里我去掉STM32F10X_MD行的注释。

c. 去掉105行的USE_STDPERIPH_DRIVER注释,启用stm32标准外设库。

d. system_stm32f10x.c110-115行,根据所选芯片主频,去掉相应注释,默认SYSCLK_FREQ_72MHz注释已去掉,如果你的芯片主频是72MHz,就不用做修改了。

3. 编写文件

将模板另存,改工程名,编写相应的main函数和代码。

按照李想老师的教程,库函数编写程序时,在main中首先是调用RCC_Configuration()。而RCC_Configuration()函数用于配制芯片时钟,代码如下:

   实际上如按照上述步骤整理后,除开启GPIOBGPIOA时钟代码外,其余已不需要,在system_stm32f10x.c中已经为我们做了上述的时钟配制工作了。system_stm32f10x.c中相关代码如下:  

    由此看见,system_stm32f10x.c中已经完成了RCC_Configuration()的相同的时钟配制。

 

    此外,在stm32f10x_conf.h文件中,可以注释掉一些不用的外围头文件。

(详见附件)

猜你喜欢

转载自yangseeok-163-com.iteye.com/blog/1974302