오늘 사용할 부품은 아래 부품들이다.
8 Unit LED는 LED BAR라고도 부르며 자세한 내용은
거기에 같이 연결되어 있는부품은 array 저항으로 9pin이다. 부품을 보다보면 끝에 점이 있을건데 그 부분을 LED BAR의 핀과 어긋나게 꽂아주고 그럼 나머지 8개는 다 맞겠죠? 점 부분을 GND에 연결해준다.
Array 저항은 다음 참고
led array 0->stm32의 pd0 ~ led array 7->stm32의 pd7 점퍼선으로 연결해주자(핀맵 참고)
회로 구성이 끝났다면 CUBE IDE를 할 차례이다. 새 프로젝트를 다시 생성하면 세팅이 오래걸리기 때문에
지난 프로젝트가 저장되어있는 위치로 이동한다.
지난번 프로젝트를 통채로 복사하고 붙여넣은 후 이름을 바꿔준다.
02.STM32_LED_BAR라고 하겠다. 폴더 이름을 바꾸었다면 폴더 내부로 들어가서 Debug폴더와 Debug파일하나를 삭제해주고 기존 프로젝트 이름으로 되어있던 파일 2개의 이름을 새 프로젝트의 이름으로 바꿔주고
프로젝트 더블클릭하지말고 메모장으로 열어준 후 내부에 프로젝트 이름을 새 프로젝트 이름으로 수정한 후 저장해주고 더블클릭으로 CUBE IDE를 열어주면 정상적으로 열렸다고 나온다.
HAL (HW Access Library) 말그대로 Hw에 액세스하기 쉽도록 지원해주는 라이브러리이다.
관련된 함수들은 HAL_Driver안에 들어있다고 보면 되겠다.
이렇게 나오면 ioc로 들어가겠다. input output configuration으로 입출력 환경설정이라고 생각하면 되겠다.
해당 포트 좌클릭 후 MCU에서 출력을 해줘야 LED가 켜질테니 GPIO OUTPUT으로 세팅
( led array 0->stm32의 pd0 ~ led array 7->stm32의 pd7 )
세팅이 완료되었으면 ioc 파일 저장하면 code generate를 하겠다고 한다. ok 눌러주면 main.c에 아래의 pin들에 대한 code가 추가되었음을 확인할 수 있다.
맞는지 확인하고 main.c의 main문 내부 while문에 아래 코드 작성.
돌리기 전에 컴파일러가 헷갈리지 않도록 1번 프로젝트는 close 해주자.
STM32 USB 연결 후 코드 디버깅 후 실행시키면 LED BAR의 불이 켜진 것을 확인 할 수 있다.
여기까지 되었다면 Inc 우클릭해서 파일추가 led.h 생성 src 우클릭해서 파일추가 led.c 생성
반드시 저 주석들 사이에 넣어줘야한다. 그렇지 않으면 다음에 ioc 파일 세팅 후 저장할때 날라갈 수 있다.
마찬가지로 한글 주석도 main문에서는 ioc 코드생성할때 깨진다. 영어로 달아야한다!
main의 while문 위에 user code2에 led_main();을 친 후 디버깅 및 실행 진행하면 정상적으로 동작하는 것을 확인할 수 있다.
그러면 더 간략화 할 순 없을까?
이렇게 하면 코드를 간략화 할 수 있다.
원리는 8bit led 이고 PORT D의 0부터 7까지 연결을 해줬기 때문에
모든 port(PD7~PD0)을 2진수로 표현한 값 1111 1111을 16진수로 적어준게 0xff 이고 이말은 즉 모든 LED가 대상이며, 그 뒤에 1과 0으로 다 1로 만들것인지 0으로 만들것인지를 결정하면 된다.
1로만들면 on 0으로 만들면 off가 되겠다.
'Firmware Programming' 카테고리의 다른 글
[STM32F429ZI] Block Diagram (0) | 2023.10.25 |
---|---|
[STM32F429ZI] 타이머의 종류 (0) | 2023.10.24 |
[STM32F429ZI] GPIO를 통한 8Unit-LED 제어(2) (0) | 2023.10.20 |
[STM32F429ZI] GPIO를 통한 LED 제어 (0) | 2023.10.19 |
[STM32F429ZI] 개발환경 설치 CUBE IDE (0) | 2023.10.19 |