小弟新手,最近在做STM32采集片外AD信号的程序
现在用了Tim2的ch3捕获功能监控外部触发采样的信号,片外AD输出8位并行数据接GPIO口,当外部采样信号到来时,DMA读取GPIO口数据并保存到内存中
我模仿网上例程an2548,在开发板程序基础上修改了寄存器版(因为时间紧固件库不会用,怕出错)。
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
RCC->AHBENR|=1<<0; //开启DMA1时钟
delay_ms(1); //等待DMA时钟稳定
DMA_CHx->CPAR=cpar; //DMA1 外设地址
DMA_CHx->CMAR=(u32)cmar;//DMA1,存储器地址
DMA1_MEM_LEN=cndtr; //保存DMA传输数据量
DMA_CHx->CNDTR=cndtr; //DMA1,传输数据量
DMA_CHx->CCR=0X00000000;//复位
DMA_CHx->CCR|=0<<4; //从外设读
DMA_CHx->CCR|=0<<5; //不执行循环操作
DMA_CHx->CCR|=0<<6; //外设地址非增量模式
DMA_CHx->CCR|=1<<7; //存储器增量模式
DMA_CHx->CCR|=1<<8; //外设数据宽度为16位