历史上的今天

今天是:2024年09月23日(星期一)

正在发生

2019年09月23日 | STM32——库函数开发小结

发布者:云自南国来 来源: eefocus关键字:STM32  库函数  开发小结 手机看文章 扫描二维码
随时随地手机看文章

基本上所有外设都有以下几类寄存器:【CR/DR/SR】


(1)控制寄存器 xxx_CR(Control/Configuration Register):这类寄存器是用来配置、控制 相应 外 设 的 工 作 方 式 的 。 如 GPIOx_CRL、GPIOx_CRH, AFIO_EXTICR1~AFIO_EXTICR4,串口的 USART_CR1~USART_CR3等。


(2)数据寄存器 xxx_DR(Data Register):这类寄存器主要是存储了外设进行输出输入的数据。如 GPIOx_IDR、GPIOx_ODR、USART_DR 等。


(3)状态寄存器 xxx_SR(Status Register):这类寄存器主要存储了当前外设的运行状态,主要为一些标志位。如 USART_SR、ADC_SR等。


一、初始化


GPIO_InitTypeDef型的 GPIO_InitStructure 用来配置 GPIO;


NVIC_InitTypeDef型的 NVIC_InitStructure 用来配置 NVIC;


EXTI_InitTypeDef型的 EXTI_InitStructure 用来配置 EXTI;


USART_InitTypeDef型的 USART_InitStructure 用来配置 USART。


初始化结构体的控制参数,一般就是与相应外设的控制寄存器 xxx_CR 对应的。


使用ST库对外设进行初始化,一般有以下步骤:


(1)定义一个xxx_InitTypeDef类型的初始化结构体。


(2)根据使用需求,向这些初始化结构体的成员写入特定的控制参数。


(3)填充好结构体之后,把这个结构体作为输入参数调用相应的外设库函数xxx_Init(),从而实现向寄存器写入控制参数,并配置好外设。


如ADC_InitTypeDef, ADC_Init() , I2C_InitTypeDef ,I2C_Init() 等。它们的应用方法都是相同的,区别在于不同的外设其结构体成员不一样,可输入参数相应也不同。


二、数据的输入输出


       对外设的使用,一般涉及其输入和输出数据。如GPIO 的 输入输出 函 数: GPIO_ReadOutputDataBit()、GPIO_ReadInputData()、GPIO_SetBits();还有USART 的收发数据函数:USART_ReceiveData()、USART_SendData(),这类函数都是用于控制输入输出数据的。这些函数控制相应外设数据寄存器 DR 的内容,达到控制输入输出的目的。


(1)通过输入参数,向函数指定要使用的是什么外设,如用(GPIOA,GPIO_Pin_5)选定PA5进行控制,用(USART1)来指定使用串口1外设。


(2)若向外输出数据,则调用Output或 Send函数,把将要输出的数据变量作为函数的输入参数。


(3)若为接收外部数据,则调用Read或Receive函数,读取函数的返回值来得到外部输入数据。对于其他外设,也有类似的控制数据输入输出函数。如用ADC_GetConversionValue()函数来获取ADC转换所得到的数值;用I2C_SendData()函数来使用I 2 C接口进行发送数据。


三、状态位、标志位


xxx_GetFlagStatus() 或 xxx_GetITStatus(),功能分别为获取事件标志位状态和中断标志位状态。xxx_ClearFlag() 或 xxx_ClearITPendingBit() 函数,功能分别为清除事件标志位和清除挂起的中断标志位。这四类函数都是对应到外设的 xxx_SR 寄存器的。


四、外设函数分类

image.png

image.png


关键字:STM32  库函数  开发小结 引用地址:STM32——库函数开发小结

上一篇:stm32点亮LED灯一(库函数版)
下一篇:(STM32)GPIO库函数使用一览

