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

发布者:Huixin8888最新更新时间:2024-03-18 来源: elecfans关键字:存储器映射  寄存器映射  推挽输出  开漏输出 手机看文章 扫描二维码
随时随地手机看文章

本篇文章是我在学习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:独立看门狗时钟


关键字:存储器映射  寄存器映射  推挽输出  开漏输出 引用地址:存储器映射与寄存器映射的区别 推挽输出和开漏输出的概念

上一篇:STM32G474 | 基于STM32Cubemx HAL 库实现 DMA 驱动 GPIO 高速翻转
下一篇:HAL库无法实现UART的DMA传输真是这样吗?

推荐阅读最新更新时间:2024-11-07 22:34

推挽式甲类功放输出功率及损耗分析
  甲类功放不存在交越失真,音频信号可以完整地传输。甲类功放是发烧友追求的目标。一部甲类功放,一其输出功率是多少?功率损耗是多少?这些都是甲类功放制作的前期理论计算。甲类功放多采用NPN与PNP配对的推挽式工作方式。   推挽式甲类功放电路,可以看成是由2个单管式甲类射极器组成。   正电源的NPN管与负电源的PNP管分别工作于甲类状态,对整个音频信号进行放大。输出到音箱。   推挽式甲类功放在进行组装调试前一定要知道,做多大的功率?需要多大静态电流?供应电流是多少?损耗是多少?这方面的资料难寻。有些生产厂家在甲类功放上标示的功率是不是真有这么大?购买者都想核实。如何达到以上目标呢?   这就需要对推挽式甲类功放进行理论分析。  
[电源管理]
<font color='red'>推挽</font>式甲类功放<font color='red'>输出</font>功率及损耗分析
GPIO 输出的时候,也可以读取外部的数据
今天的实验是,能不能设置好引脚之后,这个引脚既能输出,又能输入呢?比如DHT11的数据引脚 1.按键的引脚设置为开漏输出,cpu能读取到正确的按键动作 查询方式和中断方式都可以正常工作(按键连接地,按下时是低电平) 但是有个非常重要的问题一定要注意,该引脚连接的外部设备在cpu输出高电平的时候是不是需要比较大的电流 2.接下来,我们做一下DHT11的实验,也能获得成功,读取位数据的时候,没有修改io端口的模式 实验代码如下: #include stm32f4xx.h #include delay.h //华清远见stm32开发板,DHT11数据引脚连接的是PA3引脚 //初始化函数 //主要
[单片机]
GPIO <font color='red'>开</font><font color='red'>漏</font><font color='red'>输出</font>的时候,也可以读取外部的数据
寄存器名称和地址的映射分析
首先要清楚的一点,所有操作,最终目的都是操作寄存器 一,对比51单片机和STM32对寄存器的操作 1)51单片机: sfr P0=0x80; //关键字sfr 声明地址和名称的映射 P0=0x00; //将0x00赋值给P0口的8位(51单片机一组IO为8位) 2)STM32: GPIOA- ODR=0x00000000 //为GPIOA的ODR寄存器地址赋值0x00000000 二,以GPIOA为例说明STM32寄存器和名称的映射: GPIOA下的某个寄存器,挂载在GPIOA下,地址为GPIOA基地址+偏移量 GPIOA挂载在APB2总线,地址为APB2总线基地址+GPIOA偏移
[单片机]
<font color='red'>寄存器</font>名称和地址的<font color='red'>映射</font>分析
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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