[STM32] 임베디드 펌웨어 STM32 GPIO 쓰기
학습 목표
- LED 및 스위치 회로 설명
- CubeMX로 RCC 및 GPIO 입출력 설정
- CubeMX로 TrueSTUDIO 프로젝트 및 코드 생성
- TrueSTUDIO 자동생성된 프로젝트 및 코드 설명
- HAL드라이버 함수를 이용한 GPIO 출력 (LED출력)
- HAL드라이버 함수를 이용한 GPIO 입력 (스위치입력)
개념정리
개발 활용 보드
- 보드 이름
- NUCLEO -F767ZI
- 보드 CPU
- STM32F767ZI
제품 관련 링크
https://www.st.com/en/microcontrollers-microprocessors/stm32f7-series/products.html
Clock 설정 보기
HSI 설정
High Speed Internal 의 약자 내부 설정으로 된 클록이라 정확도가 낮다
따래서 외부에서 공급받아서 사용하도록
RCC 클록에서 HSE 클록을 바꿔줘야한다
-
RCC 란 칩 내부에 공급되는 클럭
-
참고 HSI : High Spead internal clock 내부 에서 생성되는 클럭이라 오차가 심하다 HSE : (High-Speed External )외부 클럭으로 오차가 덜하다
참고로 사용하는 보드는
여기에서 문서를 보면
이떄 PB0의 핀 값을 어떻게 확인하는지 궁금했다. 물론 안내 책자에 적혀있다
또는 기본 세팅 제공 CubeMX에도 적용되어 있었다.
예제 로 소스코드 확인해보기
/* 1단계 GPIO 클록 사용가능하게 만들기*/
__HAL_RCC_GPIOB_CLK_ENABLE();
/* 2단계 GPIO 기능 Push-Pull mode로 변경하기*/
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*3단계 토글 진행 */
/* -3- Toggle IO in an infinite loop */
while (1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
/* Insert delay 100 ms */
HAL_Delay(100);
}
//#입력 받아서 토글하는 경우
if( HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == GPIO_PIN_SET)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
}
특정 함수 자세히 알고 싶으면 ctrl +Space
기타
참고로 현재
// MX_ETH_Init(); 해당 주석에서 오류가 있어 블럭해 놓은 상태입니다.
댓글남기기