¿Es normal bloquear el STM32F0 con ciertas configuraciones de pin de software?

1

He transmitido el siguiente código a mi nueva y brillante placa STM32F0DISCOVERY. Los comentarios explican lo que pensé que haría.

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    // Place PIN 4 (DAC out) into analog mode
GPIOA->MODER=0b11<<8;

RCC_AHBPeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
// Default DAC settings are fine.
DAC->CR = 0;
DAC->CR = 1;

Desafortunadamente, después de actualizar este código, openocd ya no puede hablar con la placa ni reconocer que es un stm32f0 (pero aún puede conectarse al ST / LINK integrado si se mantiene presionado el botón de reinicio). Pensé que podría ser capaz de mantener BOOT0 alto y arrancar desde el cargador de arranque en serie interno, pero eso tampoco parece permitir que SWD parpadee. El resto del programa corto solo utiliza GPIO B y C y el temporizador.

¿Debo esperar que el código bloquee el chip o simplemente tuve mala suerte?

    
pregunta joeforker

2 respuestas

3

Por la razón que sea, openocd ya no podía hablar con el dispositivo después de actualizar el código. Afortunadamente, la herramienta oficial de Windows ST / LINK pudo borrar el chip con la opción "conectar bajo reinicio".

    
respondido por el joeforker
1

Solo para otros lectores que no tienen una placa STM32F * DISCOVERY: Todos los STM32 tienen cargadores de arranque que se pueden usar para programar el chip también. Tendrá que configurar el (los) pin (s) BOOT para iniciar desde la "Memoria del sistema" y conectar el periférico en serie apropiado (Ver: "AN2606 STM32 modo de inicio de la memoria del microcontrolador" enlace ). El gestor de arranque funcionará incluso cuando las patillas JTAG o SWD se sobrescriban en el software o el reloj no esté bien configurado, lo que evita el arranque normal. Una de estas herramientas para flashear que se ejecuta en Linux sería enlace .

    
respondido por el mox

Lea otras preguntas en las etiquetas