#STM32 3.根据官方库新建ARM工程

系列文章目录-认识ARM开发

/ARM开发初学目录:/

第3章:#STM32 3.根据官方库新建ARM工程

第2章:#STM32 2.寄存器位操作方法及GPIO点亮一颗LED

第1章:#STM32 1.从C51驱动一颗LED到认识ARM_GPIO(最浅显入门)

Lip: 库开发,做项目不会从头来,但要知道怎么来的


一.场景

1.前面使用的是寄存器绝对寻址,工程定义也是比较繁琐,一旦有新的配置就要不断完善库文件。
2.因此使用官方已定义好的库函数及框架很重要,这就是库开发!
3.前面所列都是基础,官方库是将所有可用的外设全部封装ok。所以一颗ARM芯片的官网例程一打开全是封装函数比较晦涩难懂的原因就在这,也就是所谓的业内标准CMSIS
4.库开发非常重要及普及,新建一个工程,体会下实际所用文件的原因,为移植代码做准备。

二.工程文件结构简介

在这里插入图片描述

1. STARTUP

下载官方库文件eg:【固件库】STM32F10x_StdPeriph_Lib_V3.5.0
使用官方文件下的模板Template文件,挑选需要的文件
路径:Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
添加启动文件:
在这里插入图片描述

2. CMSIS

core_cm3.c 寄存器映射
system_stm32f10x.c 系统时钟配置,代码区修改实际所用时钟源,目的是不破坏库文件结构
路径:Libraries\CMSIS\CM3\CoreSupport
Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
在这里插入图片描述

3. LIBRARY

标准库函数,路径:Libraries\STM32F10x_StdPeriph_Driver\src
添加文件夹中所有.c文件(所有外设的封装库,前面自己写的一些封装,在这里可以找到更好更完整的封装)
在这里插入图片描述

4.USER

或者是APP,存放用户代码,实际需要用户自己编写的程序文件
在这里插入图片描述
stm32f10x_it.c 中断服务函数
其中stm32f10x_it.h默认包含了头文件,#include "stm32f10x.h"。这个文件很重要,相当于工程开发中经常用的extern(XXoutput.h),也就是将所需的外设的驱动库函数全部声明在这个文件里。这样想用外设就直接调用库函数,不用再单独申明。good

#include "stm32f10x_flash.h"
#include "stm32f10x_fsmc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_i2c.h"
#include "stm32f10x_iwdg.h"
#include "stm32f10x_pwr.h"

三.KEIL配置

liking、 output、debug什么的和51开发时操作是一致的,区别的地方主要如下:

3.1添加头文件路径

主要是CMSIS中的启动文件、库函数,LIBARAY下的头文件include
STM32所有外设都有对应的时钟(降低功耗目的),芯片上电后时钟默认是关闭的,需要人为配置打开。根据官网手册芯片系统框图,可以发现外设GPIO挂载于总线APB2,由RCC控制时钟

3.2 宏定义添加

在这里插入图片描述

1)USE_STDPERIPH_DRIVER,STM32F10X_HD(逗号)
2)STM32F10X_HD和前面选启动文件是一样的,hd中容量,跟芯片有关
USE_STDPERIPH_DRIVER是为了包含stm32f10x_conf.h
3)测试了人为添加这个库文件也是可以的,不过应该是为了不破坏结构考虑。可以打开stm32f10x_it.h,代码里已有表述。
4)通过keil窗口也可以这么宏定义!而且stm32f10x_conf.h这个头文件不正像是对应51的include<reg52.h>么,奇怪的知识点又get到了

#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif

四.工程验证

不出意外,就肯定出意外了!
在这里插入图片描述
按字面意思是打不开core_cm3.h文件,核对了包含的头文件路径是ok的,和core_cm3.c在一个路径下。
最终在论坛帖子里找到了答案:KEIL版本问题,不能自行在CMSIS下层路径中找这个库函数。解决方法是:将core_cm3.h直接复制粘贴到include文件夹下
在这里插入图片描述
在这里插入图片描述

总结

  1. 按照例程一步步操作也是一个熟悉的过程,纸上得来终觉浅!
  2. 任何踩过的雷大家都踩过,群众是好人,最新的不一定是最好的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值