Ich habe gerade meinen ersten Code auf STM32 geschrieben - blinkende LED. Es kombiniert Fragmente aus verschiedenen Quellen; Bitte kritisieren Sie mich, damit ich lernen kann, wie man richtigen Code schreibt und keine dummen Gewohnheiten lernt.
#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--;
}
}
Warum muss ich die GPIOE-Uhr aktivieren? Und was ist der Unterschied zwischen 1UL << 21
und 1 << 21
?