汇集网友智慧,解决技术难题
30 MM32 adc采集 嵌入式 国产芯片 单片机
赞0
评论
2024-05-21
#include "mm32.h" #define ADC_CHANNEL 0 #define ADC_SAMPLE_COUNT 10 uint16_t adc_data[ADC_SAMPLE_COUNT]; void ADC_DMA_Init() { // 初始化ADC ADC_InitTypeDef ADC_InitStruct; ADC_InitStruct.ADC_Mode = ADC_Mode_Continue; ADC_InitStruct.ADC_ScanMode = DISABLE; ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStruct.ADC_ContinuousConvMode = ENABLE; ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStruct.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStruct); // 配置ADC通道 ADC_RegularChannelConfig(ADC1, ADC_CHANNEL, 1, ADC_Samctl_239_5); // 初始化DMA DMA_InitTypeDef DMA_InitStruct; DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)(&(ADC1->DR)); DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)adc_data; DMA_InitStruct.DMA_Direction = DMA_DIR_PeripheralSRC; DMA_InitStruct.DMA_BufferSize = ADC_SAMPLE_COUNT; DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; DMA_InitStruct.DMA_Priority = DMA_Priority_High; DMA_InitStruct.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStruct); // 启动DMA DMA_Cmd(DMA1_Channel1, ENABLE); // 启动ADC ADC_Cmd(ADC1, ENABLE); ADC_DMACmd(ADC1, ENABLE); } int main() { // 初始化系统时钟等 // 初始化ADC和DMA ADC_DMA_Init(); while (1) { // 等待DMA传输完成 while (!DMA_GetFlagStatus(DMA1_FLAG_TC1)) { } // 数据处理 for (int i = 0; i < ADC_SAMPLE_COUNT; i++) { // 处理adc_data[i] } // 清除DMA传输完成标志 DMA_ClearFlag(DMA1_FLAG_TC1); } }
2024-05-18
2024-04-27
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
312个答案
天意无罪
271个答案
xch
168个答案
jjjyufan
165个答案
coody
158个答案
chunyang
135个答案
LcwSwust
101个答案
呐咯密密
100个答案
赞0
评论
2024-05-21
赞0
评论
2024-05-18
赞0
评论
2024-04-27
您需要登录后才可以回复 登录 | 注册