网站开发项目需求分析说明书,中国林业工程建设网站,长沙 网站优化,手机软件开发用什么语言DMA主要用于协助CPU完成数据转运的工作 DMA#xff0c;英文全称Direct Memory Access#xff0c;DMA这个外设是可以直接访问STM32内部存储器的#xff0c;包括运行内存SRAM#xff0c;程序存储器flash和寄存器等等#xff0c;DMA都有权限访问#xff0c;所以DMA能完成数据…·DMA主要用于协助CPU完成数据转运的工作 ·DMA英文全称Direct Memory AccessDMA这个外设是可以直接访问STM32内部存储器的包括运行内存SRAM程序存储器flash和寄存器等等DMA都有权限访问所以DMA能完成数据转运的工作 ·第二行的外设指的是外设寄存器一般是外设的数据寄存器DRData Register比如ADC的数据寄存器和串口的数据寄存器等等存储器指的是运行内存sram和程序存储器flash是存储变量数组和程序代码的地方。 ·可配置的通道指的是数据转运的路径从一个地方转运到另一个地方需要占用一个通道如果有多个通道进行转运可以各转各的互不干扰 ·如果DMA进行的是存储器到存储器的数据转运比如想把flash里的数据转运到sram里去那就需要软件触发DMA会一股脑将数据以最快速度转运完成。 如果DMA进行的是外设到存储器的数据转运就不能一股脑转运。外设的数据转运是有时机的需要使用硬件触发比如转运ADC的数据得等ADC每个通道AD转换完成之后硬件触发一次DMA之后DMA再进行转运触发一次转运一次数据才是正确的。 存储器到存储器的转运一般使用软件触发外设到存储器的转运一般使用硬件触发。特定的硬件触发意味着每个DMA的硬件触发源是不一样的要使用某个外设的硬件触发源就得使用他连接的那个通道而不能任意选择通道 ·c8t6这个芯片只有7个通道没有DMA2
存储器映像 ·ROM只读存储器是一种非易失性、掉电不丢失的存储器
ROM分为三块 第一块是程序存储器flash也就是主闪存用途是存储c语言编译后的代码也就是下载程序的位置。运行程序一般是从主闪存里面开始运行。这一块存储器STM32分配的地址是0x0800 0000起始地址也就是第一个字节的地址0800然后剩余字节的地址依次增长每个字节都分配一个独一无二的地址之后程序才能精准的访问这个寄存器。终止地址取决于他的容量编到哪里哪里就是终止地址。如果在软件里看到某个数据的地址是0800开头的一般可以确定为主闪存的数据。 第二块和第三块也是掉电不丢失不难看出这两块存储器的位置是在ROM区的最后面实际上存储介质也是flash只不过一般flash指的是主闪存flash而不是指这两个区域。对于这两块区域的地址都是1FFF开头的。系统存储器的用途是存储bootloader用于串口下载。bootloader一般是芯片出厂自动写入的一般不允许修改。选项字节的存储器一般用于存储一些独立于程序代码的配置参数位置是在ROM的最后面下载程序可以不刷新选项字节的内容这样选项字节的配置就可以保持不变选项字节里主要存储的是flash的读保护和写保护还有看门狗等等的配置。 ·RAM随机存储器是一种 易失性掉电 丢失的存储器 2000开头的是ram区域首先是运行内存sram分配地址是0x2000 0000用途是用于存储运行过程的临时变量也就是在程序中定义变量、数组、结构体的地方类比电脑的话运行内存就是内存条。 外设寄存器地址是0x4000 0000用途是存储各个外设的配置参数也就是初始化各个外设最终读写的东西。外设寄存器也是存储器的一种存储介质其实也是sram不过一般习惯把运行内存叫做sram外设寄存器直接叫做寄存器。 内核外设寄存器地址是0xE000 0000用途是存储内核各个外设的配置参数内核外设就是NVIC和systick因为内核外设和其他外设不是一个厂家设计的所以地址被分开。 ———————————————— 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。 原文链接https://blog.csdn.net/weixin_74859061/article/details/136987999