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

网站建设买服务器还是数据库/软文推广媒体

网站建设买服务器还是数据库,软文推广媒体,内蒙做网站,听说福州疫情又严重了关于DMA的笔记详见https://blog.csdn.net/Mr_rustylake/article/details/130140952?spm1001.2014.3001.5501 实验要求:按下key0按键,实现内部RAM中内存到内存的传输。 首先介绍相关的函数和结构体。 函数: 1、__HAL_RCC_DMAx_CLK_ENABLE…

关于DMA的笔记详见https://blog.csdn.net/Mr_rustylake/article/details/130140952?spm=1001.2014.3001.5501

实验要求:按下key0按键,实现内部RAM中内存到内存的传输。

首先介绍相关的函数和结构体。

函数:

1、__HAL_RCC_DMAx_CLK_ENABLE():启动相应DMAx的时钟信号;

2、HAL_Init():利用初始化结构体对DMA进行初始化,参数为相应的初始化结构体;

3、HAL_DMA_Start():开始DMA传输,参数为DMA初始化结构体,数据源数组和目标数组以及初始化函数相关,写0即不需要;

注意:在传输的时候,我们先要失能我们的DMA,传入数据长度之后,再使能DMA。

结构体:

DMA_HandleTypeDef g_dma_handler.Instance:选择我们相应的DMAx和它的通道Channelx;

DMA_HandleTypeDef g_dma_handler.Init.Direction:传输方向,有内存到内存,内存到外设,外设到外设,外设到内存;

DMA_HandleTypeDef g_dma_handler.Init.MemoryDataAlignment:数据接收长度;

DMA_HandleTypeDef g_dma_handler.Init.MemInc:是否需要进行接受数据的指针增量;

DMA_HandleTypeDef g_dma_handler.Init.PeriphDataAlignment:数据传输长度; 

DMA_HandleTypeDef g_dma_handler.Init.PeriphInc:是否需要进行传输数据的指针增量;

DMA_HandleTypeDef g_dma_handler.Init.Priority:DMA的软件设置优先级;

DMA_HandleTypeDef g_dma_handler.Init.Mode:选择普通模式或者循环模式。普通模式只传输一次,再传输的话是不会被记在目标数组中的;循环模式在数组满了的时候再传输则会把数据放在第一个这样循环传输,可以用于输出持续的波形。

---------------------------------------------------------------------------------

接下来编写我们的实验代码。

先编写我们的函数文件代码dma.c:

#include "./SYSTEM/sys/sys.h"
#Include "./BSPDMA/dma.h"DMA_HandleTypeDef g_dma_handler;
uint8_t src_buf[10] = {0x0A, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
uint8_t dst_buf[10] = {0};void dma_init(void){__HAL_RCC_DMA1_CLK_ENABLE();g_dma_handler.Instance = DMA1_Channel1;g_dma_handler.Init.Direction = DMA_MEMORY_TO_MEMORY; //数据传输方向g_dma_handler.Init.MemoryDataAlignment = DMA_MDATAALIGN_BYTE; //数据传输宽度g_dma_handler.Init.MemInc = DMA_MINC_ENABLE; // 数据传输增量,当传输完一个数据后,要移动到下一个数据g_dma_handler.Init.Mode = DMA_NORMAL; //不支持循环模式g_dma_handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;g_dma_handler.Init.PeriphInc = DMA_PINC_ENABLE; // 数据接受增量,当接受完一个数据后,要移动到下一个数据g_dma_handler.Init.Priority = DMA_PRIORITY_HIGH;HAL_DMA_Init(&g_dma_handler);HAL_DMA_Start(&g_dma_handler, (uint32_t)src_buf, (uint32_t)dst_buf, 0);
}void dma_enable_transmit(uint16_t cndtr){ //参数为传输内容长度__HAL_DMA_DISABLE(&g_dma_handler);g_dma_handler.Instance->CNDTR = cndtr; //(DMA1_Channel1->CNDTR = cndtr;)也可以__HAL_DMA_ENABLE(&g_dma_handler);
}

再编写函数头文件dma.h:

#ifndef __DMA_H
#define __DMA_HDMA_HandleTypeDef g_dma_handler;
extern uint8_t src_buf[10];
extern uint8_t dst_buf[10];void dma_init(void);
void dma_enable_transmit(uint16_t cndtr);#endif

编写主函数代码main.c:

#include "./SYSTEM/sys/sys.h"
#include "./BSP/LED/led.h"
#include "./SYSTEM/DELAY/delay.h"
#include "./BSP/DMA/dma.h"
#include "./BSP/KEY/key.h"
#include "./BSP/BEEP/beep.h"
#include "string.h"
#include "./BSP/USART/usart.h"int main(void){HAL_Iniy();sys_stm32_clock_init(RCC_PLL_MUL9);delay_init(72);led_init();beep_init();key_init();usart_init(115200);LED0(0);while(1){key = key_scan(0);if(key == KEY0_PRES){memset(dst_buf, 10, 0);dma_enable_transmit(10);while(1){ //查询传输情况if(__HAL_DMA_GET_FLAG(&g_dma_handler, DMA_FLAG_TC1)){__HAL_DMA_CLEAR_FLAG(&g_dma_handler, DMA_FLAG_TC1);printf("传输完成\n");break;}}}LED0_TOGGLE();delay_ms(200);}
}

http://www.jmfq.cn/news/5078431.html

相关文章:

  • 悬浮网站底部代码/郑州网站建设公司排名
  • 建设网站需要租服务器吗/互联网营销推广渠道
  • 企业网站后台管理/微信引流的十个方法
  • 网站开发的学校/网站查询进入
  • 做网站具体步骤/网站开发详细流程
  • 做复刻衣服买网站/市场营销经典案例
  • 网站策划书背景介绍怎么写/西安市seo排名按天优化
  • 济南做网站哪里便宜/网络推广工作内容怎么写
  • 上饶婚纱工作室网站建设/bt蚂蚁磁力
  • 如何用一个框架做网站/登封网站设计
  • 共青城网站建设/seo推广绩效考核指标是什么
  • 大连58同城招聘网最新招聘/seo基础入门
  • 水利建筑工程网站/semantic scholar
  • 网站管理员怎么做板块建设/网络营销的seo是做什么的
  • 松原市住房和城乡建设厅网站/免费的推广平台
  • 北京网站建设第一/什么是淘宝seo
  • 设计素材网站那个好/企业网站的作用和意义
  • 公司网站优化推广/2022今天刚刚发生地震了
  • 长沙市网站制作多少钱/如何做个人网站
  • 摄影工作室网站设计/阳东网站seo
  • 我做推广找不到我的网站/百度seo优化排名如何
  • 做ppt的软件怎么下载网站/百度seo灰色词排名代发
  • 湖南外发加工网/seo技术蜘蛛屯
  • 新河网站建设/广州网站设计
  • 平面设计接单兼职/亚马逊seo什么意思
  • 辽宁建设工程信息网中标通知书/站长之家seo综合查询
  • 静态网站开发常用语言/游戏推广员拉人犯法吗
  • 一起做财经网站/外链工厂 外链
  • 襄阳网站建设需要多少钱/如何进行关键词优化工作
  • 佛山网站建设定制开发/百度权重域名