求一个MM32SPIN0230的ADC采集例程
项目紧急求好心人提供一个求一个MM32SPIN0230的ADC采集例程,官网的还需要移植删减有点麻烦,谢谢叩头求一个MM32SPIN0230的ADC采集例程
能编译通过的,ADC DMA采集即可,谢谢 你试试这个#include "mm32.h"#define ADC_CHANNEL 0
#define ADC_SAMPLE_COUNT 10
uint16_t adc_data;
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
}
// 清除DMA传输完成标志
DMA_ClearFlag(DMA1_FLAG_TC1);
}
}但需要自己改哈,肯定不能直接编译通过的,可以参考一下思路
论坛上很多分享贴,自己看看吧。 话说官方没有提供相关例程? 其实你可以用原厂提供的例程进行修改的哈,这个简单一些 你说的ADC有,DMA好像官方没有配合弄吧,其实你可以自己试试融合进去 参考ST的例程就行吧,灵动的代码风格和ST的风格很像的 我建议啊,还是自己改一个吧,有哪里不懂可以在社区里咨询嘛 这种应该是在例程上修改的,估计很容易吧,在这里要估计费劲一些 我觉得你可以先用ADC的例程,然后再研究一下DMA,然后就融合一下呗 自己改改吧,这里给你的例程估计也不一定靠谱,也不一定好用 你自己弄呗,你是移植不好啊?还是编译出错不理解? 可以按照MM32其他的与ADC与DMA相关的例程进行移植到MM32PIN0230试试
页:
[1]