공부방/ARM_STM32WS 이규정교수님_필기

LL_GPIO

맘스터치보단파파이스 2024. 4. 5. 09:12

DATA SHEET p.53/149

//GPIOA CLOCK, RCC

//RCC CONTROL REGISTER

//RCC AHB1 CLOCK ENABLE, GPIOA CLOCK ENABLE

//GPIO A5, OUTPUT, PUSH PUPP, NO PULL up/PULL DOWN, LOW SPEED

 

RM p.93/844
Reference Manual p.163/844
DATASHEET p.54/149

BASE ADDRESS + OFFSET

#define AHB1_BASE      0x40020000

#define RCC_BASE      (AHB1_BASE + 0x3800)
#define RCC_CR         ((volatile unsigned int *)(RCC_BASE+0x00))
#define RCC_AHB1ENR      ((volatile unsigned int *)(RCC_BASE+0x30))


#define GPIOA_BASE      (AHB1_BASE + 0x0000)
#define GPIOB_BASE      (AHB1_BASE + 0x0400)
#define GPIOC_BASE      (AHB1_BASE + 0x0800)

 

#define GPIOA         ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB         ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC         ((GPIO_TypeDef *) GPIOC_BASE)

 

//#define GPIOA_MODER      ((unsigned int *)(GPIOA_BASE+0x00))
//#define GPIOA_OTYPER   ((unsigned int *)(GPIOA_BASE+0x04))
//#define GPIOA_OSPEEDR   ((unsigned int *)(GPIOA_BASE+0x08))
//#define GPIOA_PUPDR      ((unsigned int *)(GPIOA_BASE+0x0C))
//#define GPIOA_IDR      ((unsigned int *)(GPIOA_BASE+0x10))
//#define GPIOA_ODR      ((unsigned int *)(GPIOA_BASE+0x14))
//#define GPIOA_BSRR      ((unsigned int *)(GPIOA_BASE+0x18))
//#define GPIOA_ICRR      ((unsigned int *)(GPIOA_BASE+0x1C))
//#define GPIOA_AFRL      ((unsigned int *)(GPIOA_BASE+0x20))
//#define GPIOA_AFRH      ((unsigned int *)(GPIOA_BASE+0x24))

RM p.102/844

RCC : 0x4002 3800 + 0x00

   *RCC_CR |= (1<<0);   //0x40023800주소에 0번 bit를 1set
   *RCC_CR &= ~(1<<16);   //0x40023800주소에 16번 bit를 0set

 

//RCC AHB1 CLOCK ENABLE, GPIOA CLOCK ENABLE

RM p.117/844

RCC : 0x4002 3800 + 0x30

   *RCC_AHB1ENR |= (1<<0);   // GPIOA clock enable

   *RCC_AHB1ENR |= (1<<2);   // GPIOC clock enable

 

//GPIO A5, OUTPUT, PUSH PUPP, NO PULL up/PULL DOWN, LOW SPEED

rm p.157/844

   GPIOA->MODER |= (1<<10);

   GPIOA->OSPEEDR |= (1<<10) | (1<<11);