和我一起学习STM32——STM32固件库的使用

在这里我就不讨论在开发STM32的过程中到底是使用固件库好,还是直接上寄存器好。个人觉得STM32固件库编程思想是很不错的。在利用固件库开发的过程中一方面可以在很大的程度上缩短项目的开发周期,同时我们可以借鉴STM32固件库的编程方式试着为别的单片机写自己的固件库。好了,废话不多说了,下面我们来看看STM32的固件库:

(1)      STM32固件库结构:

至于每个文件夹都有什么,我想再也没有STM32固件库的帮助文档中写的更详细了的吧。

(2)      STM32固件库命名规则:

我认为编程必须要有一个规范,要有一个良好的编程风格。当我看到我们班有的同学码代码的时候,什么变量名,函数名啦都还用拼音,我巨汗的不行了。当他们把这样的代码拿给我看的时候,那真叫个蛋疼啊,,,,,所以一定要有一个良好的编程风格。至于用什么样的风格,这个没有具体的规定,没有说哪种方式特别好。我一直参考的是林锐的《高质量C编程指南》我把它共享在了我的网盘上了,这里是下载地址:http://vdisk.weibo.com/s/KfoXD  。下面我们来看看STM32固件库的命名规则:

Naming conventions

  • PPPrefers to any peripheral acronym,for exampleADC.
  • System andsource/header file names are preceded by the prefix‘stm32f10x_’.
  • Constants used in onefile are defined within this file. A constant used in more than onefile is defined in a header file. All constants are written inupper case.
  • Registers areconsidered as constants. Their names are in upper case. In mostcases, the same acronyms as in the STM32F10x reference manualdocument are used.
  • Names of peripheral’sfunctions are preceded by the corresponding peripheral acronym inupper case followed by an underscore. The first letter in each wordis in upper case, for exampleUSART_SendData. Onlyone underscore is allowed in a function name to separate theperipheral acronym from the rest of the function name.
  • Functions used toinitialize the PPP peripheral according to parameters specified inPPP_InitTypeDef are namedPPP_Init, forexample TIM_Init.
  • Functions used to resetthe PPP peripheral registers to their default values are namedPPP_DeInit, for exampleTIM_DeInit.
  • Functions used to fillthe PPP_InitTypeDef structure with the reset values of each memberare namedPPP_StructInit, for exampleUSART_StructInit.
  • Functions used toenable or disable the specified PPP peripheral are namedPPP_Cmd, for exampleUSART_Cmd.
  • Functions used toenable or disable an interrupt source of the specified PPPperipheral are namedPPP_ITConfig, for exampleRCC_ITConfig.
  • Functions used toenable or disable the DMA interface of the specified PPP peripheralare namedPPP_DMAConfig, for exampleTIM_DMAConfig.
  • Functions used toconfigure a peripheral function always end with the string‘Config’, for exampleGPIO_PinRemapConfig.
  • Functions used to checkwhether the specified PPP flag is set or reset are namedPPP_GetFlagStatus, for exampleI2C_GetFlagStatus.
  • Functions used to cleara PPP flag are namedPPP_ClearFlag, for exampleI2C_ClearFlag.
  • Functions used to checkwhether the specified PPP interrupt has occurred or not are namedPPP_GetITStatus, for exampleI2C_GetITStatus.
  • Functions used to cleara PPP interrupt pending bit are namedPPP_ClearITPendingBit, for exampleI2C_ClearITPendingBit.
  • Registersstructure,Peripheraldeclaration,egistersbits,Mappingformula,Exampleof implementation等的命名规则具体见STM32固件库帮助文档中的命名规则。

    在这里顺便说一下STM32固件库代码的注释规则,它使用的DOXYGEN注释规则,本人平时码代码也用的是这个工具生成代码的HTML结构。至于下载地址及使用方法,我已经打包放在了我的微盘里了,这里是下载地址:http://vdisk.weibo.com/s/KfopH

    (1)      STM32固件库外设驱动程序:

    在STM32F10xStandard Peripheral's Drivers里是STM32固件库提供的所有的外设驱动程序,平时写代码时主要也就是查看这些驱动程序。

    在这里我们来看一下其中关于STM32的GPIO,在stm32f10x_gpio.c文件下,包含相关寄存器的宏定义和所有相关的函数。并且每个函数下都有该函数的介绍。例:

    void

    GPIO_AFIODeInit (void)

    Deinitializes the Alternate Functions (remap, eventcontrol and EXTI configuration) registers to their default resetvalues.

    在stm32f10x_gpio.h头文件中包含相关寄存器的宏定义及相关结构体,枚举及相关函数的声明。

    (2)      STM32固件库中的例子程序:

    固件库中对每个外设都提供了相关的例子程序及样板程序,这些程序对我们在做项目开发中是有很大的帮助的,我们可以从中找到许多相关问题的解答。

    而且固件库中说明了不同开发平台的移植方法,具体见:

    结束语:本人觉得还是官方提供的帮助文档所包含的信息量最大,其实好多问题都可以在相关的官方帮助文档中找到,可是因为都是英文的所以大部分的人都不想去读它,其实我想说的是,你可以不喜欢英语,但是最简单的你要有阅读英文文档的能力。我也是一位学生,刚刚入手的STM32,所以写的这些东西都只是我的个人想法,所以难免会有很多的错误。希望大家可以指出。不过我想我会坚持写下去的,我会在我的微博上和大家分享我学习STM32的经历。

    @Vampieyifeng

    2013年7月16日星期二

STM32学习(一)—STM32固件库的使用相关推荐

  1. STM32的2.02固件库提供的启动文件详解 stm32f10x_vector.s

    当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点--因为C程序往往从main函数开始执行.但一个经常会被忽略的问题是:微控制器(单片 ...

  2. STM32如何下载官方固件库

    ST官网拥有好多权威的资料库和例程固件库.在ST官网获取stm32f103c8t6标准例程固件库 1)登陆ST官网 官网参考网页 2)点击右上角登陆或者注册 3)当登陆成功时,点击Products-& ...

  3. STM32 keil如何下载STM32芯片F1/F4固件库 .pack文件

    1.用keil打开STM32F407的程序,结果提示下面的问题,就是没有安装固件库 2.然后去keil官网下载对应的固件库,官网地址:https://www.keil.com/ 3.然后选中对应的芯片 ...

  4. 如何在Keil官网里面下载固件库(以STM32系列主芯片固件库为例)【最新版】

    在用Keil软件进行代码编写时,第一步需要选择主芯片,如果你的Keil软件里面没有安装对应主芯片的固件库,那么将无法选择对应主芯片,以及导致后面程序无法编译成功.这时需要在网上下载对应的固件库,下载固 ...

  5. STM32F407学习_搭建固件库工程模板

    1.标准外设库概述 STM32标准外设库是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间 ...

  6. 野火学习笔记(4) —— 固件库

    文章目录 - 自己写库-构建库函数雏形 1. 什么是 STM32 函数库 2. 为什么采用库来开发及学习? 3. 实验:构建库函数雏形 3.1 外设寄存器结构体定义 3.2 外设存储器映射 3.3 外 ...

  7. 船模制作——遥控模块 基于stm32和nrf24l01(固件库开发)

    目录 nrf24l01介绍 引脚图 引脚功能介绍 模式配置方法 官方宏 stm32配置 引脚映射 初始化函数 SPI模拟通信函数 nrf24l01配置函数 nrf24l01发射和接收 nrf24l01 ...

  8. 蓝桥杯物联网STM32 学习记录3——HAL库GPIO函数

    stm32l0xx_hal_gpio.h中的八大函数 /* Initialization and de-initialization functions *********************** ...

  9. 【STM32学习 自制STM32游戏机】

    2020年科协招新需要出训练题,让新生了解一下单片机,所以我这边打算出一道游戏机的题,让新生用单片机实现一个游戏机,共3个游戏可选,分别为:贪吃蛇,打地鼠和推箱子,由于是针对于0基础新生,所以在指标上 ...

  10. 【stm32学习】stm32最小系统和程序下载方式

    文章目录 前言 一.程序下载 1.USB下载方式 2.J-LINK下载方式 前言 stm32学习过程,是从正点原子的开发板开始的,但是正点原子的开发板实在是太大了,而且不便宜,不适合一些实际项目制作, ...

最新文章

  1. ECS 实例网络带宽
  2. UA OPTI512R 傅立叶光学导论25 透镜成像中光源与像的光强关系
  3. 【Java】6.2 处理对象
  4. 变与不变——一汽-大众的数字化人才战略“突围”
  5. MySQL高级 - 案例 - AOP记录日志
  6. js中判断值不等于undefined
  7. nodejs mysql 返回json_python向mysql中存储JSON及Nodejs取出
  8. linux 循环缓冲区 源码,Linux中的循环缓冲区
  9. row_number() over
  10. 11G新特性 -- ASM Fast Mirror Resync
  11. npm ERR! Error: EPERM: operation not permitted问题解决
  12. CSDN的访问数据,真是破绽百出
  13. Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式
  14. C语言——恶搞关机小程序
  15. Unity输入控制物体旋转和延迟缩放-课程作业
  16. 使用IMS搭建LMS系统(Logistics Management System 物流管理信息系统)
  17. 163邮箱导出eml格式文件
  18. 初识计算机网络||物理层
  19. python可视化数据分析-Python数据分析与可视化从入门到精通
  20. 项目经验:抽奖程序(Python)

热门文章

  1. 数字化模型是工业PaaS平台的核心
  2. atthesametime啥意思_atthesametime
  3. 使用Dreamweaver进行一个简单的图文混排1/HTML
  4. 【python与数据分析】实验十三 北京市空气质量
  5. 性能分析之系统资源饱和度
  6. matlab梯形法求二重积分,复化梯形公式公式求二重积分matlab源码
  7. 9008 能 解锁BL_手机刷入面具及twrp教程(包含解bl锁教程)
  8. 更换固态硬盘和机械硬盘以及重装系统
  9. oracle bbed 推进scn
  10. 简单的Wifi网络概念