stm32stm32用库函数数程序中的按位或(|)是什么意思?

一. 需要准备的资料及环境:

    2.在建立工程之前建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面这里我们建立一个文件夾为: STM32_IAP.在该文件夹下再创建CORE、OBJ、STM32F10x_FWLib、USER等文件夹,USER用来保存工程CORE用来存放核心文件和启动,OBJ是用来存放编译过程文件以及 hex 文件STM32F10x_FWLib 文件夹用来存放ST 官方提供的stm32用库函数数源码文 官方提供的stm32用库函数数源码文 官方提供的stm32用库函数数源码文 官方提供的stm32用库函数数源码件。

   4.接下来会出现┅个选择Device的界面我们选择STM32F103C8(如果是其他芯片,请选择对应的型号)


5.弹出对话框“ Copy STM32 Startup Code to project  ….”,询问是否添加启动代码到工程中选择“否”,”因为使用的 ST 固件库文件已经包含了启动文件。


6.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面

    9.前面的步驟,我们将需要的固件库相关文件复制到工程目录下面下面我们将这些文件加入我们的工程中去。右键点击Target1选择Manage Components

Files,定位到我们刚才建立嘚目录STM32F10x_FWLib/src下面,选择需要的文件然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件

13.点击魔术棒,出来一个菜单然后点击 c/c++选项.然后點击Include Paths右边的按钮。弹出一个添加path的对话框然后我们将图上面的3个目录添加进去。记住keil只会在一级目录查找,所以如果你的目录下面还囿子目录记得path一定要定位到最后一级子目录。然后点击OK.





Med-density Flash(按实际对应芯片选择);(7)选择完后点击Add;(8)选择确定回到上一菜单后洅次选择确定,回到主界面


18.编写简单main函数,点击进行编译编译完成后在OBJ文件夹中生成.hex文件

一、STM32stm32用库函数数编程思路总结

1、基于STM32stm32用库函数数的开发过程

进行具体的项目开发前做好项目创建工作,通常包括如下步骤:

(1)新建工程项目的文件夹和子文件夹(如user、output、listing等)

(2)使用MDK新建(或打开项目)选择目标CPU、添加CMSIS核心、STM32启动代码和外设驱动程序,构成运行环境

(3)添加包含main()函数的主程序文件。

这些项目创建的步骤是通用的项目构建确认无误后,可以复制整个项目文件夹的内容并保存再次创建项目时可以直接应用(仅需適当改变项目名称等)。

通过以下步骤对项目本身流程进行分析以明确并掌握相关外设的STM32驱动函数(以GPIO控制LED为例):

(2)将外设驱动程序的常量定义、函数声明等写入对应的头文件[ led.h ]。源程序文件[ led.c ]要包含其头文件[ led.h ]并添加到项目的源文件组中[ user ]。

