안녕하세요. 오늘은 NUCLEO-F103RB 보드로 HAL라이브러리를 사용하여 GPIO OUTPUT를 제어해보겠습니다.
1편에서 사용방법을 간단하게 확인해봤었고 2편에서는 자세히 알아보겠습니다
사용 보드: NUCLEO-F103RB
개발환경 : STM32CubeIDE
1편에서 설정했던 PA5를 GPIO_Output으로 설정했었고 PA5의 컨피규레이션 옵션을 알아보겠습니다
*GPIO output level
GPIO의 초기상태를 Low로 할지 High로 할지 선택하는 옵션입니다. 선택하는 옵션에 따라서 아래의 코드가 변합니다
MX_GPIO_Init함수는 처음 프로젝트를 만들면 호출하는 함수이고 GPIO를 세팅하는 코드들이 모여있는 함수입니다.
*GPIO mode
GPIO의 모드를 Push pull/Open drain으로 설정하는 옵션입니다.
Push pull은 출력의 상태가 0이면 LOW, 1이면 HIGH를 내보내는 옵션입니다. (P-mos, N-mos 사용)
Open drain은 외부의 전원을 사용할때 사용하는 옵션입니다. P-mos는 없고 N-mos만 사용합니다.
일반적으로 mcu의 전원으로 HIGH/LOW를 제어하는 상황이라면 Push pull로 설정하면 됩니다
*GPIO Pull-up/Pull-down
Output에서는Pull-up/Pull-down이 비활성화가 됩니다
*Maximum output speed
GPIO 속도를 정할 수 있습니다. HIGH =>LOW로 갈때, LOW=>HIGH로 갈때 속도입니다.
HIGH-> LOW, LOW->HIGH로갈때 빨강색처럼 직각으로 변하지않고 주황처럼 변합니다. 상태가 변할때 경사도가 있는데 이러한 경사도를 Slew Rate라고 부릅니다 ( Slew Rate = v/t)
빠른 GPIO스위칭은 전력 소비를 증가시킬 수 있습니다. 저전력 제품에는 느린 GPIO가 효율적입니다.
빠른 GPIO스위칭은 노이즈 및 안정성에 문제가 있을 수 있습니다
LOW/MEDIUM/HIGH 설정이 가능합니다.
/** @defgroup GPIO_speed_define GPIO speed define
* @brief GPIO Output Maximum frequency
* @{
*/
#define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed */
#define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed */
#define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed */
LOW: 0x2 (MAX 2Mhz)
MEDIUM : 0x1 ( MAX 10Mhz)
HIGH : 0x3 (MAX 50Mhz)
3편에서는 GPIO설정할때 사용하는 레지스터와 코드를 알아보겠습니다
'STM32 > 이론' 카테고리의 다른 글
STM32 외부인터럽트 알아보기 (0) | 2024.11.09 |
---|---|
STM32 PWM TIMER 알아보기 (0) | 2023.12.31 |
STM32 GPIO제어하기 INPUT MODE (1) | 2023.11.18 |
STM32 GPIO제어하기OUTPUT_3편(MX_GPIO_Init함수 분석) (1) | 2023.10.22 |
STM32 GPIO제어하기 OTUPUT_1편(LED깜빡이기) (0) | 2023.10.02 |