Compré un STM32F4 Discovery bastante recientemente, y cuando desempaqué inicialmente el tablero, Lo conecté a mi Mac y el programa ya programado en la demostración funcionaba al 100%. Pude ver los LED parpadeantes y, al presionar el botón de usuario, el acelerómetro actuaría como un controlador de puntero del mouse, moviendo el puntero del mouse sobre la pantalla cuando incliné la placa.
Usé
Me tomó un par de semanas para configurar Eclipse CDT con la cadena de herramientas, es un proceso bastante tedioso. Descargué las muestras de ST.com, compilo la Demostración original de la página de la placa de descubrimiento STM32F4. La compilación ahora funciona bien, puedo compilar sin errores, pero cuando destello el tablero con el binario compilado, todo parece funcionar bien.
El indicador LED parpadea bien, y cuando presiono el botón de usuario, una vez más, la placa entra en el modo de acelerómetro. Las luces parpadean cuando la placa está inclinada, pero esta vez la interacción del puntero del mouse se detuvo, el puntero del mouse no se mueve en absoluto.
Intenté verificar si mi cable USB estaba mal conectado, probé un cable diferente, y también probé con otra máquina, pero no importó lo que intenté, no pude hacer que la placa funcionara como un dispositivo USB utilizando la demostración original.
¿Hay alguna forma en que pueda obtener los archivos .hex originales para flashear el tablero, para ver al menos si funciona de la manera que sale de la caja? Estoy adivinando si puedo preguntar si puedo restablecer el tablero al estándar de fábrica, con la demostración original. De esta manera puedo eliminar la posibilidad de que las clavijas USB de la placa se hayan fundido o que algo esté mal con mi cadena de herramientas.
Nueva información
Reuní mis agallas para intentar ejecutar la aplicación en modo de depuración nuevamente, establecer un punto de interrupción donde se está enviando el informe HID. El código llama a USBD_HID_SendReport, pero, según la imagen a continuación, el bloque if (pdev- > dev.device_status == USB_OTG_CONFIGURED) nunca se ejecuta, la función simplemente devuelve USBD_OK
Mirandopdev->dev.device_statusunpocomásprofundo,revelalosiguiente:
El estado del dispositivo es 1, que coincide con USB_OTG_DEFAULT, que es un valor de cuatro, definidos juntos entre:
#define USB_OTG_DEFAULT 1
#define USB_OTG_ADDRESSED 2
#define USB_OTG_CONFIGURED 3
#define USB_OTG_SUSPENDED 4
¿Esto significa algo para alguien? No soy un gran gurú aquí.