存储器映射与寄存器映射的区别 推挽输出和开漏输出的概念

2024-03-18  

本篇文章是我在学习STM32f103时整理出来的知识点,知识点之间没有连贯性,各位看官可以选择自己感兴趣的知识点观看。


01存储器映射与寄存器映射的区别

存储器映射:

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就被称为存储器映射。

寄存器映射:

有特定功能的内存单元,通常我们会给这个特殊的内存单元一个名字,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫做寄存器映射。

02何为推挽输出

1:可以输出高低电平,用与连接数字器件,高电平由VDD决定,低电平由VSS决定。

2:推挽结构指两个三极管受两路互补的信号控制,总是在一个导通的时候另外一个截止,优点开关效率高,电流大,驱动能力强。

3:输出高电平时,电流输出到负载,叫灌电流,可以理解成推,输出低电平时,负载电流流向芯片,叫拉电流,即挽。

03何为开漏输出

1:只能输出低电平,不能输出高电平。

2:如果要输出高电平,则需要外接上拉。

3:开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线。

04文件包含的含义及形式区别

实现文件的包含要使用文件包含命令,文件包含命令的特点是能够在一个程序源文件中将另一个源文件的所有内容包含进来,其一般形式为:

#include<文件名>

#include"文件名"

文件包含可以嵌套使用,即文件B即可以包含文件A,又可以被文件C包含,它们之间的关系为A包含B包含C,这种嵌套可以达到10层以上。 但是要注意文件的互相包含,即文件A包含文件B,而文件B又包含文件A,这是不允许的。 通常给文件命名时可以用以下代码来解决重复调用的问题:

#ifndef  __STM32F10X_H #define  __STM32F10X_H .
.#endif

那么尖括号与双括号所表示的文件查找方法又有什么不同:

1:尖括号表示预处理程序会在系统规定的目录中查找文件,当然也可以由用户自行设置。

2:双括号表示预处理程序首先会在当前源文件所在目录中查找文件,如果无法找到,则转向操作系统的环境变量所指的目录中查找,若仍无法找到,最后转向系统规定的目录中查找文件。

05模拟示波器与数字示波器的区别

模拟示波器:

模拟示波器采用的是模拟电路(示波管,其基础是电子枪)电子枪向屏幕发射电子,发射的电子经聚焦形成电子束,并打到屏幕上。 屏幕的内表面涂有荧光物质,这样电子束打中的点就会发出光来。

数字示波器:

数字示波器是数据采集,A/D转换,软件编程等一系列的技术制造出来的高性能示波器。 数字示波器一般支持多级菜单,能提供给用户多种选择,多种分析功能。 还有一些示波器可以提供存储,实现对波形的保存和处理,现在普遍是使用数字滤波器。

06keil5魔术棒配置

keil5如何设置程序烧写进开发板直接可以运行:打开魔术棒-Debug-Use旁边的Settings-Flash Download-将里面的Reset and Run打开就可以了。

既然说魔术棒的配置,我们就来说一下魔术棒里面比较重要的一处配置,如下图所示:

第一个红框的意思:

相当于我们在文件中使用“define”语句定义宏一样,在编译器中添加宏的好处就是,只要用了这个模板,就不用源文件中修改代码了。

STM32F101X_HD宏:

为了告诉STM32标准库,我们使用的芯片类型是STM32型号是大容量的,使STM32标准库根据我们选定的芯片型号来配置。

USE_STDPERIPH_DRIVER宏:

为了让stm32f10x.h包含stm32f10x_conf.h这个头文件。

第二个红框“Include Paths”这里添加的是头文件的路径,如果编译的时候提示说找不到头文件,一般就是这里配置出了问题。 你把头文件放到了哪个文件夹,就把该文件夹添加到这里即可。

07位带操作公式详解

位带区里面的每一个位都可以通过位带别名区的地址来访问。 位带区的一个位,对应位带别名区的四个字节。

STM32F103中外设位带区与外设位带别名区的地址转换:

别名地址 = 0x42000000 + (A-0x40000000)84+n*4

STM32F103中SRAM位带区与SRAM位带别名区的地址转换:

