티스토리 뷰

우선 각종 기능들을 사용하고 싶으면 기본적으로 클럭인가를 시켜줘야 사용이 가능합니다.

밑에 그림을 보면 APB2, APB1으로 접근하기 전에 RCC클럭인가를 해줘야 사용이 가능 하다는것을 알 수 있습니다


ARM은 주소값으로 접근해서 레지스터값을 바꾸는 방식을 사용합니다

앞으로 많이 보게 될 주요 레지스터 주소값입니다.





클럭 인가를 시켜주는 레지스터는RCC_APB2ENR입니다.




저희가 ON시켜주려는 LED는 PB5이므로 PORTB에 클럭을 ENABLE시켜 줍니다










클럭을 ENABLE시켜주고 다음으로 GPIO관련 레지스터 설정을 해보도록 하겠습니다.



GPIO관련 레지스터들 입니다.












#define  RCC_BPB2ENR    (*(volatile unsigned int*)0x40021018)  
#define GPIOB_ODR (*(volatile unsigned *)0x40010C0C)
#define  GPIOB_CRL (*(volatile unsigned *)0x40010C00)
int main()
{

    //클럭인가
    RCC_BPB2ENR &= 0xfffffff0;     //변경하려는 비트만 0으로 초기화
    RCC_BPB2ENR |= 0x00000008;  //portB 클럭인가 
    //Port output data
    GPIOB_ODR &= 0xffffff0f;     //변경하려는 비트만 0으로 초기화
    GPIOB_ODR |= 0x00000020; // pb5  Port output data
    //인아웃모드설정
    GPIOB_CRL &=  0xff0fffff;    //변경하려는 비트만 0으로 초기화
    GPIOB_CRL |=  0x00100000; //PB5 pushpull  // outputmode max speed 10mhz
}

댓글
공지사항
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31