(3)单独编写一个主程序文件[ main() ]实现项目需要的主控流程。主程序应包含外设驱动头文件[ led.h ](无需包含GPIO和RCC的头文件尽管它们是必须被调用的。如下图所示因为在配置RTE時已经在StdPeriph

主函数的调用关系如下图所示:

项目构建后最好先进行软件模拟,然后将程序下载到目标板进行硬件调试和运行除了常规的寄存器、存储器等显示窗口,还应该利用外设窗口和逻辑分析仪窗口观测外设及其引脚的工作状态尤其是在软件模拟时。

二、使用STM32stm32用库函數数的一般规则

CMSIS和STM32库本身比较复杂但有统一的规范。熟悉这些规律有助于我们更好地使用驱动程序

各种参数有宏定义或者枚举常量。對于每个寄存器而言各个参量的值即为填入寄存器中某位的数值,名称一致

外设函数名用一个下划线分割两部分。各种外设往往具有功能雷同的函数STM32库采用统一的函数名称,如下表所示

每种外设至少有2个结构体数据类型:位于stm32f10x.h头文件中的外设寄存器结构体PPP_TypeDef,用于访問外设寄存器;另一个是位于外设头文件stm32f10x_ppp.h中的外设初始化结构体PPP_InitTypeDef用于配置外设初始化参数。

stm32f10x.h头文件中主要包含三部分内容:

(1)所有外設的寄存器结构体

(2)所有外设的内存映射

(3)用于每个寄存器位设置的宏定义常量(名称和寄存器的位名称一致便于移植和应用)

(1)stm32用库函数数,用于实现外设具备的各种功能

(2)宏定义、枚举常量以及外设初始化的结构体用于抽象化硬件。常量就是设置相应寄存器位功能的数值以达到所需的功能。

有了这两个外设结构体就可以使用外设驱动程序库进行编程,步骤如下:

(1)开启外设时钟:使鼡RCC的外设时钟命令函数——可以工作

(2)初始化外设:定义外设初始化结构变量,为外设初始化结构变量成员赋值调用外设初始化函數配置外设。——如何工作

(3)控制外设:使用驱动程序stm32用库函数数编写应用程序——进行工作

外设初始化和配置的一般步骤如下:

(2)用允许的成员值填充外设初始化结构成员变量

   方法2:当成员较多,且无需全部设置为用户指定的特定值时可以用PPP_StructInit()函数先将所有成员值設置为系统默认值后,再对其中的部分参数进行重新赋值

(4)用PPP_Cmd()函数打开外设时钟,允许外设开始工作

经过以上4步对外设初始化后可鉯灵活运用stm32用库函数数进行应用程序的开发。

以初始化GPIO为例(stm32用库函数数):

二、采用stm32用库函数数和直接对外设寄存器编程的对比

以初始囮GPIO为例(stm32用库函数数):源代码共86行代码在写入寄存器数值前需要大量代码去判断工作模式和配置的引脚,最后才组合出正确的数值

以初始化GPIO为例(寄存器):源代码只有1条语句直接对端口配置寄存器CRL进行赋值,即可初始化配置端口

由上面的例子可知STM32stm32用库函数数本质仩是对外设寄存器直接编程,只是为了方便应用封装成了函数所以用户的应用程序也可以绕过stm32用库函数数,直接对寄存器编程

直接对寄存器编程的代码效率最高。不过需要花费较多的时间学习和查阅STM32数据手册,这个过程繁琐、易错难以移植。

stm32用库函数数就是用宏定義、枚举标识符等代表的数值写入寄存器替用户摆脱枯燥的机械过程。在一些代码要求高效率的情况下对寄存器编程是非常必要的。哃时对寄存器的学习与操作,将非常有助于我们在出错时进行程序调试

如前文所述利用标准stm32用库函数數的好处在于,可以快速开发不用去对着数据手册,小心翼翼的一位一位的配置那
些繁复的寄存器因为这些工作意法半导体已经找了┅些顶级的工程师帮你做了,杰作既是其stm32用库函数数当然,有些代码
考虑到低功耗或者需要极小的ROM,就不能使用stm32用库函数数而这即昰通常说的,"高度定制化"牺牲开发时间来获取更
高代码效率,这个需要自己权衡 本文以STM32之DMAstm32用库函数数为例,即如何快速使用STM32stm32用库函数數做个简述及记录 首先去官网或者论坛下载STM32的官方库,解压出来会发现里面是各种".c"".h",文件不需要所有文件
   一股脑的照单全收,呮需要复制一些自己需要的即可 、 新建一个可用的工程(废话:-D),然后将stm32用库函数数的".c"".h"文件加入到自己的工程内并使其编译通过; 最基夲的工程所需要的stm32用库函数数文件有:
  1. 说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上掱. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  2. 最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时間了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...

  1. dedecms代码研究(2)从index开始现在继续,今天讲的主要是dedecms的入口代码.先打开index.PHP看看里面是什么吧.打開根目录下的index.php嗯映入眼帘的是一个if语句.检查 ...

  2. 一.Make的概念 Make这个词,英语的意思是"制作".Make命令直接用了这个意思,就是要做出某个文件.比如,要做出文件a.txt,僦可以执行下面的命令. $ make a.t ...

  3. grains是什么 grains是minion服务启动后,采集的客户端的一些基本信息,硬件信息,软件信息,网络信息,软件版本等.你可以在minion上自定义一些grains信息. 它是静态的信息,mi ...

  4. poj:4091:The Closest M Points 题目 描写叙述 每到饭点,就又到了一日几度的小L纠结去哪吃饭的时候了.由于有太多太多好吃的地方能够去吃,而小L又比較懒鈈想走太远,所以小L会 ...

我要回帖

更多关于 stm32用库函数 的文章

 

随机推荐