别名地址 = 0x22000000 + (A-0x20000000)84+n*4

A:表示我们要操作的那个位所在的寄存器的地址

n:位号

注意:位带区的一个位在位带别名区会被膨胀成四个字节

为了方便操作,我们可以把这两个公式合并成一个,公式如下:

((addr & 0xF0000000)+0x02000000+((addr &0x000FFFFF)<<5)+(bitnum<<2))

addr:要操作的位所在寄存器的地址

bitnum:位号,即在寄存器的第几位

配方合成原理:

addr & 0xF0000000 是为了区别 SRAM 还是外设,实际效果就是取出 4 或者 2,如果是外设,则取出的是 4,+0X02000000 之后就等于 0X42000000,0X42000000 是外设别名区的起始地址。 如果是 SRAM,则取出的是 2,+0X02000000 之后就等于 0X22000000,0X22000000 是 SRAM 别名区的起始地址。

addr & 0x00FFFFFF 屏蔽了高三位,相当于减去 0X20000000 或者 0X40000000,但是为什么是屏蔽高三位? 因为外设的最高地址是:0X2010 0000,跟起始地址 0X20000000 相减的时候,总是低 5 位才有效,所以干脆就把高三位屏蔽掉来达到减去起始地址的效果,具体屏蔽掉多少位跟最高地址有关。 SRAM 同理分析即可。 <<5 相当于2的5次方相当于84,<<2 同理。

08启动文件作用及相关名词解释

启动文件的作用:

1-初始化堆栈指针SP

2-初始化PC指针,指向复位程序

3-初始化中断向量表

4-配置系统时钟

5-调用C库函数main,最终进入C的世界

启动文件中的量:

Stack-栈:

用于局部变量、函数调用、函数形参的开销,栈是由高向低生长的。

Heap-堆:

堆用于动态内存的分配,malloc函数

保存8:

指定当前文件的堆栈按照 8 字节对齐。

拇指:

表示后面指令兼容 THUMB 指令。 (16bit)

拇指-2:

兼容16位和32位

出口:

声明一个标号可被外部的文件使用,使标号具有全局属性。

直流电:

分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。 在向量表中,DCD 分配了一堆内存,并且以 ESR 的入口地址初始化它们。

弱:

表示弱定义,如果外部文件优先定义了该标号则首先引用该标号,如果外部文件没有声明也不会出错。

进口:

表示该标号来自外部文件,跟 C 语言中的 EXTERN 关键字类似。

LDR:

LDR是一个伪指令,可以作为加载一个立即数或者一个地址到一个寄存器

09何为CMSIS

ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。 CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。

10何为TLE-TDD

LTE是基于OFDMA技术、由3GPP组织制定的全球通用标准,包括FDD和TDD两种模式用于成对频谱和非成对频谱。
LTE-TDD,国内亦称TD-LTE,即 Time Division Long Term Evolution(分时长期演进),由3GPP组织涵盖的全球各大企业及运营商共同制定,LTE标准中的FDD和TDD两个模式实质上是相同的,两个模式间只存在较小的差异,相似度达90%。 TDD即时分双工(Time Division Duplexing),是移动通信技术使用的双工技术之一,与FDD频分双工相对应。 TD-LTE是TDD版本的LTE的技术,FDD-LTE的技术是FDD版本的LTE技术。 TD-SCDMA是CDMA(码分多址)技术,TD-LTE是OFDM(正交频分复用)技术。 两者从编解码、帧格式、空口、信令,到网络架构,都不一样。

11时钟相关名词及解释

RCC:reset clock control复位和时钟控制器

HSE:High Speed External Clock signal高速的外部时钟

HSI:Low Speed Internal Clock signal高速的内部时钟

MCO:microcontroller clock output微控制器时钟输出引脚

AHB:advanced high-performance bus高性能总线

PLLCLK:锁相环时钟。

SYSCLK:系统时钟

HCLK:AHB高速总线时钟

PCLK1:APB1低速总线时钟

PCLK2:APB2高速总线时钟

RTC:为芯片内部的RTC外设提供时钟

IWDGCLK:独立看门狗时钟


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。