本帖最后由 yzzly 于 2016-11-12 17:13 编辑
本人F407系统,TIM4触发ADC转换,DMA2读取AD结果,一切正常;在解锁FLASH后,执行启动FLASH擦除指令
FLASH->CR |= FLASH_CR_STRT;
后,DMA就不能中断了,百思不得其解!!!
void FlashSectorErase(Uint32 SectorNum)
{
FLASH_EraseSector(SectorNum,VoltageRange_3);
}
void FlashPageWrite(Uint32 SectorNum,Uint32 *SourceBuf)
{
Uint16 Cnt;
FLASH_Unlock();
FlashSectorErase((SectorNum-1)<<3);
for(Cnt=0;Cnt<10;Cnt++)*(SourceBuf+Cnt)=0x55AA55AA;
for(Cnt=0;Cnt<10;Cnt++)
{
FLASH_ProgramWord(FlashAddressTab[SectorNum-1]+Cnt*4,*(SourceBuf+Cnt)); //×Ö±à³Ì
if(*(Uint32 *)(FlashAddressTab[SectorNum-1]+Cnt*4) != *(SourceBuf+Cnt)) //¶Á³ö±È½Ï
{
break;
}
}
FLASH_Lock();
}
void FlashPageRead(Uint32 SectorNum,Uint32 *DestBuf)
{
Uint16 Cnt;
Uint32 *SourceAddr=(Uint32 *)FlashAddressTab[SectorNum-1]; //²éÉÈÇøµØÖ·±í
for(Cnt=0;Cnt<10;Cnt++)
{
*(DestBuf+Cnt)=*(SourceAddr+Cnt);
}
}
|