当前位置: 首页 > news >正文

建设一个购物网站需要多少钱大型网站开发视频百度云

建设一个购物网站需要多少钱,大型网站开发视频百度云,建行app官方下载,面包屑导航 wordpressDMA#xff08;Direct Memory Access#xff0c;直接内存访问#xff09;是一种计算机数据传输方式#xff0c;允许外围设备直接访问系统内存#xff0c;而无需CPU的干预。 文章目录 Part 1: DMA的工作原理配置阶段#xff1a;数据传输阶段#xff1a; Part 2: DMA数据… DMADirect Memory Access直接内存访问是一种计算机数据传输方式允许外围设备直接访问系统内存而无需CPU的干预。 文章目录 Part 1: DMA的工作原理配置阶段数据传输阶段 Part 2: DMA数据组成Part 3: DMA传输过程的实现Part 4: DMA中断处理和性能优化DMA中断处理DMA性能优化 Part 5: STM32实现DMA基于标准库基于HAL库 Part 1: DMA的工作原理 DMADirect Memory Access直接内存访问是一种计算机数据传输方式允许外围设备直接访问系统内存而无需CPU的干预。下面详细介绍DMA的工作原理 配置阶段 配置源地址Source Address通过指定源地址DMA可以知道需要传输数据的起始位置。 配置目标地址Destination Address指定目标地址将数据传输到系统内存中的相应位置。 配置数据长度Data LengthDMA需要知道需要传输的数据长度以便正确地读取和写入数据。 配置控制信息Control Information例如传输模式、中断使能等参数用于指定传输的具体配置。 数据传输阶段 外设发起传输请求外围设备如网络接口卡、硬盘控制器向DMA控制器发起传输请求。 DMA控制器响应请求DMA控制器接收到传输请求后暂停CPU的访问并通过请求信号如DMA请求信号获取对系统总线的控制权。 读取数据DMA控制器从外设读取数据并存储在内部缓冲区中。 数据传输DMA控制器将数据从内部缓冲区传输到系统内存中的目标地址。 传输完成通知当数据传输完成后DMA控制器会释放对系统总线的控制权并发出传输完成的中断信号通知CPU。 CPU处理中断CPU接收到传输完成的中断信号后会执行相应的中断处理程序。 Part 2: DMA数据组成 DMA传输涉及的数据主要有以下几种组成 源地址Source Address源地址表示数据传输的起始地址即外设设备中数据缓冲区的地址。DMA将从这个地址开始读取数据。 目标地址Destination Address目标地址表示数据传输的目的地址即系统内存中的指定地址。DMA将数据传输到这个地址。 数据长度Data Length数据长度表示需要传输的数据大小。它可以以字节、字或者其他单位进行表示。 控制信息Control Information控制信息包括传输模式、中断使能等参数。在传输过程中DMA根据这些参数来控制数据的传输行为。 此外还有一些额外的参数和寄存器与DMA相关用于配置和控制DMA的操作例如 DMA通道选择DMA Channel Selection在具有多个DMA通道的系统中选择要使用的DMA通道。 DMA传输模式DMA Transfer Mode指定DMA传输的模式如单次传输模式、循环传输模式等。 DMA中断使能DMA Interrupt Enable用于控制DMA传输完成时是否产生中断。 Part 3: DMA传输过程的实现 DMA的传输过程涉及多个步骤包括启动DMA、请求传输、数据读取和写入等操作。 下面是DMA传输过程的一个简单实现示例 配置DMA参数 在开始DMA传输之前需要先配置DMA相关的参数如源地址、目标地址、数据长度和控制信息等。这些参数通常通过设置相应的寄存器来实现。 // 配置DMA void configureDMA(uint32_t sourceAddr, uint32_t destAddr, uint32_t dataLength) {// 配置源地址和目标地址writeDMARegister(SOURCE_ADDRESS_REG, sourceAddr);writeDMARegister(DESTINATION_ADDRESS_REG, destAddr);// 配置数据长度writeDMARegister(DATA_LENGTH_REG, dataLength);// 配置控制信息如传输模式、中断使能等writeDMARegister(CONTROL_INFO_REG, controlInfo); }启动DMA传输 配置完成后通过设置相应的使能寄存器启动DMA传输。 // 启动DMA传输 void startDMA() {// 设置DMA使能位writeDMARegister(ENABLE_REG, 1);// 发送传输请求sendDMARequest(); }请求传输 外设设备发出DMA请求请求DMA控制权开始数据传输过程。DMA控制器收到传输请求后暂停CPU的访问并通过请求信号如DMA请求信号获取对系统总线的控制权。 // 发送DMA传输请求 void sendDMARequest() {// 发送DMA请求信号给DMA控制器setDMARequestSignal(); }数据读取和写入 DMA控制器根据配置的参数从外设设备中读取数据并将其写入系统内存中的目标地址。 // 读取数据并写入内存 void transferData() {// 从外设读取数据uint32_t data readDataFromPeripheral();// 写入内存writeDataToMemory(data); }传输完成通知 当数据传输完成后DMA控制器会释放对系统总线的控制权并发送传输完成的中断信号通知CPU。 // DMA中断处理函数 void handleDMAInterrupt() {// 处理传输完成的中断信号// ... }Part 4: DMA中断处理和性能优化 DMA中断处理 在DMA传输完成时DMA控制器可以触发一个中断通知CPU传输已完成。CPU可以相应地执行中断处理程序进行必要的操作。 中断使能设置 在配置DMA参数时通过设置相应的控制信息可以选择是否使能DMA传输完成中断。如果使能了中断DMA传输完成时会产生中断请求信号。否则传输完成后不会触发中断。 中断处理程序 在CPU侧需要编写中断处理程序来处理DMA传输完成中断。中断处理程序负责执行相应的操作如处理传输完成的数据、清除中断标志等。 DMA性能优化 为了提高DMA传输的效率和性能可以采取以下优化技术 数据对齐Data Alignment 尽可能地对齐数据可以提高DMA的传输效率。许多硬件平台在DMA传输时对数据对齐有限制所以确保数据在传输过程中的对齐是重要的。 数据块传输Block Transfer DMA支持以块为单位的数据传输逐次传输多个数据块并在传输完成后给出一个中断通知。这种方式比每次传输一个数据更高效减少了中断的开销和系统总线访问的次数。 通道优先级Channel Priority 在具有多个DMA通道的系统中可以通过设置不同的通道优先级来决定DMA通道之间的数据传输优先级。这样可以在多个外设设备同时请求传输时对优先级较高的设备进行优先处理。 多重缓冲区Double Buffering 使用多个缓冲区来存储数据可以提高DMA传输效率。当DMA从一个缓冲区传输数据时CPU可以同时向另一个缓冲区写入新的数据从而实现并行操作。 Part 5: STM32实现DMA 基于标准库 示例代码 #include stm32f10x.h#define BUFFER_SIZE 100uint32_t sourceBuffer[BUFFER_SIZE]; uint32_t destinationBuffer[BUFFER_SIZE];void DMA_Configuration(void) {DMA_InitTypeDef DMA_InitStructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);DMA_DeInit(DMA1_Channel1);DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)(ADC1-DR);DMA_InitStructure.DMA_MemoryBaseAddr (uint32_t)destinationBuffer;DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralSRC;DMA_InitStructure.DMA_BufferSize BUFFER_SIZE;DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_HalfWord;DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode DMA_Mode_Circular;DMA_InitStructure.DMA_Priority DMA_Priority_High;DMA_InitStructure.DMA_M2M DMA_M2M_Disable;DMA_Init(DMA1_Channel1, DMA_InitStructure);DMA_Cmd(DMA1_Channel1, ENABLE); }int main() {// 初始化源缓冲区for (int i 0; i BUFFER_SIZE; i) {sourceBuffer[i] i;}// 配置DMADMA_Configuration();while (1) {// 等待DMA传输完成while (!DMA_GetFlagStatus(DMA1_FLAG_TC1));// 处理传输完成的数据for (int i 0; i BUFFER_SIZE; i) {// 处理destinationBuffer中的数据// ...}// 清除DMA传输完成标志位DMA_ClearFlag(DMA1_FLAG_TC1);} }在这个示例代码中首先通过DMA_Configuration函数进行DMA的配置。然后在主循环中等待DMA传输完成的标志位处理传输完成的数据并清除传输完成标志位。 基于HAL库 示例代码 #include stm32f1xx_hal.h#define BUFFER_SIZE 100DMA_HandleTypeDef hdma_adc1;uint32_t sourceBuffer[BUFFER_SIZE]; uint32_t destinationBuffer[BUFFER_SIZE];void DMA_Configuration(void) {__HAL_RCC_DMA1_CLK_ENABLE();hdma_adc1.Instance DMA1_Channel1;hdma_adc1.Init.Direction DMA_PERIPH_TO_MEMORY;hdma_adc1.Init.PeriphInc DMA_PINC_DISABLE;hdma_adc1.Init.MemInc DMA_MINC_ENABLE;hdma_adc1.Init.PeriphDataAlignment DMA_PDATAALIGN_HALFWORD;hdma_adc1.Init.MemDataAlignment DMA_MDATAALIGN_HALFWORD;hdma_adc1.Init.Mode DMA_CIRCULAR;hdma_adc1.Init.Priority DMA_PRIORITY_HIGH;HAL_DMA_Init(hdma_adc1);__HAL_LINKDMA(hadc1, DMA_Handle, hdma_adc1);HAL_DMA_Start(hdma_adc1, (uint32_t)(ADC1-DR), (uint32_t)destinationBuffer, BUFFER_SIZE); }void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {// 处理传输完成的数据for (int i 0; i BUFFER_SIZE; i) {// 处理destinationBuffer中的数据// ...} }int main() {// 初始化源缓冲区for (int i 0; i BUFFER_SIZE; i) {sourceBuffer[i] i;}// 配置DMADMA_Configuration();// 启动ADC转换HAL_ADC_Start_DMA(hadc1, (uint32_t*)sourceBuffer, BUFFER_SIZE);while (1) {// 主循环中不需要额外的处理// 在需要使用CPU的其他任务中加入适当的延时或等待DMA传输完成的标志位// ...} }这个示例使用了STM32Cube HAL库提供的HAL库函数进行DMA的配置和控制。在DMA_Configuration函数中使用HAL_DMA_Init函数进行DMA的初始化并且通过__HAL_LINKDMA宏将DMA与ADC关联起来。在HAL_ADC_ConvCpltCallback函数中处理传输完成的数据。
http://www.dnsts.com.cn/news/210854.html

