Merhabalar,
Şöyle bir kodum var
if((flag&0x01)==ADCBITTI)
{
//TIM7->CR1&=0xFFFE; // Counter disable
//ADC_tampon kontrolü
if((ADC_tampon[N-1]-ADC_tampon[0]>60) || (ADC_tampon[0]-ADC_tampon[N-1]>60))
goto ADC_tampon_uyusmazligi;
//ADC_tampon kontrolü bitim
dma_kur(N,((UINT32)&ADC_tampon[0]),((UINT32)&M2M[0]));
DMA2_Stream1->NDTR=N; //210 adet veri transfer edilcek.16 bitlik
DMA2_Stream1->CR|=1; //DMA aktif edildi.
indeksara_2(); //DAC_tampon indexsi bulunuyor.
//Bu arayı filtre işlemleri olarak düşünebilirim.
for(volatile UINT16 olesine=0;olesine<10000;olesine++);
indeksara_1(); //index_1 tespit edildi
while(!(flag&0x10)); //M2M'e veriler kopyalanana kadar bekle
flag&=DMARESET;
dma_kur(N,((UINT32)&M2M[0]),((UINT32)&DAC_tampon[0]));
DMA2_Stream1->NDTR=N; //210 adet veri transfer edilcek.16 bitlik
while(1){
if((dac_tampon_sayac-index_2)==0){
TIM7->CR1&=0xFFFE; //TIM7 kapat
break;}
}
DMA2_Stream1->CR|=1; //DMA aktif edildi.
dac_tampon_sayac=index_1; //yeni index değeri burdan itibaren DAC'a basılcak veriler
while(!(flag&DMABITTI));
TIM7->CR1|=0x0001; //TIM7 aktif DAC'a veriler basılıyor.
flag&=ADCRESET;
}
ADC_tampon_uyusmazligi :
else if((flag&0x10)==DMABITTI) //Yeni ADC çevrimi alıncak
{
ADC1->CR2|=ADON;
analog1.TETIKLE(1,SWTRIGGER);
flag&=DMARESET;
}
}
Burada "if((ADC_tampon[N-1]-ADC_tampon[0]>60) || (ADC_tampon[0]-ADC_tampon[N-1]>60))" bu şart sağlandığında program akışını değiştirmek istiyorum(yani if((flag&0x01)==ADCBITTI) bu if deyiminden çıkmak istiyorum) ve bunu goto ile yapmayı denediğimde main.cpp(121): error: #127: expected a statement derleme hatasını alıyorum.
Hatanın sebebi nedir ve nasıl düzeltebilirim?
else if deyiminin başına göndermek istediğiniz için bu hatayı alıyorsunuz.
else if yerine
şartı bir önceki cümleden ayırıp aşağıdaki gibi düzenlerseniz, goto sorun çıkarmaz.
benim tercihim Goto kullanmak yerine şart cümlesinden "break" ile çıkmak olurdu.
if ((flag&0x01) !=ADCBITTI && (flag&0x10)==DMABITTI) //Yeni ADC çevrimi alıncak
{
ADC1->CR2|=ADON;
analog1.TETIKLE(1,SWTRIGGER);
flag&=DMARESET;
}