STM32——库函数开发小结

发布者:云自南国来最新更新时间:2019-09-23 来源: 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库函数使用一览

推荐阅读最新更新时间:2024-11-10 13:42

GD32代码移植STM32(一)
GAIWEI例子:GD32F103移植STM32F103 使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。虽然两个款芯片的寄存器地址以及架构基本相同。但是需要注意的是GD32F10x主频是108兆,但是STM32F10x主频是72兆。所以需要针对以RCC时钟进行修改。 1.先将芯片的选项进行修改:查找对应芯片。 2.将STM32的启动文件替换成GD的启动文件。 3.修改时钟相关配置。 打开stm32f10x.h文件,#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*! Time out for HSE start up
[单片机]
GD32代码移植<font color='red'>STM32</font>(一)
STM32使用HAL库开发指南
准备内容 好奇心,耐心,细心 一台电脑,并安装keil5,以及STM32CUBEMX等开发应用。 JLINK或者ST-LINK模块。 STM32开发板或者最小系统板(我选用STM32F103RET6模块,配置与逻辑大同小异)。 01创建工程 步骤 1:在STM32CubeMX中创建一个项目 打开STM32CubeMX软件,在右上方的“Project”标签下,选择“New Project”。 在主界面上选择你需要使用的STM32系列芯片型号。 在左侧的选项树中,选择你需要的外设配置和时钟设置,并进行相应的配置。你可以根据自己的需求勾选或取消勾选相应的外设。 生成完成后,你可以选择打开生成代码所在
[单片机]
<font color='red'>STM32</font>使用HAL库<font color='red'>开发</font>指南
STM32 407 iar fpu 加入浮点
之前想玩一下FPU 可惜那个DSP库看不懂 也找不到教程 我研究了2个晚上总算会用那个FFT了.... 我的环境是 IAR 6.2 板子是STM32F4DISCOVERY 第一 首先下载官方的 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0 没有的同学请自己去官网下一个 DSP库在 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0LibrariesCMSIS 然后我们使用IAR建立工作空间 这个教程到处都有 我就不说了 在编译器里面加入 $PROJ_DIR$......LibrariesCMSISDSP_LibSource ARM_MATH_CM4 ARM_MATH_MATRIX_CH
[单片机]
STM32 SPI难点浅析
我用的是战舰STM32开发板,两个知识点,一:是STM32 SPI的原理;二:用STM32自带的SPI对外部flash(W25Q64)的读写。 一:STM32 SPI的原理 先上图: 主模式和从模式:主模式:主设备在SCK脚产生时钟;从模式:SCK引脚用来接收从主设备传来的时钟。 通常SPI通过4个引脚与外部器件相连: 1、MISO:主设备数据输入,从设备数据输出引脚。 2、MOSI:主设备数据输出,从设备数据输入引脚。 3、SCLK:串口时钟,由主设备输出,从设备输入。 4、NSS:从设备选择 这里必须牢记一点:从上图中可以看出,SPI通信是双向的,主机往从机里面写一个数据,他自己同时也能读到
[单片机]
<font color='red'>STM32</font> SPI难点浅析
基于ZigBee和STM32的室内智能照明系统的设计
随着生活水平的不断提高,人们对日常生活的无线化、网络化、智能化、节能化的需求越来越强烈,传统的照明控制系统已经无法满足人们对日常生活品质的需求。基于上述原因提出了一种基于ZigBee和STM32的室内智能照明系统的设计。 更多资讯,敬请关注大比特资讯http://www.big-bit.com/ 更多技术方案和互动,请访问大比特论坛http://bbs.big-bit.com 在人们的传统意识中,照明系统仅以照明为目的。传统的照明系统中主要的控制方式有手动控制方式和自动控制方式。其中手动控制方式简单、有效,但是过于依赖人工操作,并且控制相对分散,不能有效管理;自动控制方式主要是由时钟元件、光电元件或两者组合的方式来实现对照明设备的
[单片机]
基于ZigBee和<font color='red'>STM32</font>的室内智能照明系统的设计
基于STM32单片机秒中断源和闹钟中断源的解决方案
“RTC”是Real Time Clock 的简称,意为实时时钟。STM32提供了一个秒中断源和一个闹钟中断源。 RTC的技术器是一个32位的计数器,使用32.768khz的外部晶振。 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时间的程序都将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。 在大部份的32位操作系统上,此“TIme_t”数据模式使用一个有正负号的32位元整数(signedint32)存
[单片机]
基于<font color='red'>STM32</font>单片机秒中断源和闹钟中断源的解决方案
如何通过STM32的定时器输出PWM?
本文将介绍通过STM32的定时器输出PWM,如果对定时器不太熟悉的同学可以看下之前的文章《STM32基础定时器详解》,关于定时器的基础功能不再详解。 01 PWM介绍 PWM定义:脉冲宽度调制(PulseWidthModulation,PWM)简称脉宽调制。通俗讲,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电
[单片机]
如何通过<font color='red'>STM32</font>的定时器输出PWM?
STM32的USB通信资料
以下资料由网上收集 usb的传输字节问题(来自computer00) STM32的USB端点缓冲不是固定的,由寄存器设置。 而我的程序中,是如下定义的,端点大小为0x40,端点2做为输出端点, 0xD8+0x40=0x118,也就是说,端点1缓冲前24个字节重叠,被输出数据覆盖了。 /* EP1 */ /* tx buffer base address */ #define ENDP1_TXADDR (0x100) /* EP2 */ /* Rx buffer base address */ #define ENDP2_RXADDR (0xD8) 将端点1的发送地址设置为0x98即可解决此问题。 /* EP1 */ /
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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