STM32F103 input data register

Gast #2978298
Lesenswert?

Hallo!

Ich habe folgendes Problem mit dem STM32F103: ein CycloneII generiert 
testweise ein 1Hz Signal (soll später ein "read data"-Signal zur 
Kommuniktion werden; will kein "kompliziertes" SPI implementieren).
Bei jeder High-Low Flanke von "data ready" will ich zum Test auf dem MC 
ein Zeichen über uart ausgeben.
"data ready" ist auf PB0
Mit dem externen Interrupt (EXTI + ISR) klappt das einwandfrei, wenn ich 
aber folgendes versuche:

while(1){
    while(GPIOB->IDR & (1<<0)); //wait while PB0 high

    uart_send('-');

    while(!(GPIOB->IDR & (1<<0)));//wait while PB0 low
}

bekomme ich nur sporadisch eine Ausgabe über Uart.

GPIOB->IDR ist 32 bit wobei die unteren 16 bit PB0-PB15 sind, die oberen 
16 sind reserved "0x0000".
Clock für Port B ist auch an (72Mhz).

Muss ich da vielleicht noch irgendetwas casten bzw. könnt ihr euch 
erklären, warum das nicht funktioniert?

Auf einem ATmega328 funktioniert es mit polling jedenfalls, ich bin aber 
neu auf dem STM32 und kenne ihn noch nicht so genau.

Ich hoffe, jemand kann mir erklären, was da seltsames passiert.

LG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren