Tôi vừa viết mã đầu tiên của mình trên STM32 - đèn LED nhấp nháy. Nó kết hợp một mảnh từ các nguồn khác nhau; vui lòng chỉ trích tôi để tôi có thể học cách viết mã phù hợp và không học thói quen ngu ngốc.
#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--;
}
}
Tại sao tôi phải bật đồng hồ GPIOE? Và sự khác biệt giữa 1UL << 21
và 1 << 21
?