Acabo de escribir mi primer código en STM32: LED parpadeante. Combina fragmentos de diferentes fuentes; por favor, critícame para que pueda aprender cómo escribir el código correcto y no aprender hábitos estúpidos.
#include "stm32f30x.h"
void SysTick_Handler(void);
void TimingDelay_Decrement(void);
void Delay(__IO uint32_t nTime);
static __IO uint32_t TimingDelay;
int main(void)
{
RCC->AHBENR |= ((1UL << 21) ); // Enable GPIOE clock??
GPIOE->MODER |= (1 << 2*8); // PIN 9 as output
//GPIOE->BSRR = 1 << 9; // LED ON
//GPIOE->BSRR = 1 << 9 << 16; // LED OFF
//GPIOE->BRR = 1 << 9; // LED OFF
if (SysTick_Config(SystemCoreClock / 1000))
{
/* Capture error */
while (1);
}
while(1)
{
GPIOE->BSRR = 1 << 8;
Delay(50);
GPIOE->BRR = 1 << 8;
Delay(50);
}
}
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
¿Por qué tengo que habilitar el reloj GPIOE? ¿Y cuál es la diferencia entre 1UL << 21
y 1 << 21
?