关键词不能为空

当前您在: 主页 > 英语 >

ADC外部触发教训

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-09 07:50
tags:

-

2021年2月9日发(作者:fighting)


ADC1



ADC2



ADC


模式


TIM8

< br>同时触发。



折腾了


3


天,各种查询,感谢网上的大侠提供的信息。现总结下我遇到的问题


< /p>


1


、配置问题:


ADC1


配置模式选择:


ADC_Mode_RegSimult















触发选择:


ADC_Externa lTrigConv_Ext_IT11_TIM8_TRGO


GPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE);




/*


重要!!通过复用选择触



*/


就这一句话,我找了一天的原因,汗!!



重点:要使用管脚重映射来选择外部触发信号,原因:




2


、配置


T IM8TRGO


信号要注意:如果选择了更新模式,同时又开启了预加载,那么此时重< /p>


复计数器会影响这个信号的输出。



3< /p>



ADC


配置程序:


ADC_InitTypeDef ADC_InitStructure;




DMA_InitTypeDef DMA_InitStructure;



NVIC_InitTypeDef NVIC_InitStructure;








/* ADCCLK = PCLK2


/


4 */




RCC_ADCCLKConfig(RCC_PCLK2_Div6);




//


设置


ADC


分频因子


6 72M/


6=12,ADC


最大时间不


能超过

< p>
14M





GPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE);




/*


重要!!


通过复用选择


触发


*/




/* Enable peripheral clocks ------------------------------------------------*/




/* Enable DMA1 and DMA2 clocks */




RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2, ENABLE);





/* Enable ADC1, ADC2, ADC3 and GPIOC clocks */




RCC_APB2PeriphClockCmd(RCC_ APB2Periph_ADC1 | RCC_APB2Periph_ADC2 |



























RCC_APB2Periph_ADC3, ENABLE);




/* DMA1 channel1 configuration ----------------------------------------------*/




DMA_DeInit(DMA1_Channel1);




DMA__PeripheralBaseAddr = ADC1_DR_Address;




DMA__MemoryBaseAddr = (uint32_t)&AdcCh12Buf;



//ADC12


公用缓冲





DMA__DIR = DMA_DIR_PeripheralSRC;














//


从外设读





DMA__BufferSize = AdDataNum;



















//


传送数量


























DMA__PeripheralInc = DMA_PeripheralInc_Disable;




//


外设地址加关闭





DMA__MemoryInc


=


DMA_MemoryInc_Enable;













//< /p>


寄存器地


址加开启





DMA__PeripheralDataSize = DMA_PeripheralDataSize_Word;


//



32


位传

< br>输





DMA__MemoryDataSize


=


DMA_MemoryDataSize_Word;











//



32


位传输





DMA__Mode


=


DMA_Mode_Circular;






//< /p>







DMA_Mode_Normal



DMA_Mode_Circular




DMA__Priority = DMA_Priority_High;





//


高优先级





DMA__M2M = DMA_M2M_Disable;












//


非存储器到存储器模式





DMA_Init(DMA1_Channel1, &DMA_InitStructure);





DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);



//


中断配置:半满和全满





/* Enable DMA1 channel1 */




DMA_Cmd(DMA1_Channel1, ENABLE);





/* DMA2 channel5 configuration ----------------------------------------------*/




DMA_DeInit(DMA2_Channel5);




DMA__PeripheralBaseAddr = ADC3_DR_Address;




//ADC3


地址





DMA__MemoryBaseAddr = (uint32_t)&Adc3Buf;





//


数据缓冲





DMA__DIR = DMA_DIR_PeripheralSRC;













//


从外设读





DMA__BufferSize = AdDataNum;


















//


传输个数





DMA__PeripheralInc


=


DMA_PeripheralInc_Disable;




//


外设地址增加关






DMA__MemoryInc


=


DMA_MemoryInc_Enable;













//


寄存 器地


址增加开启





DMA__PeripheralDataSize


=


DMA_PeripheralDataSize_HalfWord;



//


半字


传输





DMA__MemoryDataSize


=


DMA_MemoryDataSize_HalfWord;











//


半字传输





DMA__Mode


=


DMA_Mode_Circular;























//


普通传



,DMA_Mode_Circular




DMA__Priority = DMA_Priority_High;




DMA__M2M = DMA_M2M_Disable;




DMA_Init(DMA2_Channel5, &DMA_InitStructure);






/* Enable DMA2 channel5 */




DMA_Cmd(DMA2_Channel5, ENABLE);





/* ADC1 configuration ------------------------------- -----------------------*/




ADC__Mode = ADC_Mode_RegSimult;




//


同步规则





ADC__ScanConvMode = DISABLE;







//


扫描禁止





ADC__ContinuousConvMode = DISABLE;




//


连续转换,由外部启动






ADC__ExternalTrigConv


=


ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO;



//


使用


T IM8



TRGO: ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO




ADC__DataAlign = ADC_DataAlign_Right;



//


右对齐





ADC__NbrOfChannel = 1;




//


规则转换数量





ADC_Init(ADC1, &ADC_InitStructure);




/* ADC1 regular channels configuration */





ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_1Cycles5);



//


电压


检 测通道









//ADC_RegularChannelConfig(ADC1,


ADC_Channel_1,


2,


ADC_SampleTime_28Cycles5);




//


电压给定通道





ADC_DiscModeChannelCountConfig(ADC1, 2);





































//


间断模式通道计数




ADC_DiscModeCmd(ADC1,


ENABLE);



















//


使能间断模式




/* Enable ADC1 DMA */




ADC_DMACmd(ADC1, ENABLE);





/* ADC2 configuration ------------------------------------ ------------------*/




ADC__Mode = ADC_Mode_RegSimult;



//ADC2


ADC3


这些位为保留位





ADC__ScanConvMode = DISABLE;




ADC__ContinuousConvMode =



DISABLE;




ADC__ExternalTrigConv =ADC_ExternalTrigConv_None;




ADC__DataAlign = ADC_DataAlign_Right;




ADC__NbrOfChannel = 1;




ADC_Init(ADC2, &ADC_InitStructure);




/* ADC2 regular channels configuration */





ADC_RegularChannelConfig(ADC2, ADC_Channel_11, 1, ADC_SampleTime_1Cycles5);



//


电流

-


-


-


-


-


-


-


-



本文更新与2021-02-09 07:50,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/619857.html

ADC外部触发教训的相关文章