推荐阅读

   8 月间,力晶宣布将在苗栗投资 2 座 12 吋晶圆厂,大谈根留台湾;但去年 10 月,力晶和合肥市政府合资的 12 吋晶圆厂合肥晶合,0.11 微米制程才正式量产,当地还有数百名台籍工作人员,为何马上回头拥抱台湾? IC 设计业传出消息,今年 4 月,力晶和合肥晶合关系已进入冰河期。市场传言,关键在于力晶原本是给合肥晶合 0.11 技术,...
嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段。现在由于各类CPU均集成了UART部件。本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说明。1. 通信协议设计在进行通信时,每次需要传送的信息一般超过1字节。为此,通信双方必须约定通信数据的排列格式,即通信协议。通常把一次通信过程的全部内容称为一个“通信...
  C语言编程程序优化方案  在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。  写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个:  错误做法:  #define MIN(A,B)  ( A 《= B ? A : B )  正确做法:  #define MIN(A,B) ((A)《= (B...
ROHM开发出防水等级达IPX8的小型高精度气压传感器IC“BM1390GLV”非常适用于白色家电和工业设备等对防水性能有要求的应用全球知名半导体制造商ROHM(总部位于日本京都市)面向白色家电、工业设备和小型物联网设备,开发出防水等级达IPX8*1的小型高精度气压传感器 IC“BM1390GLV(-Z)”。 在智能手机和可穿戴式设备等应用中,气压传感器已被广泛用于获取...

史海拾趣

问答坊 | AI 解惑

PLM系统在汽车产品开发中的应用

  汽车工业是一个技术高度密集的成熟产业,是当今许多新技术的载体,而汽车的新产品开发则是汽车技术的核心。当代汽车新产品的开发,从它的基本理念、组织形式、实施步骤和开发手段上都贯穿着信息技术和微电子技术的成果,已经达到了全新化的 ...…

查看全部问答∨

写给快奔三的工程师们

写给快奔三的工程师们 电子工程师们毕业几年之后,开始出现焦虑,对未来感到迷惘,特别到了30岁左右,要考虑买房成家等. 搞技术的要想跨越这个瓶颈,最终能走向成功,一般有三个大方向:其一成为技术牛人,其二搞管理,其三转搞市场. 成为技术牛 ...…

查看全部问答∨

绝缘子带电检测仪(电场法)

高压输电线路绝缘子内缺陷带电检测装置专利号:ZL 02 2 40245.4华北电力大学(北京)网上宣传很多,唯有我们学校在生产,望慎重甄别,以防假冒!010-60120676 13601208165 okgod123@126.com 于老师    用电场法原理,整体水平达到国 ...…

查看全部问答∨

CRC16_32 C 实例与硬件CRC 精解

CRC是一个必备的工具。这个CRC符合MSP430与STM32的硬件CRC算法。 …

查看全部问答∨

多了保护LM317

多了保护LM317可调稳压电源…

查看全部问答∨

元旦散分!

祝大家新年快乐!…

查看全部问答∨

寻求WINCE5.0系统下的软件高手

帮我把里面的一个学习软件破解掉,让它能在另外一台WINCE5.0的系统上运行,都是ARM9架构的 我QQ:76697046 如果在深圳最好,可以当面交流嘿嘿…

查看全部问答∨

RFID技术让你能听墓碑里的人说话

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 当我们去拜谒逝者、或在陌生人的墓碑前经过时,是否感觉到一个人自言自语有些无聊呢?想不想让坟墓里面的人也说点什么?   RosettaStone是一家提供“科技型纪念产品”的公司,他们推出了一款 ...…

查看全部问答∨

TPS2491可以控制的最大功率为多少?

TPS2491可以控制的最大功率为多少? TPS2491是使用外扩MOSFET的,问题:TPS2491是否可以稳定的控制外扩功率达3KW的应用呢? …

查看全部问答∨

地平面分割和跨分割信号线的问题

4层板 地平面分割后只在一点连接,两区之间的信号线怎么不跨分割呢?比如单片机出来的脉冲信号有送去给模拟电路的时候。 而且单片机下面的地要怎么分割,除了内置ADC相关的引脚,其它区域都铺数字地吗?类似的,像DAC和ADC要跨分割沟来放可以吗? ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved