STM32L CubeMX 공부하기
Cube MX 실행하여 File -> New Project 선택
Board Selector 선택 후, 좌측 상단 검색창에 Nucleo-l073rz 라고 검색하면 우측에 보드가 선택 됨
선택 된 보드를 더블클릭하면 아래 창이 뜸. Yes를 누르면 Default setting으로 셋업 됨
아래 그림과 같은 화면이 나옴
목표 : GPIO 제어 - 스위치를 누를 때마다 LED 동작시키기
Clock configuration에서 HCLK 란에 32를 입력한 후, 엔터를 누르면 SYSCLK을 포함한 다른 CLK들이 32MHz로 셋팅 됨
변경 전
변경 후
ST.com에서 nucleo-l073rz 보드를 검색하면, 회로도를 다운 받을 수 있습니다.
주소는 아래와 같습니다.
https://www.st.com/resource/en/schematic_pack/nucleo_64pins_sch.zip
회로도를 보면 아래와 같은데, Nucleo 073rz보드에선 SB42자리에 0옴, SB29자리는 Open되어 있으므로, LD2 LED는 PA5(PORTA.5) I/O출력으로 제어할 수 있음
Default setup으로 프로젝트를 열었기 때문에, PA5가 이미 GPIO_Output으로 설정되어 있음. 그래서 추가로 건드릴 건 없음
CubeMX 메인 화면 -> System view -> GPIO를 선택하면 아래와 같은 창이 뜸
PA5를 선택하면 아래와 같이 설정할 수 있는 창이 뜸
GPIO output level : 초기상태에 출력을 high로 내보낼지, low로 내보낼지 결정
GPIO mode :
Output Push Pull : High, Low 둘다 출력으로 내보낼 수 있음
Output Open drain : Low로만 출력 내보낼 수 있고, High 상태에서는 Floating 됨
GPIO Pull-up/Pull-down :
No pull-up and no pull-down : pull up, pull down 저항 없이 동작 함
Pull-up : MCU내부에서 풀업저항이 걸림
Pull-down : MCU 내부에서 풀다운 저항이 걸림
Maximum ouput speed : GPIO pin의 동작 속도를 셋팅하는 부분입니다. Low, medium, high, very high 4개중에 선택할 수 있습니다. 속도가 얼마나 나오는지는 데이터시트를 보면 아래와 같이 알 수 있어요.
User Label : 해당 port를 define해주는 부분이에요. PA5를 LD2로 Define해서 소스코드가 생성 됨
이번엔 회로도에서 Input SW를 찾아보면 아래와 같이 PC13(POARC.13)에 연결된 것을 알 수 있
CubeMX에서 PC13을 외부인터럽트로 설정하여, 스위치 입력을 인식할 수 있도록 셋업해야 함.
마찬가지로 Default setup으로 프로젝트를 만들었기 때문에 이미 설정되어 있음
초기화면에서 System view -> GPIO -> PC13을 선택하면 아래와 같은 화면이 나옴
GPIO Input setting 하는 화면인데, 설명하면 아래와 같음
GPIO mode
External Interrupt Mode with Rising edge trigger detection : 해당 핀이 Low -> High로 변할 때, 인터럽트 발생시킨다는 의미
External Interrupt Mode with Falling edge trigger detection : 해당 핀이 High -> Low로 변할 때, 인터럽트 발생시킨다는 의미
External Interrupt Mode with Rising/Falling edge trigger detection : 해당 핀이 Low -> High, High->Low 변하는 두 조건에서 모두 인터럽트가 발생한다는 의미
External Event Mode with Rising edge trigger detection : 해당핀이 Low -> High로 변할 때, Event 발생 함
External Event Mode with Falling edge trigger detection : 해당핀이 High -> Low로 변할 때, Event 발생 함
External Event Mode with Rising/Falling edge trigger detection : 해당 핀이 Low -> High, High->Low 변하는 두 조건에서 모두 이벤트가 발생한다는 의미
Event랑 Interrupt 차이
GPIO Pull-up/Pull-down :
No pull-up and no pull-down : pull up, pull down 저항 없이 동작 함
Pull-up : MCU내부에서 풀업저항이 걸림
Pull-down : MCU 내부에서 풀다운 저항이 걸림
User Label : 해당 port를 define해주는 부분. PC13을 Blue PushButton으로 Define해서 소스코드가 생성
그 뒤 Project Manager 탭을 누르면 아래와 같이 뜨는데 필요한 항목을 입력하면 됨
다른부분은 어려운거 없고, Toolchain / IDE는 그냥 STM32CubeIDE로 하면, CubeMX설치하면서 같이 깔린 Truestudio로 열 수 있음
그 뒤 우측 상단에 GENERATE CODE 버튼을 누르고 기다리면 Project 생성이 완료됬고, project를 열 것인지 물어보는 팝업창이 뜸
Open project를 선택하면 아래와 같이 workspace를 선택하라는 창이 뜸
Comments
Post a Comment