当前位置:科技动态 > stm32寄存器手册pdf百度网盘(stm32寄存器开发手册)

stm32寄存器手册pdf百度网盘(stm32寄存器开发手册)

  • 发布:2023-10-10 23:22

stm32寄存器手册pdf百度网盘(stm32寄存器开发手册)

不太了解STM32复用、重映射和调试I/O配置寄存器(AFIO_MAPR)的库函数。希望大家能评论每句话...

该函数实际上完成了AFIO->MAPR寄存器的配置。只是觉得这段代码写起来太烦人,所以就直接操作寄存器了。例如重映射串口2时为:
AFIO->MAPR|=GPIO_Remap_USART2;
取消重映射时为:
AFIO->MAPR&=~GPIO_Remap_USART2;
GPIO_Remap_USART2 stm32f10x _GPIO.h中定义了,AFIO->MAPR寄存器各个位的定义在参考手册中有详细描述。 进一步提问

我不知道可以像你这么简单地写,但是为什么库函数一定要这样写呢? ?我没看太清楚…………

跟进

固件库的操作一般是读-修改-写。
例如这里:tmpreg = AFIO->MAPR;读取 MAPR 寄存器的内容。根据函数形参传入的数据修改
之后的代码。
当AFIO->MAPR = tmpreg时,将修改后的结果写回MAPR即可看到效果。
固件库做到这一点是严格且无错误的。我使用的方法需要我做出明确的判断,否则很容易出错。

? PC10、RX/PC11、CK/PC12、CTS/PB13、RTS/PB14);
为什么不定义为0x10;但是0x00140010;我不明白前面有14? ?

后续

这确实是个问题,因为PC11引脚还可以作为ADC的外部触发信号输入,所以固件库是这样定义的,用来传输ADC的触发信号到 TIM8,否则在串行通信中 PC11 上的电平调用可能会导致 ADC 操作不正确。

STM32 处理器寄存器配置。

1。端口配置寄存器用于配置GPIO工作模式。具体含义请参考说明书:

2。 CN7[1:0]表示CN7配置占用两位,分别对应其位置的高位(1)和低位(0)。说明书中这样标注也是为了方便说明。如果占3位,可以标记为xxx[2:0]。在下面的描述中,可以代表bit2、bit1、bit0;这同样适用于其他人。

3。 -> 是结构体指针,指向结构体成员符号。 GPIOC本质上是一个结构体指针。结构:

typedef 结构

{

vu32 CRL;

vu32 CRH;

vu32 IDR;

vu32 ODR;

vu32 BSRR;

vu32 BRR;

vu32 LCKR;

}GPIO_TypeDef;

1<<11是移位操作,即1左移11位。这个11是根据要设置的寄存器的位置来确定的。详情请查看手册。明白了这个意思,就能举一反三了。

4。位31:30表示在整个32位寄存器中,占用的位置是位31和30。请注意,通用位标识符是从 0 开始的,因此 32 位寄存器表示第 31 位到第 0 位。

stm32使用库函数操作和寄存器操作

