第十一期实现写入文件与文件的读取操作
2018-09-16 12:23
,2018云栖大会·武汉峰会上,阿里云首次曝光了人工智能产品家族,全方位公开AI产品体系(详见ai.aliyun.com),通过一张图来了解下。阿里云陆续推出了多款AI
2018-06-12 15:46
蓝桥杯第十一届省赛单片机组,翻了下以前做过的一些项目和比赛,发现了之前准备比赛的一些注意事项和心得,分享给大家希望大家能够避免错误拿高分。 适当的延时很重要,可以解决一些不正常现象ds1302读取
2021-07-14 06:57
摘要: 2018年3月29日,在**深圳云栖**大会弹性计算技术专场上,来自阿里云弹性计算产品专家崆闻做了主题为**《百万级别IOPS云盘产品全面解析》**的技术分享,主要就阿
2018-04-04 10:19
陌、南瓜电影等重磅嘉宾,分享他们与阿里视频云之间的故事。12月19日-20日,全球云计算TOP级峰会云栖大会的年度压轴大戏——北京峰会在国家会议中心成功举办,本次峰会内容将涵盖云计算、大数据和人工智能
2017-12-27 17:43
如图,第十一道主流程为成型。成型的目的:顾名思义,成型就是将PCB工厂生产时的工作板按照客户的要求,做成出货给客户的成品板的形状。成型又可以分为锣板成型和模具成型,当然FPC还有激光成型,此文主要
2023-04-07 16:49
发挥了非常重要的作用。本文就和大家分享一下,这届南京云栖大会阿里云又有哪些新产品发布。SAP云解决方案SAP云解决方案支持企业在阿里云上部署 SAP 关键业务,依托可靠
2018-04-28 17:18
摘要: 在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析。大会现场的精彩分享也赢得观众们的一
2018-04-03 11:42
` 本帖最后由 michael_llh 于 2016-1-11 22:35 编辑 MSP430教程之十一上次和大家说了软硬件的SPI,那么这次我们要说的IIC总线的通信方式,他有什么好处呢
2016-01-04 15:46
本帖最后由 kkhkbb 于 2018-4-3 18:51 编辑 一、概述:1、DMA简介DMA的英文拼写是"Direct Memory Access",汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。DMA模式又可以分为Single-Word DMA(单字节DMA)和Multi-Word DMA(多字节DMA)两种。2、 DMA工作原理DMA 允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。DMA 传输主要地将一个内存区从一个装置复制到另外一个。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存去。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。所以,DMA传输对于高效能嵌入式系统算法和网络是很重要的。3、DMA类别按键主要有两种类型:单字节DMA、多字节DMA。单字节DMA:一次传送一个字节,效率较低,但它会保证在两次DMA传送之间,CPU有机会获得总线控制权,执行一次CPU总线周期。 多字节DMA:一次请求传送一个数据块,效率高,但在整个DMA传送期间,CPU长时间无法控制总线(无法响应其他DMA请求,无法处理其他中断等)。二、实验原理:DMA(直接存储器访问)传输不需要占用CPU,可以在存储器至实现高速的数据传输。本实验采用DMA2控制器的数据流0,选用通道0进行数据传输。通过LED的颜色来判断传输是否成功。三、源代码:1.主函数及DMA设置/* * Name : main * Description: --- * Author: ysloveivy. * * History * -------------------- * Rev: 0.00 * Date : 11/21/2015 * * create. * -------------------- */int main(void){int i,k;DMA_InitTypeDefDMA_InitStructure;led.initialize();dma.initialize();//测试DMA,测试成功蓝灯闪烁,测试失败,红灯闪烁DMA_InitStructure.DMA_Channel = DMA_Channel_0;//选择通道0DMA_InitStructure.DMA_PeripheralBaseAddr = (unsigned long int)src_buffer;//DMA外设基地址DMA_InitStructure.DMA_Memory0BaseAddr = (unsigned long int)dst_buffer; //DMA存储器地址DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToMemory;//方向为存储器到存储器DMA_InitStructure.DMA_BufferSize = (unsigned long int)BUFFER_SIZE;//数据传输量DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable; //外设增量模式DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//存储器增量模式DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //设置外设数据宽度DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//设置存储器数据宽度DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;//运行模式为普通模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;//优先级级别为高DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;//FIFO模式禁止DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;//FIFO阈值DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; //存储器突发单次传输DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//外设突发单次传输DMA_Init(DMA2_Stream0, &DMA_InitStructure);DMA_Cmd(DMA2_Stream0, ENABLE); //使能DMA2_Stream0while(DMA_GetCmdStatus(DMA2_Stream0) != DISABLE);for(i = 0;i < BUFFER_SIZE;i++){ if(dst_buffer != src_buffer){//测试失败while(1){ for(k = 0;k < 10000000;k++); LED_RED_ON; for(k = 0;k < 10000000;k++); LED_RED_OFF;} }}//测试成功while(1){ for(k = 0;k < 10000000;k++); LED_BLUE_ON; for(k = 0;k < 10000000;k++); LED_BLUE_OFF;}}2.DMA初始化函数/* * Name : initialize * Description: --- * Author: ysloveivy. * * History * -------------------- * Rev: 0.00 * Date : 11/29/2015 * * create. * -------------------- */static int initialize(void){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//使能DMA2时钟DMA_DeInit(DMA2_Stream0);//配置DMA2while (DMA_GetCmdStatus(DMA2_Stream0) != DISABLE)//等待DMA可配置{}return 0;}3、小知识在DMA的设置中我们遇到了关于DMA设置的结构体,我们通过配置其相关参数,以实现我们想要的功能,其解释如下:typedef struct{ uint32_t DMA_Channel; //选择通道 uint32_t DMA_PeripheralBaseAddr;//DMA外设基地址 uint32_t DMA_Memory0BaseAddr;//DMA存储器地址 uint32_t DMA_DIR;//DMA传输方向 uint32_t DMA_BufferSize;//数据传输量 uint32_t DMA_PeripheralInc;//外设增量模式选择 uint32_t DMA_MemoryInc; //存储器增量模式 uint32_t DMA_PeripheralDataSize;//设置外设数据宽度 uint32_t DMA_MemoryDataSize; //设置存储器数据宽度 uint32_t DMA_Mode; //运行模式选择 uint32_t DMA_Priority;//优先级选择 uint32_t DMA_FIFOMode;//FIFO模式选择 uint32_t DMA_FIFOThreshold;//FIFO阀值 uint32_t DMA_MemoryBurst; //存储器突发单次传输 uint32_t DMA_PeripheralBurst;//外设突发单次传输}DMA_InitTypeDef;四、实验现象:试验成功蓝色LED灯闪烁,试验反败红色LED灯闪烁。五、代码包下载连接:网盘:http://pan.baidu.com/s/1bcY5JK
2018-04-03 15:14