完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
新人求助使用STM8L051F3主控芯片的ADC循环采样DMA传输功能,遇到DMA传输位数变动,采样值交换的问题。
还不能确定是ADC触发DMA的错误还是DMA传输的错误,求大神帮助。 以下是主要代码: 主函数: void main(void) { // GPIO_Init(LED_PORT,LED_PINS,GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOC,GPIO_Pin_0,GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOC,GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast); GPIO_Init(GPIOB,GPIO_Pin_0,GPIO_Mode_Out_PP_Low_Fast); tim2_Init();//向量21 Tim3_Init();//PWM DMA_InitConfig(); ADC_InitConfig();//ADC8位分辨率 enableInterrupts(); GPIO_SetBits(GPIOA,GPIO_Pin_1); while (1) { } } DMA初始化配置 void DMA_InitConfig(void) { CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE); SYSCFG_REMAPDMAChannelConfig(REMAP_DMA1Channel_ADC1ToChannel0); //******************************************************************* DMA_Init( DMA1_Channel0, BUFFER_ADDRESS, ADC1_DR_ADDRESS, 2, DMA_DIR_PeripheralToMemory, DMA_Mode_Circular, DMA_MemoryIncMode_Inc, DMA_Priority_VeryHigh, DMA_MemoryDataSize_HalfWord); /* DMA Channel0 enable */ DMA_Cmd(DMA1_Channel0, ENABLE); /* Enable DMA1 channel0 Transfer complete interrupt */ // DMA_ITConfig(DMA1_Channel0, DMA_ITx_TC, ENABLE); /* DMA enable */ DMA_GlobalCmd(ENABLE); } 宏定义 #define ADC1_DR_ADDRESS ((uint16_t)0x5344) #define BUFFER_SIZE ((uint8_t)0x02) #define BUFFER_ADDRESS ((uint32_t)DMAResult) ADC初始化配置 void ADC_InitConfig(void) { CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE); ADC_Init(ADC1,ADC_ConversionMode_Continuous,ADC_Resolution_12Bit,ADC_Prescaler_2); ADC_SamplingTimeConfig(ADC1,ADC_Group_SlowChannels,ADC_SamplingTime_48Cycles); ADC_Cmd(ADC1,ENABLE); GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_In_FL_No_IT);//按键1 GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_In_FL_No_IT);//按键2 ADC_ChannelCmd(ADC1,ADC_Channel_12,ENABLE);//PB6 ADC_ChannelCmd(ADC1,ADC_Channel_13,ENABLE);//PB5 // ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE); ADC_DMACmd(ADC1,ENABLE); ADC_SoftwareStartConv(ADC1); // ADC_DMARequestAfterLastTransferCmd(); } 运行后查看寄存器与存储数组 可以看到出现两位通道数值交换问题,为什么呢? 数据位数寄存器C0NDTR并不一直为2.但是配置的BUFFERSIZE是2。 请大神给予解答,不胜感激 |
|
相关推荐
1个回答
|
|
在dma进入中断时先关闭ADC请求,出中断再打开就行了
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1684 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1587 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
706 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1629 浏览 2 评论
1893浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
678浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 18:06 , Processed in 0.807838 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号