首先,都是C语言。
如果是从51过渡的话,我们先来说寄存器操作。每个MCU都有自己的寄存器。 51是一个比较简单的函数,对应的寄存器也比较少。常用的只有几个,比如P0 P1 SMOD TMOD。这些存在于标准头文件 reg.h 中。 h中,因为少,所以大家就这样操作。随便翻一下手册就可以看出每一位对应的含义,甚至做几个小项目也能记得清楚。因此,在做51开发的时候,大多数时候都是直接操作寄存器。
到了STM32,原理是一样的,也有自己的寄存器。不过,作为ARM核心芯片,它的功能要多得多,寄存器自然也多得多。 STM32手册有一千多页。这时我想像51这样记住每个寄存器已经不太现实了,所以ST工程师给大家提供了库函数这样的东西。
这是一个神器。
库函数将STM32的所有寄存器与结构体一一映射封装,并提供基本的配置功能。当我们想要操作和配置某个外设时,我们不再需要翻看令人眼花缭乱的数据手册。我们可以直接找到库函数说明并使用。这样我们就可以专注于逻辑代码的开发,而不是费力的工作。研究芯片的外设如何需要配置寄存器来驱动它们。
简单来说就是这样。库函数是一个文件包,旨在将开发人员从大量繁琐的寄存器操作中解放出来。当使用外设时,它允许开发者直接调用相应的驱动函数,而不用自己调用。仔细阅读手册并一一配置寄存器。
有人说使用库函数不能抓住芯片的本质,这是见仁见智的问题。熟悉一款芯片是在不断的开发和使用中逐渐理解和掌握的。在调试过程中,我们会遇到很多问题,这就需要我们在整个框架搭建完成后,跟踪相关寄存器的状态并进行比较。手册提供了寄存器每一位的详细分析和代码对比,让您快速积累经验。祝你成功。

请推荐STM32教程...包括书籍、视频、开发板!

Atom的战舰不错。提供例程、书籍(Atomic教你玩stm32寄存器版和库函数版)、PDF文档、视频。下载地址为http://www.sychzs.cn/posts/list/13912。 htm,这个论坛里有很多相关的信息。在决定购买哪一款之前,您可以浏览此处并阅读更多相关信息。这可以是您的选择之一。

stm32寄存器开发的意义