相关文章:

  • 建立网站坐等访问者发现如何用手机制作游戏
  • 徐州网站建设招聘网邵阳县做网站
  • 网站关键词书写步骤网站内容及内链建设
  • 极路由4 做网站wordpress自定义文章参数
  • dede做英文网站优化证书在线制作生成器
  • 河北建筑工程信息网站龙岩网站设计找哪家好
  • 电子科技学校网站建设桂城网站制作公司
  • 建德网站建设德品牌网wordpress修改文章默认排序
  • 网站建设技术思维导图引流推广是什么
  • 2016年做网站能赚钱吗简介网络营销的概念
  • 分享站wordpress主题深圳seo优化公司哪家好
  • 延安网站建设电话云服务器建立多个网站吗
  • 中力建设网站南京电子商务网站建设
  • 哪个网站可以做网红一个网站2级域名多
  • 如何做网店网站中国赣州
  • 做网站需要写代码吗网站建设外包注意什么
  • 公司网站建设总结wordpress实现投稿功能
  • 设计网站建设合同书千家美装饰怎么样
  • 基于php的网站建设思路方案山东省建设厅网站一体化平台
  • 私人公司怎么做网站常州新北区有做淘宝网站策划的吗
  • 建网站怎么挣钱flash教程自学网
  • 设计最简单的企业网站网站网络拓扑图
  • 网站开发岗位之间的关联哪个网站能看到学做标书
  • 域名解析网站登录做电商网站
  • 如何写一份网站优化建设的方案网站开启伪静态
  • 公司网站的ftp是什么wordpress配置ftp服务器配置
  • 怎样如何做网站招聘网站哪个平台比较好
  • 网站文章编辑网站哪里可以查到做ddos
  • 电子商务网站建设与维护读书报告企业网站建设兴田德润实惠
  • 专做ppt的网站寻找网站制作公司