历史上的今天
今天是:2025年01月21日(星期二)
2020年01月21日 | stm32f103zet6使用adc3通过dma2_5转换
2020-01-21 来源:eefocus
#define ADC3_DR_Address ((u32)0x40013C4C)
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能扫描
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//ADC转换工作在单次模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC3;//定时器2的捕获比较3为转换外部触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 10;//转换通道为通道1
ADC_Init(ADC3, &ADC_InitStructure); //初始化ADC
ADC_RegularChannelConfig(ADC3, ADC_Channel_1, 1, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_12, 2, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_8, 3, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_7, 4, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_11, 5, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_10, 6, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_13, 7, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 8, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_6, 9, ADC_SampleTime_28Cycles5 );
ADC_RegularChannelConfig(ADC3, ADC_Channel_4, 10, ADC_SampleTime_28Cycles5 );
ADC_DMACmd(ADC3, ENABLE);//使能ADC3模块DMA
ADC_Cmd(ADC3, ENABLE);//使能ADC1
ADC_ResetCalibration(ADC3); //重置ADC1校准寄存器
while(ADC_GetResetCalibrationStatus(ADC3));//等待ADC1校准重置完成
ADC_StartCalibration(ADC3);//开始ADC1校准
while(ADC_GetCalibrationStatus(ADC3));//等待ADC1校准完成
ADC_ExternalTrigConvCmd(ADC3, ENABLE); ////设置外部事件为TIM2_CC2
DMA_DeInit(DMA2_Channel5);//复位DMA通道5
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC3_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC3ConvertedValue;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 10;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//当前存储器地址不变
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//定义外设数据宽度16位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //定义存储器数据宽度16位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//DMA通道操作模式位环形缓冲模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道优先级高
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止DMA通道存储器到存储器传输
DMA_Init(DMA2_Channel5, &DMA_InitStructure);
DMA_Cmd(DMA2_Channel5, ENABLE); //使能DMA通道5
DMA_ITConfig(DMA2_Channel5, DMA_IT_TC, ENABLE);
void DMA2_Channel4_5_IRQHandler(void)
{
DMA_ClearFlag(DMA2_FLAG_GL5 );
}
void Interrupts_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
NVIC_InitStructure.NVIC_IRQChannel = DMA2_Channel4_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
上一篇:stm32zet6 PWM 记录
下一篇:STM32怎么读取输出口电平
史海拾趣
|
我的板子碰上了交流电,直接连带Jlink和电脑主板都报销了。 插上这个Jlink,电脑提示无法识别的USB设备,我测量了这个V7 USB的两条信号线之间,只有6欧姆电阻,那两个10欧姆的电阻直接开路了。 换好那两个电阻,再插电脑上,连无法识别的USB设备 ...… 查看全部问答> |
|
现在很多ASIC外围都用到了DDR(II) SDRAM(SRAM),由于数据传输速率太快,数据信号基本都是采用的源同步,很多关于时序的资料都认为源同步的信号在PCB上布线是没有长度限制的(假设不考虑损耗),在对SRAM进行写入数据的时候倒还可以理解,但是在读 ...… 查看全部问答> |
|
最近在ti上买了基于MSP430FG439的心电仪板子。但在调试的时候心电图的波形总是出不来。根据其工作原理是利用两信号的差值来获取心电信号,但我在前端利用测量两个手指输入信号的差值波形时,其波形图总是50HZ的干扰信号。即使通过一级放大5倍后,也 ...… 查看全部问答> |
|
如您用过,那用下来感觉怎么样,我司测试了几片,目前还不错,但是不知道长期下来的稳定性和可靠性如何? 以前用过别家的(名字就不报了),通信距离可以,就是传输丢包率太高,误码也比较严重,所以这次换了家试用。由于项目比较急,没那么长时间 ...… 查看全部问答> |
|
51学习板,12864液晶屏,MSP430F169最小系统板,232转485,交换机等 本帖最后由 hanskying666 于 2014-3-15 22:31 编辑 1、S232转RS485转换器 232转485协议转换器 RS232转485转换器 5元 2、MSP430F169最小系统板2个 & ...… 查看全部问答> |