本文主要介绍如何创建一个基本的STM32工程以及工程文件中添加的文件(头文件和原始文件)的含义。本文不使用 RTE。使用的芯片是STM32F103ZET6,KEIL,使用LL相关库函数。由于文档的意思是基于我的理解,可能存在错误,欢迎讨论。 ? Core用于实现CPU-Core、Core-Peripherais和Other--Peripherais的计算和控制。这个方法可行吗?这绝对是可行的。但这样做会出现一些问题。
第一:CMSIS-CORE 包含了 CORE 和 Peripherais 的一些定义。这些定义通常是操作硬件的寄存器的结构。比如要操作某个外设,就必须知道该外设各个寄存器的位置,各个寄存器的作用,保证在设置寄存器值时不出错。这种方法叫做寄存器开发
第二:即使你不怕困难地完成了第一步,那么你就会面临第二个问题:移植。你第一步完成的程序的可移植性很低。为什么?每次切换芯片都可能导致不兼容,因为即使使用相同的框架,每个制造商也可以根据自己的需求改变外设的数量和位置。这可能会导致你在应用层设置的寄存器地址和结构体不兼容。即使是同一厂商、同一架构,也会有不同类型的芯片,更不用说更换厂商,甚至改变芯片架构了。
为了解决寄存器开发的缺点,Silicon Vendor(制造商)提供了一套叫做HAL(硬件抽象层)的东西。什么是哈尔?按照我个人的理解,就是将操作硬件,即操作寄存器的动作有机封装起来,让我们不再需要关注如何操作寄存器,即硬件,而是使用一些有意义的宏或者函数而是为了方便我们写作。程序。这解决了上面的问题一。至于如何解决第二个问题,我刚才提到HAl使用了一些有意义的宏或函数来代替。对于该制造商中相同架构的每个芯片,这些宏或函数都是相同的。例如,在STM32F1的串口上初始化的LL库函数为LL_USART_Init(USART1)。那么即使切换到STM32F3,仍然在应用层调用LL_USART_Init(USART1)。只需要将STM32的HAL文件替换为STM32F3的HAL文件即可。如果它们与 USART1 的外设寄存器位置不同,则说明 HAL 文件的定义已经修改,应用层代码不需要修改。这大大降低了移植的难度。
现在我们的路径变为Application Code(应用层代码)-------->DEVICE HAL -------->CMSIS-Core -------->CPU-Core,核心-外围,其他-外围。这种方法称为库函数开发。
3。库函数开发的基本工程文件(不含系统)
根据上面的描述,我们将文件分为四大部分(不含系统):CMSIS-CORE、STARTUP、HAL、应用代码
CMSIS-CORE 将又细分为三部分:Peripherais-CORE、Peripherais-Device、编译器:
Peripherais-CORE:
具体文件:
1.cmsis_compiler.h(编译器)
2.cmsis_armcc.h(编译器)
3.cmsis_version.h(编译器)
4.core_cm3.h(外设-核心)
5.stm32f1xx.h(外设-设备)
6.stm32f103xe。 h(外围设备- Device)
1.cmsis_compiler.h
该文件是编译声明文件。它的主要作用是:
1.声明使用哪个编译器进行编译。本文使用Keil环境,所以使用armcc编译方式
2.cmsis_armcc.h
该文件是编译器头文件,其主要功能为:
1.声明编译器的一些特殊寄存器操作
3.cmsis_version.h
该文件是编译器版本文件。其主要功能为:
1.声明编译器版本
4.core_cm3.h
该文件是一个声明M3架构核心外设的文件,主要功能为:
1.声明 core_register
2. 声明 NVIC_register
3. 声明 SCB_register
4. 声明 Systick_register
5. 声明 De bug_register
6. 声明 MPU_register(可选)
5.stm32f1xx.h
该文件使用厂家提供的头文件。其主要功能为:
1.根据Keil的宏定义添加F1系列芯片外设声明文件
6.stm32f103xe.h
该文件使用厂家的头文件。其主要功能为:
1.声明stm32f103系列芯片本体所有外设的中断、位置、结构体,以及寄存器操作的相关宏定义
启动:
1.startup_stm32f103xe.s
2.system_stm32f1xx.c
3.system_stm32f1xx.h
1.startup_stm32f103xe.s
这个文件是启动文件,它的主要功能有:
1 . 初始化堆栈
2. 异常和中断的定义,以及部分异常的实现
3. 调用SystemInit函数初始化时钟(系统)
4. 调用main函数进入应用代码
2.system_stm32f1xx.c
这个文件主要是系统时钟初始改变功能的主要功能:
1.初始化时钟
3.system_stm32f1xx.h
这个文件主要是系统时钟初始更改函数声明。主要函数:
1.声明时钟初始化函数
HAL:本文使用的ST的LL库,下面也以LL库为例。当前示例工程点亮一个LED
1. stm32f1xx_ll_bus.h
该文件主要声明了外设总线时钟操作的宏定义。主要功能:
1. 定义总线时钟相关操作
2. stm32f1xx_ll_gpio.c 和 stm32f1xx_ll_gpio.c
这两个文件是 GPIO 外设文件的 LL 库。主要功能:
1. GPIO 外设的数量、位置、结构体、基本操作的声明和定义
3. 其他:LL 库线有很多 C 文件和 H 文件。我们可以根据自己的需要添加它们。我们不一定需要添加它们。添加整个 LL 库。例如:ADC、USART等。本项目只是点亮LED,所以不需要其他文件。 LL库的头文件和源文件包括以下内容(STM32F1系列)
Application Code:应用层代码,主要是我们的业务逻辑。本项目只有main.c文件,用于点亮LED
main.c主要代码如下:
整体文件架构图:
PS:以上为本地项目的树形结构。这种结构只是个人风格。每个人都可以根据自己的风格创建自己的结构
3.如何在KEIL中搭建工程并编译烧录
1.KEIL的安装,网上有很多优秀的文章,可以通过自己参考,无需重复
2. 创建基础工程(选择芯片STMF103ZE)
3. 建立工程文件结构,添加源文件。参考其他文章。就我个人而言,我喜欢保持结构与本地目录一致。添加文件后的Keil工程结构如图:
4.将头文件添加到编译路径
魔棒----》c/c++----- -》包含路径
5.添加全局宏定义
STM32F103xE和USE_FULL_LL_DRIVER
STM32F103xE:用于告诉stm32f1xx文件,最后添加f1系列具体型号的头文件
USE_FULL_LL_DRIVER:用于开始编译法学硕士图书馆。
6. 编写应用程序代码(main.c)文件
7. 编译
8. 烧录(需要连接电脑、模拟器、芯片) 具体您使用的模拟器请参考其他相关设置第
9. LED 指示灯正常亮起。
4.总结
至此,一个使用LL库点亮LED的最基本的项目就已经搭建完成了。本文仅介绍stm32工程文件的架构思路。在实际应用中,可以使用不同的框架和类型的芯片。不要复制它们。您必须知道如何根据您的实际情况使用合适的文件。本文仅供参考
打开CSDN APP查看更多技术内容
STM32三种开发方式:寄存器、标准库函数、HAL库_Sun Vulcan的美丽生活博客...
STM32微控制器是由芯片内嵌处理器核心和外围电路,相当于PC的CPU、内存、主板、硬盘。所有这些都集成在一个不到一厘米见方的芯片中,并通过引脚与外围电路集成。 ,通过不同的协议连接不同的设备,比如USART、SPI、IIC、CAN,这些……
继续访问
STM32笔记(2)寄存器和固件库开发简介_CYRIL0124博客 - CSDN博客。 ..
后面我们还可以定义一个函数来操作需要操作的寄存器。这时我们只需要填写参数就可以使用该函数来操作和配置各种寄存器或者各种外设。函数,这就是固件库实现的基本思想。这是固件库操作GPIO外设的函数。大家可以简单参考一下...
继续访问
stm32入门周2 IO口实验了解库函数开发和寄存器开发的区别
本文内容基于https://www .www.sychzs.cn/video/BV1Lx411Z7Qa P11 GPIO 工作模式: 输入模式 1:浮空输入 输入模式 2:输入上拉模式 输入模式 3:输入下拉模式 由于浮空输入模式下电压的不确定性,很容易被误读。当检测高电平时,一般采用输入下拉模式,当检测低电平时,一般采用输入上拉模式。输入模式 4:模拟模式 输出模式 1:开漏输出 当输出控制电路输出 1 时,N-MOS 开路,实际输出由外部上拉和下拉决定。当输出0时,N-MOS关闭,实际输出为0。实际输出可以通过输入数据继续访问

