728x90

반도체, 임베디드 Study/STM32 28

STM32 - UART 이론 - (1)

장비 간의 유선 디지털 통신 방식은 Parallel, Serial 통신이 있다.Parallel 통신은 디지털 데이터의 각 비트 별로 장비 통신 회선을 하나씩 할당하여 한꺼번에 데이터를 전송한다.Serial 통신은 모든 비트들이 공통의 선을 이용하여 순차적으로 데이터를 전송한다. UART는 시리얼 통신을 하기 때문에 시리얼 통신에 대해 자세히 알아보도록 할 것이다.장치와 장치 간의 타이밍을 결정하는 방식은 크게 두가지가 있다.1. 하나의 장치에서 하나의 비트마다 클록 펄스를 생성하고 그 신호를 다른 장치에 함께 전송하는 방법2. 장치 간에 타이밍 길이를 서로 약속한 상태에서 근사적으로 비트를 전송하는 방법 1. 방법은 클록에 의해 시간 동기를 맞추기 때문에 동기식(Synchronous)통신 방식이라하고, ..

STM32 - EXTI (External Interrupt) 구현 - (1)

https://insoobaik.tistory.com/609 STM32 - EXTI (External Interrupt 외부 인터럽트) 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com이전에 학습한 이론을 통해 EXTI를 직접 구현해보도록 하겠다.브레드보드를 이용하여 위와 같이 스위치를 이용한 회로 3개를 통해 EXTI를 구성할 것이다.1. SW1을 누르면 인터럽트가 발생하여 LED 1 -> 2 -> 3이 차례로 하나씩 점멸하도록 구현2. SW2를 누르면 인터럽트가 발생하여 LED 3 -> 2 -> 1이 차례로 하나씩 점멸하도록 구현3. SW3을 누르면  인터럽트가 발생하여 LED 1, 2, 3이 한번에 점멸하도록 구현 3, 5, 10번 Pin 전부..

STM32 - EXTI (External Interrupt 외부 인터럽트) 이론

Interrupt(인터럽트) 인터럽트란 다른 동작을 수행하기 위해 주는 신호를 뜻한다. 일반적으로 Interrupt를 사용하지 않고 신호를 전달하면 (Polling) 실행되고 있던 동작을 완전히 끝낸 후에 새로 받은 신호에 따라 동작을 수행한다.Interrupt를 사용하면 Interrupt가 발생하자마자 수행하고 있는 동작을 잠시 중지하고 Interrupt로 발생된 동작을 수행하고 원래 수행하던 동작을 수행한다.EXTI(External Interrupt) EXTI는 말 그대로 외부에서 발생하는 Interrupt를 의미한다. 스위치를 눌러 수행하는 동작의 경우 EXTI라고 할 수 있다.STM32의 경우 위와 같은 알고리즘을 따른다. 1. Input Line을 통해 인터럽트가 발생하면 Rising 혹은 Fa..

STM32 - Clock Configuration

CubeIDE의 Clock Configuration에 대해 알아보겠다.CubeIDE에는 위와 같이 Clock에 대한 설정을 할 수 있는 화면이 구성되어 있다.위 구성은 실제 STM32F4 시리즈의 데이터 시트와 유사한 구조를 가지고 있다.우선 Clock Tree에 있는 용어들을 먼저 정리해보겠다.HCLK : Core Clock으로 실제 소스 코드를 동작시키는 Clock이다.SYSCLK : System Clock으로 Power On Reset 직후에는 무조건 내부 Clock으로 먼저 동작한다.HSE : High Speed External 외부 고속 Clock으로 STM32 외부에 Crystal/Ceramic resonator가 필요하다. Duty가 50% 이하인 외부 구형파, 삼각파 신호로도 사용이 가능하..

STM32 - GPIO / 7_segment Counter 0~9까지 숫자 나타내기

Project 생성 Project는 MCU/MPU Selector STM32F429ZI로 생성하여 사용하였다.위 옵션은 주변 장치의 초기화 코드를 직접 작성하는 대신, 도구나 프레임워크가 주변 장치마다 필요한 초기화 코드를 자동으로 생성해주는 옵션이다. 또한 .c와 .h 파일로 나눠서 생성해주며 .c 파일은 초기화 코드를 포함하고, .h 파일은 해당 주변 장치에 대한 함수 프로토타입 및 상수 정의 등을 포함한다.7_segment 7_segment는 아래와 같이 PORT가 구성되어 있고핀 번호7-세그먼트 마디abcdefgDOT1000010002000100003000000004001000005000000016010000007100000008000000009000001001000000010 BCD코드 a(13..

STM32 - GPIO 레지스터에 대하여 (MODER ~ AFRH)

GPIO 레지스터 종류 GPIO 레지스터는 GPIO_TypeDef 구조체에 10개가 정의되어 있다. 1. MODER2. OTYPER3. OSPEEDR4. PUPDR5. IDR6. ODR7. BSRR8. LCKR9. 10. AFR[2] (AFRL, AFRH)Configuration(설정)과 관련된 레지스터1. MODER2. OTYPER3. OSPEEDR4. PUPDR Data와 관련된 레지스터5. IDR6. ODR Set/Reset과 관련된 레지스터7. BSRR Locking과 관련된 레지스터9. 10. AFR[2] (AFRL, AFRH) 위와 같이 register들이 선언된 것을 확인할 수 있다.  GPIOA~K까지 각 Port는 각자의 시작 주소가 있으며, 각 레지스터 마다 offset을 통해 해당 레..

STM32 - (GPIO 구동용 함수 분석 / Board Select & MCU/MPU 차이)

GPIO 구동용 함수 STM32F429의 HAL 드라이버의 GPIO 구동용 함수에는 크게 3가지가 있다.1. 초기화 및 초기화 해제용 함수2. 입출력용 함수3. 인터럽트 처리용 함수 1. 초기화 및 초기화 해제용 함수HAL_GPIO_Init() : GPIO를 설정 조건에 맞추어 초기화한다.HAL_GPIO_DeInit() : GPIO를 reset 이후 디폴트 값으로 설정(초기화 해체)한다. 2. 입출력용 함수HAL_GPIO_ReadPin() : GPIO의 지정된 핀의 값을 읽어온다.HAL_GPIO_WritePin() : GPIO의 지정된 핀을 0 또는 1로 설정한다.HAL_GPIO_TogglePin() : GPIO의 지정된 핀의 값을 토글(toggle) 시킨다.HAL_GPIO_LockPin() : GPIO..

STM32 - HAL Driver / 프로잭트 생성 / GPIO (+실습)

STM32F429의 핀 이름이 P(Port)로 시작하는 모든 핀들은 GPIO로 사용이 가능하다.PA~PH 포트까지 0~15번까지 총 16개의 핀으로 구성되어 있다.- HAL Driver MCU의 주변장치를 제어하는 동작은 HAL(Hardware Abstraction Layer)에서 이루어진다.이를 위하여 HAL 레벨에는 여러 개의 파일들이 있으며 이러한 파일의 묶음을 HAL 드라이버라고 한다. HAL 드라이버는 주변장치의 구동을 위해 다음과 같은 종류의 데이터 구조체를 가진다.1. 주변장치 핸들링용 구조체2. 초기화 및 동작 조건 설정용 구조체3. 작업 수행용 구조체 1. 주변장치 핸들 구조체(Peripheral handle structures)주변장치 핸들 구조체는 주변장치/모듈의 설정, 레지스터 등과..

728x90