stm32按键矩阵代码_STM32 学习笔记---1

既然打算学,基础的东西元件的得知道是什么,这样写代码的时候才能知道自己在干什么!

ROM 和Flash 断电后都能储存数据,RAM则不能

其实闪存(flash)是ROM的一种它的全名---FLASH EEPROM

EEPROM---电可擦除可编程只读存储器

Flash

Flash是⼀种⾮易失性存储器,即断电之后数据也不会丢失,这个存储器的特点是不能以字节的方式擦除信息,它按扇区(block)操作

32的芯片有些参数说 Flash的大小256k,64k,512k,它可以用于存储代码,也可以用于存储数据。

我们编译好的程序就放在这个地方。内核通过 ICode 总线来取里面的指令。
也存放常量  const修饰的

SRAM

静态随机存取存储器(SRAM)是随机存取存储器的⼀种。所谓的“静态”,是指这种 存储器只要保持通电,⾥⾯储存的数据就可以恒常保持。

相对之下,动态随机存取存储器(DRAM)⾥⾯所储存的数据就需要周期性地更新

程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过DCode 总线来访问它。

单片机中有FLASH为啥还需要EEROM?

原文:https://www.zhihu.com/question/379251731/answer/1080753769

flash可以一个字节一个字节写,但是删除的话,得一整个扇区删除。
目前常见的flash一个扇区是4k的大小。如果你只要删改一个哪怕一个字节的数据。都要先把flash的至少一个扇区的数据读到ram里。然后修改。改好了后再把这个扇区的数据再存回去。如果只是小数据量的修改。则这样一折腾,操作复杂。而且mega328才2k的RAM。存不下一个扇区的数据。所以内置了EEPROM,可以按字节删改。


stm32 F10xxx系统结构,图下面是每个名词的介绍,结合着看

系统构架

● 四个驱动单元:

  1. CortexTM-M3内核DCode总线(D-bus) 和 系统总线(S-bus)
  2. 通用DMA1 和 通用DMA2

● 四个被动单元

  1. 内部SRAM
  2. 内部闪存存储器
  3. FSMC
  4. AHB到APB的桥(AHB2APBx),它连接所有的APB设备

我们可以把驱动单元理解成是CPU 部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件

这些都是通过一个多级的AHB总线构架相互连接的,如下图所示:

从AHB 总线延伸出来的两条 (APB1和APB2) 总线,上面挂载着STM32 各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上,这个是我们学习STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。

1052d0149b3a8f06ce3863ef3de0f3d9.png

部分参考:https://zhuanlan.zhihu.com/p/96126833

ICode总线

该总线将CortexTM-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

ICode 中的I 表示Instruction,即指令。程序编译之后生成的二进制文件都是一条条指令,烧录后存放在FLASH中,内核要读取这些指令来执行程序就必须通过ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。

由上图也可看出ICode连接M3内核与Flash接口

DCode总线

该总线将CortexTM-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访

问)。

DCode 中的D 表示Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用C 语言中的const 关键字修饰,是放到内部的FLASH 当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。因为数据可以被Dcode 总线和DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

系统总线

此总线连接CortexTM-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间

的访问。

DMA总线

此 总 线将 DMA 的AHB主 控 接口 与总 线 矩阵 相联 , 总线 矩阵 协 调着 CPU 的 DCode 和 DMA 到SRAM、闪存和外设的访问。

总线矩阵

总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和AHB2APB桥)。在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)。

AHB外设通过总线矩阵与系统总线相连,允许DMA访问。


原文:https://blog.csdn.net/yu132563/article/details/53440590#commentBox

首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。
南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。
这些感觉都类似于APB和AHB。

一定要看图,对比着看!

从AHB 总线延伸出来的两条 (APB1和APB2) 总线,上面挂载着STM32 各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上,这个是我们学习STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形,所以花了点时间研究各种包络提取的算法。所谓包络检测又叫幅度解调,在许多领域都有重要的应用。如果载波信号是确定的,那么通常可以采用同步解调的方式,这种方式的信噪比最好,…

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时,总是被截断,无法执行的错误解决方案 1 典型的错误信息如下: 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个…

python交换数组中的两个元素_[Python]华为面试题,交换两个数组的元素使之总和的差值最小。...

看看写了个 &#xff0c;实现不需数组长度一致&#xff0c;复杂度O(n^2),求好的算法/** arr1{1,2,3};* arr2{22,33,44,55};* 交换两个矩阵数据*/public void exchange(){int index0;int lenarr1.length;int currMinusgetMinus();while(true){for (int i 0; i < arr2.length…

c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break

先来看一个没有break的例子&#xff1a;int main(){int a 1;switch (a){case 1:printf("1");case 2:printf("2");}}我们看一下它的汇编代码&#xff1a;switch (a)0137181F mov eax,dword ptr [a]01371822 mov dword ptr [ebp-0D0h],eax01371828 cmp dwor…

VC中ADO连接SQLSERVER的几种标准方式?

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法&#xff0c;很经典&#xff0c;也很实用&#xff0c;很值得一看。 正文 一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的&#xff0c;是一个便于使用的应用程序层接口。ADO 使您…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…

linux smb 启动失败,[已解决]windows能看到smb,但是打不开

xiadao_81 于 2010-01-15 16:32:31发表:还是不行啊&#xff01;郁闷&#xff01;还会哪里原因的&#xff1f;我把配置中没有注释的全拿出来了74 workgroup mshome75 server string Samba Server76 guest okyes77 guest accountroot102 security share103 passdb backend td…

