完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
昨天学习了DMA写了一个用DMA读取ADC数据的程序,记录下整个过程和一点心得
DMA配置详细说明 (MDK的汉字2复制过来就是乱码,我重新打了一遍注释,晕~) //DMA1各通道配置//外设->存储器/16位数据宽度//DMA_CHx:DMA通道CHx//cpar:外设地址//cmar:存储器地址//cndtr:数据传输量(因为我是一个16位的数据,所以是一)void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr){ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA时钟 DMA_DeInit(DMA_CHx); //重设DMA为缺省值 DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //外设地址 DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //存储器地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //外设到存储器的传输模式 DMA_InitStructure.DMA_BufferSize = 1; //数据量为1(应该为cndtr参数) DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; // DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord ; //16位!!!特别注意 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord ; //16位!!!特别注意 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //循环模式 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //优先级高 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //(内存到内存禁止) DMA_Init(DMA_CHx,&DMA_InitStructure); //初始化 DMA_SetCurrDataCounter(DMA1_Channel1,1);//设置数据量(应该为cndtr参数,若有其它需要改变即 //可,我这里是为了直观)} ADC相关配置
|
|
只有小组成员才能发言,加入小组>>
1348 浏览 0 评论
2111 浏览 0 评论
7991 浏览 0 评论
写了一个用DMA读取ADC数据的程序,记录下整个过程和一点心得
3267 浏览 0 评论
3552 浏览 0 评论
1312浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 23:40 , Processed in 0.695854 second(s), Total 75, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号