티스토리 뷰

전과 다르게 추가된 소스만 설명하도록 하겠습니다.



스위치를 추가해 보도록 하겠습니다.



스위치 관련 주소입니다




​mode00으로 설정하고 CNF를 01(floatin input)으로 설정

floating input일 경우에는 회로가 끊어진 상태이면 1이고 ground와 연결되어 있으면 0입니다.





스위치 값을 읽을 수 잇는 레지스터 입니다

쓰는것은 불가능하고 읽는것만 가능합니다





#define  RCC_APB2ENR    (*(volatile unsigned int*)0x40021018) 
#define GPIOB_BSRR    (*(volatile unsigned *)0x40010C10)
  #define  GPIOB_CRL    (*(volatile unsigned *)0x40010C00)


  #define  GPIOA_CRL    (*(volatile unsigned *)0x40010800)
   #define  GPIOA_IDR   (*(volatile unsigned *)0x40010808)
int main()
{

    //LED클럭인가
    RCC_APB2ENR &= 0xfffffff0;     //변경하려는 비트만 0으로 초기화
    RCC_APB2ENR |= 0x0000000C;  //portB,A 클럭인가 
 
    //LED아웃모드설정
    GPIOB_CRL &=  0xff0fffff;    //변경하려는 비트만 0으로 초기화
    GPIOB_CRL |=  0x00100000; //PB5 pushpull  // outputmode max speed 10mhz
    //스위치인설정
    GPIOA_CRL &=  0xff0fffff;    //변경하려는 비트만 0으로 초기화
    GPIOA_CRL |=  0x00400000;
    

    while(1)
  {
   if((0x00000020 & GPIOA_IDR) == 0x20)
   {
    GPIOB_BSRR |= 0x00000020;  // 켬  
    
   }
   else
   { 
    GPIOB_BSRR |= 0x00200000; //변경하려는 비트만 0으로 초기화    
   }
  }
}




버튼을  떼고있는 경우




버튼을 누른경우

댓글
공지사항
최근에 달린 댓글
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