Arm cortex m3 interrup problemi !!!

Başlatan syndroms, 02 Ocak 2011, 22:32:54

syndroms

Stm32F103 serisi mikroişlemcili bir board üzerinde uygulama geliştirmeye çalışıyorum..
Bir türlü PortB 0. pin EXTI interrupttını aktifleştirip kullanamadım..
Bu konuda tecrübeli olan arkaşlar yardımcı olabilirler mi acaba ?

ahmet2004

#1
Keil Optimizasyon ayarları interrupt uygulamalarında dikkat edilmesi gereken kısımlardan.

Optimizasyon seviyesini 0 'a al düzelir.Tekrardan derle.Optimize seviyesi butür sorunlara yol açıyor genelde.



Çalışma görüntüsü:

syndroms

En yakın zamanda deneyip size geri dönücem çok teşekkürler...

CLR

Alıntı yapılan: syndroms - 02 Ocak 2011, 22:32:54
Stm32F103 serisi mikroişlemcili bir board üzerinde uygulama geliştirmeye çalışıyorum..
Bir türlü PortB 0. pin EXTI interrupttını aktifleştirip kullanamadım..
Bu konuda tecrübeli olan arkaşlar yardımcı olabilirler mi acaba ?


Merhaba aşağıdaki kod çalışıyor ama bazı değişiklikler yapman lazım çünkü benim kütüphaneme göre çalışıyor.
gpiob_crl.bits.MODE0 ,  GPIOB portonun CRL registerinin Mode0 adlı bitlerine yazmak ve okumak için kullanılır. 
Sen bu bitlere aşağıdaki gibi yazarak yani

gpiob_crl.bits.MODE0=0;   // yerine
GPIOB->CRL&=(u32)~3;   // yazarak

exti_imr.bits.MR0=1;  // yerine
EXTI->IMR|=(u32)1;   // yazarak

Bu şekilde yapabilirsin  veya yapamazsanda simulatörde kontrol edersin, bu bitler ayarlanmalı.


void
ExtiPB0_Init(void){
    gpiob_crl.bits.MODE0=0;	    // pull-up/down modu
    gpiob_crl.bits.CNF0=1;             // float

    gpiob_odr.bits.ODR0=1;              // pull-up

    afio_exticr0.bits.EXTI0=1;         // PB11
    exti_imr.bits.MR0=1;
    exti_emr.bits.MR0=1;
    exti_ftsr.bits.TR0=1;                // duşen kenar ise
//  exti_rtsr.bits.TR0=1;                // yükselen kenar
    nvic_ipr1.bits.PRI_6=0x30;     // priority yi ayarlıyoruz,  4. öncelikli 
    nvic_iser0.bits.SETENA6=1;
}

Knowledge and Experience are Power