본문 바로가기

쓰기

ARM Cortex-M 기초 알아보기
2015.11.10 11:06

ARM Cortex-M 기초 알아보기 - 4. GPIO 입력 제어하기

조회 수 3822
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 이번에는 스위치를 통해 GPIO의 입력을 받아 LED를 켜고 끄는 예제를 다루어 보겠습니다. STM32CubeMX 설정은 지난번과 같지만 스위치 입력을 받기 위해 PA4 핀을 GPIO_Input으로 설정합니다. 핀 라벨은 GPIO_SW라고 붙였습니다. STM32CubeMX의 Configuration 탭에서 MCU의 내부 풀업 또는 풀다운을 선택할 수 있습니다. 저는 스위치를 GND에 연결하고, 외부 풀업을 달지 않기 위해 내부 풀업을 사용하도록 설정하였습니다. 설정 완료 후 하여 Generate Code하여 µVision 프로젝트를 생성합니다.


`Pinout_with_SW.jpg

스위치 입력을 받아 LED 제어를 위한 GPIO 설정


 스위치를 눌렀을 때 LED가 켜지고, 스위치를 열었을 때 LED가 꺼지도록 프로그램을 작성해 보겠습니다. 우선 if문을 이용하여 GPIO의 상태를 받습니다. GPIO의 상태를 반환하는 HAL driver 함수는 HAL_GPIO_ReadPin()입니다. 파라미터로는 해당 GPIO 포트와 핀을 각각 받습니다. 스위치 핀의 라벨을 이용하면 HAL_GPIO_ReadPin(GPIO_SW_GPIO_Port, GPIO_SW_Pin)이 됩니다. 이를 통해 if을 작성하고, 저번에 만들었던 LED 점등 코드를 결합하면 아래와 같은 간단한 코드를 작성할 수 있습니다.


if ( HAL_GPIO_ReadPin(GPIO_SW_GPIO_Port, GPIO_SW_Pin) == 0)

 HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET);

else

 HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_RESET);


이를 while문 안에 넣으시면 됩니다. 다 되었다면 프로그램을 컴파일하고 다운로드합니다. GPIO_SW 핀과 GND 사이에 택트 스위치를 연결한 뒤, 스위치를 눌렀다 떼 보면서 LED가 켜졌다 꺼졌다 하는 것을 확인할 수 있습니다.


`off.jpg

스위치를 열었을 때



`on.jpg

스위치를 눌렀을 때


 참 쉽죠? 소리가 절로 나올 정도입니다. 다음번에는 동일한 하드웨어 구성을 가지고 외부 인터럽트를 이용해 LED를 제어하도록 해 보겠습니다.


  1. ARM Cortex-M 기초 알아보기 - 6. PWM 사용하기

    이번 글에서는 PWM을 이용하여 모터를 구동시켜보도록 하겠습니다. 먼저 STM32CubeMX를 이용하여 설정을 진행합니다. PWM을 사용하기 위해 타이머 TIM1의 Clock Source를 Internal Clock으로 설정해 줍니다. 그 후 사용하고 싶은 채널을 PWM Generation탭으로...
    Date2016.03.25 CategoryARM Cortex-M 기초 알아보기 By최호선 Views3874
    Read More
  2. ARM Cortex-M 기초 알아보기 - 5. ADC 사용하기

    이번에는 ADC와 관련하여 STM32F407VGT6 Discovery board에 연결된 Potentiometer의 ADC 값을 Debug Viewer를 통해 실시간으로 받아보도록 하겠습니다. (프로젝트 진행자가 변경된 이유로 인해 MCU가 Discovery board로 변경되었습니다.) STM32CubeMX의 Confi...
    Date2016.01.28 CategoryARM Cortex-M 기초 알아보기 By최호선 Views4348
    Read More
  3. ARM Cortex-M 기초 알아보기 - 4. GPIO 입력 제어하기

    이번에는 스위치를 통해 GPIO의 입력을 받아 LED를 켜고 끄는 예제를 다루어 보겠습니다. STM32CubeMX 설정은 지난번과 같지만 스위치 입력을 받기 위해 PA4 핀을 GPIO_Input으로 설정합니다. 핀 라벨은 GPIO_SW라고 붙였습니다. STM32CubeMX의 Configuration...
    Date2015.11.10 CategoryARM Cortex-M 기초 알아보기 By박정현 Views3822
    Read More
  4. ARM Cortex-M 기초 알아보기 - 3. GPIO 출력 제어하기

    이번에는 GPIO의 디지털 출력 제어를 통해 MCU계의 Hello World!인 LED 깜박이기를 해 보도록 하겠습니다. 내용 수준은 기존에 8bit MCU 사용이 익숙하신 분들에 맞춰 진행할 것입니다. 사용할 MCU는 Cortex-M0의 한 종류인 STM32F030F4P6입니다. STM32F030F4...
    Date2015.11.08 CategoryARM Cortex-M 기초 알아보기 By박정현 Views4081
    Read More
  5. ARM Cortex-M 기초 알아보기 - 2. 개발 환경 구축

    Cortex-M을 지원하는 IDE는 여러 종류가 있습니다. 그 중에서 저는 ARM에서 공식적으로 지원하는 Keil µVision IDE를 사용하려고 합니다. Keil µVision은 말 그대로 ARM에서 공식적으로 지원하기 때문입니다. 코어 설계사에서 직접 제공하는 IDE가 사후 지원...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views6043
    Read More
  6. ARM Cortex-M 기초 알아보기 - 1. 개요

    자신이 원하는 대로 움직이는 기계나 회로 등을 만들 때는 MCU 만한 것이 없습니다. 국내에서는 2000년대 들어 8051, PIC, AVR 등을 통해 8bit MCU들이 퍼지기 시작하였고, 2010년 이후 Arduino의 등장을 통해 기존의 8bit MCU를 쉽게 사용할 수 없던 일반인...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views6252
    Read More
  7. 2013-07-23 소모성 데시칸트 제습기

    2013년 여름에 시작한 프로젝트입니다. 정확한 시작일이 기억나지 않아 가지고 있는 자료 중에서 가장 오래된 것의 날짜를 선택하였습니다. 2013년 여름은 제가 지금 살고 있는 집으로 이사를 온 때인데, 집 주변이 광활한 논으로 둘러싸여 있습니다. 그 때문...
    Date2015.02.08 Category화학식 제습장치 By박정현 Views1425
    Read More
Board Pagination Prev 1 Next
/ 1