이번 과목에서는 nucleo 보드에 대해 다룬다.
먼저 사용하는 보드는 nucleo f411RE라는 보드이며 stm32cubeide라는 툴을 이용하여 해당 보드를 제어하게 된다.
먼저 nucleo f411RE 보드의 회로도를 통해 간단하게 보드를 확인해보면
보드에 있는 파란색 스위치는 PC13번 핀에 풀업 저항으로 연결되어 있는 것을 확인할 수 있으며
LD3 LED는 보드에 전원이 공급되면 On이 되는 것을 회로도로 추측할 수 있고
Crystal인 X3는 회로는 구성되어 있으나 Crystal이 연결되지 않았다라는 것을 확인할 수 있다(N/A)
사용자가 테스트를 하기위해 있는 LD2 LED는 포트 A에 5번핀에 연결되어 있는것을 확인할 수 있다.
그러면 STM32Cubeide 툴을 이용하여 보드의 레지스터를 변경하여 보드에 내장된 LED를 켰다 꺼보자.
먼저 초기화면을 세팅해보자
Stm32cubeide를 실행하고 New -> STM32 Project를 선택하면
이러한 화면이 나타난다 여기세어 Board Selector를 클릭 후
Commercial Part Number 창에 사용하고자 하는 보드 종류를 넣으면(나같은 경우에는 Nucelo-f411RE)
아래 board list에서 사용하고자 하는 보드가 표시 되고 클릭 후 Finish를 눌려준다
Finish 를 누르면 위와 같은 창이 나오게 되고 project name을 설정하고 finish를 눌려주면 프로젝트가 생성된다.
위의 과정을 이상없이 따라했다면 위의 화면이 나오게 된다. 이 화면은 나중에 다양한 Pin들이나 기능, Clock 조절을 위한 화면이다. 좌측 화면을 보면 project explorer에 core -> src-> main.c에서 코드를 작성하게 된다.
여기에 코드를 작성하면 된다.
간단하게 LED(LD2)를 1초마다 ON, OFF 하는 코드를 작성해보자
STM32Cubeide에서 제공하는 HAL library를 사용하여 작성한 코드를 살펴보면 HAL_GPIO_WritePin라는 함수를 통해 LD2를 켰다가 끄고 HAL_Delay라는 함수를 통해 delay를 걸어 LED가 1초 간격으로 켰다 꺼지는 동작을 수행하는 코드를 작성했다.
HAL_GPIO_WritePin이라는 함수를 확인해보면
3개의 값을 매개변수로 받고 pinstate 값이 GPIO_PIN_RESET(0)과 값이 다르면 GPIOA 구조체 안에 BSRR이라는 레지스터에 매개변수 값 GPIO_Pin 값을 넣게 되는 동작을 수행하게 된다.
BSRR이 어떤 레지스터인지 확인해보면
풀네임은 GPIO port bit set/reset register 인것을 확인 할 수 있고 해당 레지스터는 쓰기 전용 레지스터이며 레지스터 0~15번 bit까지는 0을 넣으면 어떤 동작도 수행하지 않으며 1을 넣게되면 ODRx 레지스터의 bit를 set으로 설정하게되며 16~31번 bit까지는 반대로 수행하는 레지스터이다 그럼 ODRx 레지스터를 확인해보면
ODR레지스터의 풀네임은 GPIO port output data register인 것을 확인할 수 있으며 해당 레지스터는 0부터 15번 까지의 bit를 읽거나 쓸 수 있는 레지스터이다 그리고 0~15번 bit를 1로 설정하면 해당 포트의 핀이 On 되며 0으로 설정하면 해당 포트의 핀은 Off되게 조절하는 레지스터이다.
이러한 레지스터의 값을 수정하면서 보드의 동작을 조절하게 되는 과목이다.
그럼 다시 코드로 돌아가서
코드를 리뷰를 해보면 먼저 LED(LD2)가 켜진 상태로 1초 유지했다가 다시 LED가 꺼진 상태를 1초간 유지하게 되는 코드이며 해당 동작을 계속해서 수행하는 코드이다 동영상으로 동작을 확인해보면
초록색 LED(LD2)가 잘 깜빡거리는 것을 확인할 수 있다.
'[Harman] 임베디드 시스템을 위한 sw 구조설계' 카테고리의 다른 글
[부산 인력개발원 Harman 과정]임베디드 시스템을 위한 sw 구조설계 6 (0) | 2023.05.03 |
---|---|
[부산 인력개발원 Harman 과정]임베디드 시스템을 위한 sw 구조설계 5 (0) | 2023.05.01 |
[부산 인력개발원 Harman 과정]임베디드 시스템을 위한 sw 구조설계 4 (0) | 2023.04.30 |
[부산 인력개발원 Harman 과정]임베디드 시스템을 위한 sw 구조설계 3 (0) | 2023.04.30 |
[부산 인력개발원 Harman 과정]임베디드 시스템을 위한 sw 구조설계 2 (0) | 2023.04.30 |