Stm32寄存器和库函数概述(摘自固件库手册) ).doc
本手册是STM32各标准库对应寄存器的手册,可以为STM32库提供功能开发参考
STM32寄存器版本和库函数版本.zip
STM32寄存器版和库函数版,配合stm32日常更新使用更好 2、本文介绍STM32寄存器版和库函数版的创建
Stm32寄存器和库函数概述(摘自固件库用户手册).zip
在网上看到了一份关于STM32单片机的开发文档,整理了STM32单片机常用寄存器的名称和功能,以及每个功能相关的库函数。函数名称和函数功能。可以作为开发时的参考。
STM32学习笔记(2):新建一个STM32F103项目
1。简介我们已经介绍了如何安装keil5.29和破解keil5.29。让我们开始一个新的STM32F103项目。 2. 项目准备 在创建项目之前,您需要做好以下准备工作。 1)STM32F103芯片包 2)准备STM32固件库 3)创建工程文件和目录 以下是以上三个准备步骤: 2.1:下载芯片包 以下是芯片包的官方下载地址。链接:https://www.sychzs.cn/dd2/Pack/ 下载芯片包后,双击打开即可安装。这个安装的路径是默认的,就是你的keil安装路径下的路径。文件夹,忽略这个,像傻子一样点击下一步,一直点击,然后等待安装。可以下载对应的
STM32学习笔记1:KEIL5配置stm32开发环境,以及新建工程的步骤。
1.下载并安装keil5。 (这里就不介绍了,网上有很多资料)2、下载并安装stm32包。 –>包下载链接请点击此处。正常界面如下。使用浏览器的ctrl+F功能快速搜索对应系列并下载。如果无法打开网页,或者找不到下载包,请点击这里解决。下载的包是一个 zip 文件。该包有两种使用方式。我目前正在尝试的是第一个,稍后我会添加第二个。第一种方法:将后缀名由zip改为pack,然后双击打开安装。这是直接集成到keil软件中的。该方法可以让您快速上手,并且配置简单。但一旦更新了
继续访问
STM32官方标准固件库开发和寄存器开发的区别
一句话可以概括关系:固件库是函数的集合,固件库函数的作用是向下负责直接与寄存器打交道,向上提供接口(API)供用户函数调用。对于STM32级别的MCU来说,记住数百个寄存器并不容易,因此推出了官方固件库。固件库封装了这些寄存器的底层操作,并提供了一组API供开发者使用。大多数情况下,您不需要知道哪个寄存器正在被操作,您只需要知道调用了哪些函数。比较:只需要知道GPIO_SetBi即可进入以下...
继续访问
STM32最新发布使用寄存器开发底层驱动学习(USART+DMA)
代码简洁并且清晰,当然我们需要对其进行很好的注释,否则会比标准库更难理解。方便快捷。您只需要一份 《手册》 即可查看所有寄存器。不需要像标准库那样记住和查找每个函数和参数的作用。
继续访问
STM32的
GPIO配置(寄存器/库函数)
GPIO初始化结构体GPIO初始化首先声明GPIO初始化的结构体;然后打开GPIO所在总线的时钟;然后调整结构体成员配置,包括GPIO引脚、模式、速度;最后,初始化GPIO结构并选择指定的GPIO组。 GPIO_Mode相关内容:模拟输入、浮空输入、下拉输入、上拉输入、通用开漏输出、通用推挽输出、复用开漏输出、复用推挽输出。 GPIO相关函数 ①GPIO初始化函数 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_In
继续访问
库函数开发和寄存器开发
在之前8位计算机时代的程序开发中,芯片一般都是直接配置的,控制芯片的工作模式,比如中断、定时器等。配置的时候经常要查寄存器表,看看使用了哪些配置位,是置1还是置1 0为了配置某个功能,这些都是非常琐碎、机械的工作,因为8位机的软件比较简单,资源有限,直接配置寄存器就可以开发。对于STM32来说,由于外设资源丰富,寄存器的数量和复杂度必然会增加。这时候就可以直接配置寄存器了...
继续访问
cmsis_iar.h
找到了“cmsis_iar.h”,有需要的可以下载看看!
C 语言头文件和源文件注意事项
C 语言头文件和源文件注意事项 文章目录 C 语言头文件和源文件注意事项 0. 前言 1. 实现步骤 1.1 反汇编之前拆分 1.2 拆分后 2. 总结 2.1 头文件内容 2.2 源文件(.c)内容 2.3 函数声明和定义 0. 简介 因为 C 语言编程或者 C++ 语言编程,经常会添加头文件,不像 Python 直接引入第三个库可以导入(import),但是C仍然是嵌入式编程的主流,而Python在这方面仍然相对较少使用。因此,如果完成一个大...
继续访问
头文件与C++中的头文件和源文件的区别
本文转载自:http://www.sychzs.cn/ Article-451-1.html 1、如何根据#include  1将头文件与源文件关联起来,将系统自带的头文件用尖括号括起来,这样编译器就会到系统文件目录中查找。   2。用户定义的文件用双引号引起来。编译器会先在用户目录下搜索,然后到C++安装目录下(比如在VC中可以指定和修改库文件搜索路径,在Unix和Linux中可以指定和修改库文件搜索路径) .
继续访问
通过环境变量来区分STM32库函数和寄存器的区别
#STM32库函数和寄存器# 1.什么是固件库?它和寄存器有什么关系?固件库是函数的集合,直接与底层的寄存器进行交互,并提供接口(API)供用户调用顶层的函数。 2、寄存器的最佳使用方式:单独控制IO口的状态,对寄存器进行位操作寄存器(如51)。调试时对寄存器进行位操作(需要了解哪些寄存器相关并了解流程,调试时阅读寄存器手册)库函数:太多寄存器(如STM32)调用库函数。 .
继续访问
Stm32 初学者该不该学寄存器?库函数好用吗?
作者:jiwangbujiu 链接:https://www.sychzs.cn/question/30409588/answer/244613385 来源:知乎版权归作者所有。商业转载请联系作者获取授权。非商业转载请注明出处。我个人认为,在回答这个问题之前,首先要问自己清楚,学习stm32的目的是什么,或者更深入一点,学习单片机?你现在处于什么状态?您是学生还是已经工作了?你的特别...
继续访问
STM32F103单片机下AT24CXX系列芯片的读写程序
本程序取自正点原子开发板,应用于STM32F103单片机。适用于AT24C01、AT24C02、AT24C04、AT24C08、AT24C16、AT24C32、AT24C64、AT24C128、AT24C256、AT24C512系列I2C存储芯片。 1. sys.h #ifndef __SYS_H #define __SYS_H #include "stm32f10x.h" ////////////////////////////////// / ///////////////////////////////.
继续访问
STM32开发方法及基本介绍
STM32 开发有三种方式 1、寄存器版本 2、库函数版本 3、HAL 库版本 1、库函数开发与寄存器开发的关系。很多人已经从学习51单片机转而想进一步学习STM32。它们用于51单片机的寄存器。开发方式上,ST官方库摆在你面前,你不知道从哪里开始。其实简单来说,固件库就是函数的集合。固件库函数的作用是向下直接与寄存器打交道,向上为用户函数调用提供接口。举例说明什么是STM32固件库以及它与寄存器开发的关系。在51的开发中,我们经常会直接操作寄存器。比如要控制某些IO口的状态,我们直接
继续访问
热门推荐STM32库函数和寄存器的区别
库函数版本和寄存器版本系统时钟设置的区别: **1.** 库函数的目的是为了让用户能够应用,而寄存器的系统时钟则比较原始。库函数的系统时钟是默认设置的,并放置在启动文件中。系统时钟的寄存器版本为Stm32_Clock_Init(336,8,2,7);。 **2.** 库函数速度快,但不是每个芯片都有;寄存器比较复杂,但是各个芯片厂家都提供了系统寄存器设置信息。分别打开库函数和寄存器版本的I/O口设置: 库函数:RC...
继续访问
CMSIS玩家的《黑道成就》攻略
【之前说的】说说真的,从事嵌入式系统开发的“玩家”基本上都听说过CMSIS吧?虽然不清楚它在系统中的具体“用途”是什么,但或多或​​少已经被“CMSIS打败”了——不知不觉中,已经达到了……
继续访问
C语言操作寄存器开发
在使用C语言操作寄存器之前,还是需要先分析《开发板原理图》和《参考手册》,了解需要操作哪些外设寄存器。假设读者已经知道需要操作哪些外设寄存器。本章涉及的代码位于100ASK_STM32F103开发板资料中的“5_程序源码\0_单片机开发模式的开发\2_C语言操作寄存器开发\”。在使用C语言之前,需要先设置栈。如代码段6.3.1所示,上电复位后立即设置堆栈,然后跳转到main函数执行。代码段6.3.1设置堆栈(startup_stm32f10x_hd.s);复位处理程序Reset_H
继续访问
stm32寄存器开发和库开发
stm32

以上是小编对stm32寄存器手册pdf百度网盘(stm32寄存器开发手册)及相关问题的解答。我希望它对你有用! stm32寄存器手册pdf百度网盘(stm32寄存器开发手册)提问!

相关文章