

원하는 workspace 설정 가능
상단 help옆에 로그인 하고 시작


commercial part number에 검색
next

이름정하고 finish

RCC
Reset and Clock Control

왼쪽에 초록색으로 바뀜

sys -> Debug에서 serial wire

clock configration


project manager
code generator

맨 왼쪽 톱니모양인 device configuration toll code generation 또는 저장버튼 클릭

기존에 있는거에서 덧붙일때 사용

browser


알맞는 프로젝트 이름 설정
finish

새로운 프로젝트 생성 완료

붙여넣기


나머지 프로젝트 접어두기

이름 바꿔서 맞춰주기
우클릭 속성

이름 맞는지 확인(맞는 이름이 나오려면 나머지 프로젝트들을 접어둬야함)

빌드했을때 생성되어있는(삭제해도 빌드할때마다 생성됨) 파일들을 없애서 깨끗한 처음 상태로 만들어줌

빌드했을때


오른쪽 칩 모양에서 사용하려는 핀 클릭해서 설정, 왼쪽에서 gpio 클릭해서 상태 설정
다시 generation

main.c에서 while문 안에 코드를 넣는데 주의할점은 코드를 넣으려는 구간의 BEGIN, END안에 넣어야한다 그렇지 않으면 빌드할때 사라짐 아니면 주석을 없에면됨

빌드


STM32 더블클릭 하면 프로젝트가 Debug가 생긴다
RUN하면 돌아간다
PA5가 LED에 연결되어 있는 것인데 이것은 schematic 또는 stm32전원을 연결하면 생기는 폴더의 핀맵을 보면 알 수 있다.

오른쪽 하단에 검색을 통해 원하는 핀을 검색 가능

기본적으로 왼쪽에서 원하는 기능들을 설정한다


핀맵을 보고 연결하고

해당하는 핀에 output설정을 한다 (Pinout view를 먼저 설정하고 거기에 맞게 핀을 stm32보드에 꽂으면 들쭉날쭉하게 꽂아야한다)
hal 함수를 이용하여 gpio 제어, 사용한 gpio는 GPIOA, GPIOB, GPBIOC이고 A에서 5, 6, 7, 8, 9이고 B에서는 6, 10 C에서는 7번 필들을 사용하였다.
HAL_GPIO_WritePin에서(A/B/C중에서 선택, 사용할 핀 번호 선택, SET(1) 또는 RESET(0));


STM32보드의 윗단에는 103칩 아랫단에는 411칩이있다
STM32에는 usart1,2,6이 있는데 usart2는 윗단에있는 103칩을 통해 전원-usb포트에 연결되어있는데 103칩에는 통신칩이 들어있다 그렇기 때문에 uart통신 가능
uart1,6은 그냥 tx, rx 선만 나와있고 전기적 신호를 통신 신호로 변환해주는 칩이 없기 때문에 통신 불가. FDTI라는(가장 많이 쓰이는) 통신칩을 통해서나 아니면 통신칩이 내장되어있는 블루투스 모듈을 이용하면 uart1,6도 통신 가능하다
왼쪽 창에서 Connectivity에서 USART클릭 (현재 usart2사용), 오른쪽창 Mode에서 Asynchronous
uart와 pa5번핀 사용
uart를 통해 받을 데이터를 저장할 배열 생성(main함수 밖 전역변수로 생성)


uart 함수를 수행된후에 밑에 할함수에 의해 led 점멸
빌드후 debug configurations

오른쪽 창에

Live Expression에서 배열 확장
PC의 comportmaster를 통해 uart로 연결후 문자를 보내면 value값이 바뀜
huart: UART_HandleTypeDef 구조체에 대한 포인터입니다. 이 구조체는 UART 핀 설정 및 초기화와 관련된 정보를 포함합니다. 이는 UART의 핸들러로, 해당 UART의 구성을 담고 있습니다.
pData: 수신된 데이터가 저장될 버퍼를 가리키는 포인터입니다. 이 포인터는 수신된 데이터를 저장할 메모리 영역을 지정합니다.
Size: 수신할 데이터의 크기(바이트 수)를 나타냅니다. 이 값은 pData 버퍼에 저장할 데이터의 길이를 나타냅니다.
Timeout: 수신 작업이 완료되기까지 기다릴 시간(밀리초 단위)을 지정합니다. 이 시간 안에 지정된 바이트 수를 수신하지 못하면 함수는 타임아웃 오류를 반환합니다.
stm32에서 uart인터럽트는 한 번 사용되면 disable되기 때문에 콜백함수 안에서 인터럽트 함수를 다시 사용해줘야 한다

인터럽트 활성화

배열 생성


uart 인터럽트 함수

한번 사용하면 disable되기 때문에 콜백 함수 안에서 다시 불러준다

HAL_UART_Receive_IT에서 IT를 DMA로 바꾸면 됨


프로젝트가 접혀있지 않다면 run configurations에서 알맞은 프로젝트가 선택되어있는지 확인


while문 안에 없에고 위에 함수 사용


tx는 원할때 보내는 것이기 때문에 인터럽트 필요없음, rx는 인터럽트 필요