STM32F303VC I2C solo funciona en modo de depuración [cerrado]

0

Estoy conectando HDC1000 con STM32F303VC. Mi código I2C solo funciona en modo de depuración. Otro código de Blinky y UART funciona correctamente. La escritura funciona perfectamente, pero el código de función de lectura está atascado aquí:

while(I2C_GetFlagStatus(HDC_I2C, I2C_ISR_RXNE) != SET)
{
    if((HDC_Timeout--) == 0) 
        continue; 
    return HDC_TIMEOUT_UserCallback();
}

He seleccionado la CPU correcta. Estoy usando Coocox IDE. Por favor encuentre mi código y aprecie la ayuda. 10Kohms pull ups conectados en ambas líneas SDA y SCL.

    
pregunta Kumar Naveen

1 respuesta

2

Ese bucle simplemente no funcionará. El HDC_TIMEOUT_UserCallback() se llama en la primera iteración si HDC_Timeout no es cero, y en la segunda iteración es cero. Quien haya creado este nunca lo probó en hardware real.

Puede funcionar en la depuración de un solo paso porque la marca I2C_ISR_RXNE se establecerá antes este código se ejecuta, y la condición while() ya es falsa.

Tenga en cuenta que no solo se invierte la condición en if () , sino que también no hay un retraso significativo entre los ciclos de bucle.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas