ARM芯片stm32中的AHB和APB】的更多相关文章

AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”.AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接.AHB 系统由主模块.从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应. APB,是Advanced Peripheral Bus的缩写,这是一种外围总线.APB主要用于低带宽的周边外设之间的连接,例如UART.1284等,它的总线架构不像 AHB支…
[转]http://www.cnblogs.com/zhaozhong1989/articles/3092140.html 1.前言 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片上总线设计是最关键的问题.为此,业界出现了很多片上总线标准.其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构.…
想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EXTCLK引脚外接一个时钟源 OM[3:2]用来选择到底使用哪个时钟源 再查看原理图,可以发现:OM3和OM2硬件上都是接GND,所以可以知道:采用12MHz晶振作为时钟源 阅读芯片手册,还可以查询到其他寄存器的相关信息,见下图: JZ2440内部使用三种时钟: FCLK: 用于ARM920T芯片,即…
STM32参考手册中的时钟树: 关于时钟讲解,在时钟树中都可以看出来:下面是正点原子PPT中的插图,看起来比较清晰. 总结一下: 1. 在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL: ① HSI是高速内部时钟,RC振荡器,频率为8MHz: ② HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz: ③ LSI是低速内部时钟,RC振荡器,频率为40kHz: ④ LSE是低速外部时钟,接频率为32.768kHz的石英晶体: ⑤ PLL…
一 overview 1 table of contents -*** 2 product overview -***  芯片概述 3 feature  ***    每一个功能的特点 4 block diagram  -******  芯片的内部组织结构框图   4.1 arm core 芯片所选用的arm内核版本  4.2  periptheral         芯片内部支持的外设控制器    4.3 bus(AHB ,APB, AXI bus   (芯片内部连接arm内核与外设控制器的总…
from:第010课_掌握ARM芯片时钟体系 第001节_S3C2440时钟体系结构 S3C2440是System On Chip(SOC),在芯片省不仅仅有CPU,还有一堆外设. 至于有哪些外设,可以查看参考手册.在S3C2440参考手册的第一章PRODUCT OVERVOEW里面有个BLOCK DIAGRAM图: 可以把该图分为上中下三块,上面的是誉CPU紧密相关的,工作于FCLK:中间的一些对性能要求较高的设备,像LCD显示.相机等,在AHB BUS,H即为High,高速之意,工作于HCL…
在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动态使用 首先,应该初始化C堆,初始化代码如下 #include "malloc.h" #pragma import (__use_realtime_heap) //这个函数在rt_heap.h中声明,需要用户自己去实现,返回任意值 unsigned __rt_heap_extend(uns…
端口概述 在STM32中,每个I/O端口可以由软件配置成为输入/输出模式.复位期间或刚复位后,I/O端口被配置成浮空输入模式.所有的GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时, 它们可以被激活或者是断开. 所有的端口都有外部中断的能力. AF功能:对于复用功能,端口必须配置成复用功能输出模式.当软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定.还可以进行软件重映射I/O复用功能. 输入模式 四种输入模式:上拉输入.下拉输入.浮空输入.模拟输入. 以上电路由右…
2018.04.03 大家好,这是我开通博客的第一篇文章,我希望在这里分享我的知识,也学习更多的知识,希望大家学习愉快. 阿里进军游戏产业,拿下旅行青蛙的代理权.腾讯一直在进攻阿里的核心业务:电商和支付,阿里终于开始反击了.游戏是腾讯的核心收入,游戏产业具有周期性,如果被阿里拿下一两个爆款游戏,腾讯就危机了.进攻就是最好的防守,不要总让战火在自己的地盘烧,你打你的,我打我的,游戏对阿里来说可有可无,对腾讯来说就是核心的核心,不容有失,阿里只要持续投入人力物力,就会让腾讯应接不暇了,也会减轻阿里在…
ARM和STM32的区别及ARM公司架构的发展 转:https://www.cnblogs.com/kwdeblog/p/5260348.html ARM是英国的芯片设计公司,其最成功的莫过于32位嵌入式CPU核----ARM系列,最常用的是ARM7和ARM9,ARM 处理器传统的命名是 ARM + 数字的方式:ARM7.ARM9.ARM11,在 ARM11 以后,ARM 公司使用了新的命名方式:Cortex,对比传统的方式就应该是 ARM12.ARM公司只负责提供内核部分, ARM把这个核卖给…
CSDN:http://blog.csdn.net/l20130316 博客园:http://www.cnblogs.com/luckyalan/ 1 综述 I/O口是单片机中非常常用的外设,STM32的I/O口有8种状态,虽然一直在使用过程中没有遇到什么问题,但是一直都不是很清楚,因此这里做一个总结(实际上这里的概念也是和STM8等其他单片机,理解了这8中状态,也就基本上理解了大部分I/O口). 2 庐山真面目 我们在库文件中的"stm32f10x_gpio.h"中可以看到如下代码:…
通过USART1向计算机的串口调试助手打印数据,或者接收计算机串口调试助手的数据,接下来我们现STM32工程上的printf()函数,方便用于程序开发中调试信息的打印. 方法一:使用MicroLIB库 1.1 KEIL-MDK中的Use MicroLIB选项 在MDK开发环境中 MicroLib是缺省c库的备选库,它可装入少量内存中,与嵌入式应用程序配合使用,且这些应用程序不在操作系统中运行. MicroLib进行了高度优化以使代码变得很小,功能比缺省c库少,不具备某些ISO c特性,部分库函数…
printf函数一般是打印到终端的,stm32芯片调试中经常需要用到串口来打印调试信息,那能不能用串口实现类似windows的Console中的printf呢? 答案是肯定的,那就是printf函数的重定向. 使用KEIL5对stm32的printf函数进行重定向,有两种方法:一种是使用微库,另一种是不使用微库. 方法1--使用微库: 1.使用微库,在KEIL5中点击options for target,在Target标签下有个Use MicroLIB---勾选,使用微库. 2.在串口文件中添加…
常见的ARM嵌入式学习问答,设计者和学习者最关心的11个问题: 1.          ARM嵌入式是学习硬件好还是学习软件好? 2.          嵌入式软件和硬件,哪一种职位待遇更高?或者说,在设计中哪一个更重要? 3.        学完51单片机后,想买ARM开发板继续学习,是买ARM7还是ARM9? 4.        到底是学习哪种内核:ARM7.CORTEX-M3.CORTEX-M4.ARM9.CORTEX-A8还是CORTEX-A9? 5.        ARM芯片如何选择型…
源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的最低 1MB范围.这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字.当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的.       位带操作的概念其实 30 年前就有了,那还是805…
一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也可以从负载抽取电流.推拉式…
stm32中assert_param的用法说明   首先是要知道条件判断语句 这个运算符分成三部分: (条件) ? (条件成立执行部分) :(条件不成立执行部分) 就这么简单 例如:a=(x>y ? x:y);   当x>y为真时,a=x,当x>y为假(即y>x)时,a=y. 不少人问在ST官方的STM32的库函数里有很多assert_param是什么作用比如下面的assert_param(IS_ADC_ALL_PERIPH(ADCx));assert_param(IS_ADC_I…
最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2).当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大.使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号. MQ-2气体传感器对液化气.丙烷.氢气的灵敏度高,对天然气和其它可燃蒸汽的检…
1.1  问题描述     __main函数的作用是什么呀?1.2  问题剖析     __main函数是C/C++运行时库的一个函数,嵌入式系统在进入应用主程序之前必须有一个初始化的过程,使用__main标号引导系统时必须将应用程序的入口定义为main().    在初始化的过程中,__main函数的作用主要有两点:    (1)  完成对映像文件的初始化操作     在介绍映像文件的初始化操作之前,先介绍以下几个概念:     1.  映像文件     链接器把多个目标文件链接成一个映像文件…
在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择.但如果完全通过汇编代码实现,又会过于复杂.难以调试.因此,C语言内嵌汇编的方式倒是一个不错的选择.然而,使用内联汇编的一个主要问题是,内联汇编的语法格式与使用的编译器直接相关,也就是说,使用不同的C编译器内联汇编代码时,它们的写法是各不相同的.下面介绍在ARM体系结构下GCC的内联汇编.GCC内联汇编的一般格式: asm( 代码列表 : 输出运算符列表 : 输入运算符列表 :…
该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也…
STM32单片机极简方法 使用宏定义 代替复杂的重定向printf()函数,实现串口打印.(HAL库例程)https://blog.csdn.net/wu10188/article/details/97786989 这个方式有助于编写好的工程. stm32添加串口调试 https://blog.csdn.net/dream_feng/article/details/83504862按照这个方式,添加成功. 首先在stm32中添加SWO输出功能,在uart.c中添加如下代码,作为printf的重定…
在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用. 断言机制函数assert_param我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param():下面以assert_param(IS_GPIO_ALL_PERIPH(GPIOx));为例说一下我的理解,函数的参数IS_GPIO_ALL_PERIPH(GPIOx),我们可以寻找到原型#define IS_GPIO_ALL_PERIPH(PERI…
一 前言 stm32 f103中.关系到一个选择何种编译宏的问题.这里就梳理一下吧. 二 正文 1  在 core_cm3.h 文件中,有如下代码: #if defined ( __CC_ARM ) #define __ASM __asm /*!< asm keyword for ARM Compiler */ #define __INLINE __inline /*!< inline keyword for ARM Compiler */ #elif defined ( __ICCARM__…
一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced System Bus).APB (Advanced Peripheral Bus).AHB用于高性能.高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM.NAND FLASH.DMA.Bridge的连接.APB用于连接外部设备,对性能要求不高,而考虑低功耗问题.ASB是AHB的一种替代…
转自:https://blog.csdn.net/ivy_reny/article/details/56274412 一.AMBA概述    AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced System Bus) 高级系统总线 APB (Advanced Peripheral Bus) 高级外围总线 AXI (A…
首先强调:时钟使能必须在外设初始化之前!!!!!!! 在这引用一个解释, “ARM的芯片,外设通常都是给了时钟后才能设置它的寄存器(即才能使用这个外设). STM32.LPC1XXX等等都是这样,这么做的目的是为了省电,使用了所谓时钟门控的技术. 寄存器是基于什么的? 当然是触发器!!!准确地说应该是D触发器 触发器的赋值是一定需要时钟的, 而寄存器的时钟是由总线时钟提供的,就是说没有总线时钟的话,你给寄存器值它是不会读入的.换句话说,只有送来了时钟,触发器才能被改写值,这样寄存器才会工作. 又…
1.MII/RMII/SMI接口连接和配置 SMI又称站点管理接口,用于cpu与外置PHY芯片通讯,配置相关参数,包含MDC和MDIO两个管脚(CPU上有对应引脚,当然用普通GPIO口模拟SMI管理也是可行的,不过按照固定时序写入和读取数据).‘ MII和RMII则是是两种不同的以太网数据传输接口,因为RMII在使用更少接口的情况下具有MII相同的功效,其中MII如下图连接即可: 特别注意:RMII模式下REF_CLK要连接CPU的MCO引脚,且MCO输出时钟应为50MHz. 这里说下我最近遇到…
https://segmentfault.com/q/1010000004829859/a-1020000004850311 Q: STM32的启动文件startup_stm32f10x_hd.s中的描述是 This module performs: Set the initial SP Set the initial PC == Reset_Handler Set the vector table entries with the exceptions ISR address Configur…
ARM下的对齐处理   from DUI0067D_ADS1_2_CompLib 3.13 type  qulifiers 有部分摘自ARM编译器文档对齐部分  对齐的使用:  1.__align(num)     这个用于修改最高级别对象的字节边界.在汇编中使用LDRD或者STRD时     就要用到此命令__align(8)进行修饰限制,来保证数据对象是相应对齐.     这个修饰对象的命令最大是8个字节限制,可以让2字节的对象进行4字节     对齐,但是不能让4字节的对象2字节对齐.  …