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;
}