El descubrimiento de STM32F no ejecuta el código después de programar con éxito

0

Tengo una placa de descubrimiento stm32f051R8T6, y compilé un simple código de LED parpadeante para activar los LED en la propia placa. El código se construye con éxito y parpadea la MCU, pero la MCU no ejecuta el código, lo reinicié y traté de programarlo con un código diferente que funcionó en el pasado, pero aún sin suerte, estoy trabajando en Coocox.

Una vez que tengo el archivo hexadecimal, flasheo la MCU con la unidad STM32 st-link o Coocox y ambos dicen que parpadea con éxito

Creo que la MCU se mantiene bajo reinicio pero no estoy seguro y no sé cómo sacarlo.

El enlace al manual está aquí: enlace

El código está debajo

#include "stm32f0xx.h"

void delay(const int d);

int main(void)
{
  // GPIOC Periph clock enable
  RCC->AHBENR |= RCC_AHBENR_GPIOCEN;

  // PC8 and PC9 in output mode
  GPIOC->MODER |= (GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0);

  // Push pull mode selected
  GPIOC->OTYPER &= ~(GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9);

  // Maximum speed setting
  GPIOC->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9);

  // Pull-up and pull-down resistors disabled
  GPIOC->PUPDR &= ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9);

  while(1)
  {
    // Set PC9
    GPIOC->BSRR = GPIO_BSRR_BS_9;
    // Reset PC8
    GPIOC->BSRR = GPIO_BSRR_BR_8;
    // Delay ~ 1 sec.
    delay(SystemCoreClock/8);

    // Reset PC9
    GPIOC->BSRR = GPIO_BSRR_BR_9;
    // Set PC8
    GPIOC->BSRR = GPIO_BSRR_BS_8;
    // Delay ~ 1 sec.
    delay(SystemCoreClock/8);
  }
}

void delay(const int d)
{
  volatile int i;

  for(i=d; i>0; i--){ ; }

  return;
}
    
pregunta user150963

1 respuesta

1

El problema residía en los archivos de la biblioteca Coocox, lo que hice fue desinstalar el programa, reinstalarlo y funcionó correctamente.

    
respondido por el user150963

Lea otras preguntas en las etiquetas