1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用ADC采集三路电压,然后用DMA传输,但是我对DMA传输一半和传输完成设置了中断,但是似乎并没有进入到中断函数中,以下是我的程序,大神们请看看哪里出错了?
NVIC_InitTypeDef NVIC_InitStructure; DMA_InitTypeDef DMA_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //ê1ÄüDMA′«êä NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn; // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1; // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // NVIC_Init(&NVIC_InitStructure); DMA_DeInit(DMA1_Channel1); //½«DMAμÄí¨μà1¼Ä′æÆ÷ÖØéèÎaè±ê¡Öμ //DMA1_MEM_LEN=cndtr; DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; //DMAíaéè»ùμØÖ· DMA_InitStructure.DMA_MemoryBaseAddr = (u32)AD_Value; //DMAÄú′æ»ùμØÖ· DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //êy¾Y′«êä·½Ïò£¬′óÄú′æ¶áè¡·¢Ëíμ½íaéè DMA_InitStructure.DMA_BufferSize = M*N; //DMAí¨μàμÄDMA»o′æμÄ′óD¡ DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //íaéèμØÖ·¼Ä′æÆ÷2»±ä DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //Äú′æμØÖ·¼Ä′æÆ÷μYÔö DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //êy¾Y¿í¶èÎa8λ DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //êy¾Y¿í¶èÎa8λ DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //1¤×÷ÔúÕy3£Ä£ê½ DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMAí¨μà xóμóDÖDóÅÏ輶 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMAí¨μàxûóDéèÖÃÎaÄú′æμ½Äú′æ′«êä DMA_Init(DMA1_Channel1, &DMA_InitStructure); //¸ù¾YDMA_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉDMAμÄí¨μàUSART1_Tx_DMA_ChannelËù±êê¶μļÄ′æÆ÷ DMA_ITConfig(DMA1_Channel1, DMA_IT_HT,ENABLE);//′«êä1y°ë DMA_ITConfig(DMA1_Channel1, DMA_IT_TC,ENABLE);//′«êäíê3éÖD¶Ï DMA_Cmd(DMA1_Channel1, ENABLE); 以上是我的DMA设置, void DMA1_Channel1_IRQHandler(void) { if(DMA_GetITStatus(DMA1_IT_HT1)!=RESET) { DMA_ClearITPendingBit(DMA1_IT_HT1);//′«êäò»°ë DMA_ClearFlag(DMA1_FLAG_HT1); flag=1; } if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET) { DMA_ClearITPendingBit(DMA1_IT_TC1);//′«êäíê3é±êÖ¾ DMA_ClearFlag(DMA1_FLAG_TC1); flag=2; } } 这是我的中断函数,设置在STM32f10x_it.c.,然后adc我也都设置好了,但是这个flag似乎一直不变为1,我设置是传输到一半就变为1 啊 |
|
相关推荐
3个回答
|
|
|
|
|
|
再次求解释
|
|
|
|
看看你的adc工作了没有
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 03:43 , Processed in 0.625129 second(s), Total 75, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号