String类的构造与析构相关处理

String类原型&#xff1a; 1 Class String2 {3 Public:4 String(constchar*str);5 String(constString &other);6 ~String(void);7 String&operator(constString &other);8 Private:9 char*m_data;10 };String的析构函数 1 String::~String(void)2 {3 delete []m_d…

cocos2dx 字体外发光_在电致发光研发领域,选择有机材料是基于哪些原因?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

android点击下拉历史记录,uni-app,社交应用中,聊天页面下拉onPullDownRefresh获取历史消息,数据合并之后,滚动到下拉之前的位置,页面看不见闪动,完美解决...

一般下拉之后&#xff0c;拿到数据合并&#xff0c;会默认展示顶部第一条&#xff0c;模仿其他聊天应用&#xff0c;回到下拉之前位置&#xff0c;如果不做处理&#xff0c;可以看见下拉得到的数据&#xff0c;本方法完美解决有问题可以留言或者加qq445849201讨论&#xff0c;亲…

WebOS + WebIM

此已文重新编辑.WebOSWebOS 是基于web技术实现的类似于桌面操作系统交互风格的应用程序。实现WebOS的主要技术可以是JavaScript或者是RIA(Flex\SL)。在JS领域内的最强大和最著名的可能要数eyeos了。本文所述的WebOS也是采用JavaScript开发的。图1&#xff1a;此应用主要是用于大…

雨滴桌面rainmeter素材_win10 桌面如何做到清爽好看?这篇教程给你答案

当一个电脑用的时间长了以后&#xff0c;难免就会变得非常杂乱。伟大的领袖曾经说过&#xff0c;要像倒腾自己的发型一样折腾好自己的桌面。道理咱都懂&#xff0c;可是大家动起手来就傻眼了&#xff0c;这啥玩意啊&#xff0c;算了吧&#xff0c;还是不弄了。本着慈悲为怀&…

met40如何升级成鸿蒙系统,再见了,EMUI11!你好,华为鸿蒙!

本文原创&#xff0c;请勿抄袭和搬运&#xff0c;违者必究鸿蒙终于来了华为研发鸿蒙OS已经有四五年的时间&#xff0c;诞生时间比大家想象的还要早&#xff0c;并不是为了替代安卓和专门推出的鸿蒙。因为从一开始华为就确定鸿蒙OS是一款面向万物互联时代的操作系统。从华为面向…

学习委托

简单实例 1 publicclasstest2 {3 publicdeledate voidMenuHandler(stringusername);4 publicvoidMenuHandlershixian(stringusername)5 {6 response.write(username);7 }8 publicvoidshow()9 {10 MenuHandler mhMenuHandlershixian;11 mh("majuan");12 }13 publicsta…

ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...

很多朋友问到关于ups相关的计算&#xff0c;其实关于ups方面的计算还是挺多&#xff0c;ups无论是接空开&#xff0c;还是连接电缆&#xff0c;以及选择电池&#xff0c;都可能需要计算它的电流或功率等&#xff0c;那么今天我们来详细了解下ups的相关计算。一、ups空开及电缆的…

android webdav客户端,WebDAV精灵(WebDAV客户端)

WebDAV精灵 让您的Phone,,Pad 成为WebDav客户端,能够使用从WebDav服务器下载文件和上载文件 .一些常用的WebDAV站点:https://webdav.yandex.com(http://www.yandex.com/)https://dav.box.com/dav(https://www.box.net/)https://webdav.mydrive.ch(https://mydrive.ch)http://my…

【李开复】从优秀到卓越 (二)

引 言2000年8月调回微软总部后&#xff0c;因为工作繁忙&#xff0c;我一直没能抽出时间和中国学生做更深入的交流。2003年&#xff0c;一个偶然的机会&#xff0c;我回到中国做了几次演讲。当时&#xff0c;演讲的主办者希望我多谈一谈激励中国学生的内容&#xff0c;多讲讲计…

多层感知机和神经网络的区别_学习笔记-从神经元到神经网络

人的大脑神经网络的复杂程度有人说&#xff0c;只有银河系可以比拟。总所周知&#xff0c;神经网络就是模仿大脑神经网络用数学知识构造的模型。单个神经元还是比较简单的。神经元一个神经元有树突&#xff0c;轴突&#xff0c;和细胞体等部分。树突接受输入信息&#xff0c;细…

华为鸿蒙os电视测评,高端技术下放毫不吝啬!华为智慧屏SE系列评测:鸿蒙OS让入门大屏也好用...

一、前言&#xff1a;高起点的华为智慧屏 终究走向更多大众用户智慧屏从概念落地为产品之后&#xff0c;一直都是华为旗下终端产品当中一个相当重要的角色&#xff0c;特别是在手机业务受阻的当下&#xff0c;更是成了全场景智慧化战略的核心支撑之一。凭借高品质的影音娱乐、花…

python3线程gil_python3爬虫GIL修改多线程实例讲解

我们打开程序后&#xff0c;会发现电脑的内存和cpu发生了变化。在对于前者上面&#xff0c;自然是希望内容占用小&#xff0c;cpu的利用越高越好。那有没有什么方法可以让我们的cpu达到满状态的运行效果呢&#xff1f;这就得用到我们所学的多线程中的知识了&#xff0c;再正式开…