본문 바로가기

stm3213

[Harman 세미콘 아카데미] 47일차 - ARM 및 RTOS 활용(Interrupt, DMA, PWM) [Interrupt] void JoyStick(int op) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, 100); xVal = HAL_ADC_GetValue(&hadc1); HAL_ADC_PollForConversion(&hadc1, 100); yVal = HAL_ADC_GetValue(&hadc1); HAL_ADC_Stop(&hadc1); zVal = !(HAL_GPIO_ReadPin(z_Value_GPIO_Port, z_Value_Pin)); if(op)printf("x : %5d, y : %5d, z : %d \r\n", xVal, yVal, zVal); } 우리가 만든 JoyStick 함수는 소프트웨어 컨버젼 방식이기 때문에, 함수를 .. 2023. 8. 31.
[Harman 세미콘 아카데미] 46일차 - STM32 Manual, Stack/Queue, ARM Setting, UART 송수신 방식(Polling, Interrupt, DMA) [STM32 Manual] Bus-Matrix I : 명령어 버스 D : 데이터 입출력용 버스 S : 시스템 Access 버스 ARM BA BUS 느린 애들을 빠른 버스에 물릴 필요 없으니, 속도를 두 개로 나눠놨다. Memory Map bit banding -> 4bit씩 다뤄줘야 한다. 따라서 HAL 함수로 다 묶어놨음 HAL Drive 함수 Order Information Reference Manual [Stack / Queue] 기본 개념 스택의 입출력은 맨 위에서 이루어지며, 중간의 데이터 삭제가 불가능하다. Stack에 저장되는 데이터 하나하나를 Element(요소)라 하며, 요소가 하나도 없을 때 Empty Stack(공백 스택)이라 부른다. 스택은 아래 그림처럼 같은 구조와 크기의 자료를 .. 2023. 8. 30.
[Harman 세미콘 아카데미] 43일차 - ARM & RTOS 활용(Timer, EXTI, DMA) [Timer] Review 1. clock 발생 주기 계산법 Timer Interrupt 활용 /* USER CODE BEGIN PV */ int xVal=0, yVal=0, zVal=0; // 조이스틱 및 버튼 상태 변수 int cnt = 0; // ADC 변환 카운트 변수 int dir = 0; // 방향 변수 // 방향 문자열 배열 char *dirs[] = {"Front ", "Front-Left ", "Left ", "Back-Left ", "Back " , "Back-Right ", "Right ", "Front-Right", "Push", " "}; /* USER CODE END PV */ /* Private function prototypes --------------------------.. 2023. 8. 25.
[Harman 세미콘 아카데미] 42일차 - ARM & RTOS 활용(Endian, Review, Mission) [Endian] Endian이란? 컴퓨터 메모리와 같은 데티어 저장 방식을 의미한다. 컴퓨터 아키텍쳐마다 데이터 메모리를 저장하는 방식이 다르기 때문에 Endian이라는 개념이 나오게 되었다. 엔디언은 데이터의 byte 순서를 나타내며, 크게 두 가지 종류로 나뉜다.(Big Endian / Little Endian) Endian의 중요성은 주로 다른 시스템 간 데이터 교환 시 발생한다. 잘 다루지는 않지만, 통신, ADC과 같이 변환이 필요한 작업에서 종종 사용되기 때문에 이해하고 있어야 된다. Big Endian Big Endian은 MSB부터 시작하여 LSB까지 데이터를 나열하는 방식이다. 즉, 중요한 부분이 앞에 위치하고 순서대로 나열하며, 인간이 사용하는 수 나열법과 같다. 주로 네트워크 프로토콜.. 2023. 8. 25.