반도체, 임베디드 Study/STM32

HAL 함수 모음 (GPIO, EXTI, UART, ADC, DAC, TIM...)

잇(IT) 2024. 6. 16. 21:26
728x90

기본

HAL_PPP_Process()

인터럽트 모드에서 프로세서를 시작하는 함수

사용자의 코드에서 이 함수를 호출하면 프로세스가 인터럽트 모드에서 시작

 

HAL_PPP_IRQHandler()

PPP 주변장치의 인터럽트 핸들러

인터럽트 모드에서 프로세스를 시작하기 전에 stm32f4xx_it.c 파일에서 해당되는 인터럽트 핸들러가 코딩되어 있어야함.

 

__weak HAL_PPP_ProcessCpltCallback()

작업 완료시 호출되는 콜백 함수

콜백 함수는 드라이버 내에서 약함 함수(weak function)으로 선언되어 있음

사용자가 유저 작성 코드 내에서 콜백 함수를 다시 선언하는 것이 가능

, 사용자가 콜백 함수 내에 원하는 작업을 코딩하여 작성하는 것이 가능

 

__weak HAL_PPP_ProcessErrorCallback()

작업시 에러가 발생하면 호출되는 콜백 함수

 

HAL_PPP_Process_DMA()

DMA 모드에서 프로세서를 시작하는 함수

사용자의 코드에서 이 함수를 호출하면 프로세스가 DMA 모드에서 시작

 

HAL_PPP_DMA_IRQHandler()

PPP 주변장치의 DMA 핸들러

인터럽트 모드에서 프로세스를 시작하기 전에 stm32f4xx_it.c 파일에서 해당되는 인터럽트 핸들러가 코딩되어 있어야함.

 

__weak HAL_PPP_ProcessCpltCallback()

작업 완료시 호출되는 콜백 함수

 

__weak HAL_PPP_ErrorCpltCallback()

작업시 에러가 발생하면 호출되는 콜백 함수


GPIO

MCU의 초기화를 위한 함수

HAL_Init()

 

MCU의 초기화를 위한 함수

전원이 on되거나 reset 후에 MCU(STM32F429)를 초기화 하기 위한 함수

이 함수를 실행하면 MCU reset 이후의 default 값으로 초기화

HAL 라이브러리에서 제공하는 함수

 

GPIO 구동용 함수

(1) 초기화(Initialization) 및 초기화 해제(De-Initialization)용 함수

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의 지정된 핀의 설정 값을 변경 금지(lock) 시킨다.

 

(3) 인터럽트 처리용 함수

HAL_GPIO_EXTI_IRQHandler()

EXTI 인터럽트의 핸들러 함수

HAL_GPIO_EXTI_Callback()

EXTI 인터럽트를 처리하기 위한 콜백 함수.

이 함수는 EXTI 핸들러 함수 EXTIx_IRQHandler() 내에서 사용된다.


EXTI

HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)

GPIO에서 발생하는 EXTI 인터럽트 처리를 위한 인터럽트 핸들러 함수

파라미터

GPIO_Pin : GPIO pin을 지정하며 GPIO_PIN_0 ~ GPIO_PIN_15 사이의 값을 가질 수 있음

리턴 값 : 없음

 

HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

EXTI 인터럽트 처리하기 위한 콜백(Callback)함수

파라미터

GPIO_Pin : GPIO pin을 지정하며 GPIO_PIN_0 ~ GPIO_PIN_15 사이의 값을 가질 수 있음

리턴 값 : 없음


UART

HAL 함수

1) UART의 초기화 및 설정용 함수

HAL_UART_Init(), HAL_UART_DeInit() : UART의 초기화, 초기화 해제

HAL_UART_MspInit(), HAL_UART_MspDeInit() : UART Msp의 초기화, 초기화 해제

 

2) UART의 입출력용 함수

HAL_UART_Transmit() : 블로킹 모드(폴링)로 데이터 송신

HAL_UART_Receive() : 블로킹 모드(폴링)로 데이터 수신

HAL_UART_Transmit_IT() : 비 블로킹(인터럽트) 모드로 데이터 송신

HAL_UART_Receive_IT() : 비 블로킹(인터럽트) 모드로 데이터 수신

HAL_UART_Transmit_DMA() : DMA를 사용하여 비 블로킹 모드로 데이터 송신

HAL_UART_Receive_DMA() : DMA를 사용하여 비 블로킹 모드로 데이터 수신

HAL_UART_IRQHandler() : UART 인터럽트 처리 핸들러 함수

 

콜백 함수(Callback Function)

- 콜백 함수는 다음과 같으며 반드시 사용자 프로그램에서 작성 되어야함

HAL_UART_TxCpltCallback()

HAL_UART_RxCpltCallback()


ADC

DMA 방식

HAL_ADC_Start_DMA(&hadc1, (uint8_t *)buf, 1);

 

ADC의 초기화, 초기화 해제

HAL_ADC_Init(), HAL_ADC_DeInit()

 

ADC Msp의 초기화, 초기화 해제

HAL_ADC_MspInit(), HAL_ADC_MspDeInit()

 

ADC 변환 시작, 정지

HAL_ADC_Start(), HAL_ADC_Stop()

 

ADC 폴링 모드

HAL_ADC_PollForConversion(), HAL_ADC_PollForEvent()

 

ADC 인터럽트 시작, 정지

HAL_ADC_Start_IT(), HAL_ADC_Stop_IT()

 

ADC DMA 시작, 정지

HAL_ADC_Start_DMA(), HAL_ADC_Stop_DMA()

 

ADC 인터럽트 핸들러

HAL_ADC_IRQHandler()

 

ADC 변환이 완료되면 콜백

HAL_ADC_ConvCpltCallback()

 

ADC 변환 결과 값을 반환

HAL_ADC_GetValue()

 

ADC 채널 설정

HAL_ADC_ConfigChannel()


DAC

(1) 초기화(Initialization) 및 초기화 해제(De-Initialization) 함수

HAL_DAC_Init()   DAC의 초기화

HAL_DAC_DeInit() DAC의 초기화 해제

HAL_DAC_MspInit()         DAC Msp의 초기화

HAL_DAC_MspDeInit()      DAC Msp의 초기화 해제

 

(2) 입출력용 함수

HAL_DAC_Start(), HAL_DAC_Stop()  DAC 변환 시작, 정지

HAL_DAC_Start_DMA(), HAL_DAC_Stop_DMA()         DAC 변환 시작 및 DMA 사용, 변환 정지 및 DMA 사용 정지

HAL_DAC_GetValue()

DAC 변환 결과 값을 반환

 

(3) 주변장치 제어 함수

HAL_DAC_ConfigChannel()

DAC 채널 설정

HAL_DAC_SetValue()

변환할 데이터 값을 설정

(4) 주변장치 상태 함수

HAL_DAC_GetState()

DAC의 상태를 확인

HAL_DAC_GetError()

DAC의 에러를 확인


TIM

1) 타임 베이스 함수 (Time Base Function)

- 타이머의 기본적인 기능인 타이머/카운터 동작을 제어하는 함수

HAL_TIM_Base_Init(), HAL_TIM_Base_DeInit()

Time base의 초기화, 초기화 해제

HAL_TIM_Base_MspInit(), HAL_TIM_Base_MspDeInit()

Time base Msp의 초기화, 초기화 해제

HAL_TIM_Base_Start(), HAL_TIM_Base_Stop()

Time base의 동작을 시작, 정지

HAL_TIM_Base_Start_IT(), HAL_TIM_Base_Stop_IT()

Time base의 동작을 시작하고 인터럽트 발생을 활성화, 비활성화

HAL_TIM_Base_Start_DMA()

Time base의 동작을 시작하고 DMA 전송을 활성화

HAL_TIM_Base_Stop_DMA()

Time base의 동작을 정지하고 DMA 전송을 비활성화

 

2) 타임 출력 비교 함수 (Time Output Compare Function)

- 타이머의 출력 비교 동작을 제어하는 함수

HAL_TIM_OC_Init(), HAL_TIM_OC_DeIint()

Time Output Compare의 초기화, 초기화 해제

HAL_TIM_OC_MspInit(), HAL_TIM_OC_MspDeIint()

Time Output Compare MSP의 초기화, 초기화 해제

HAL_TIM_OC_Start(), HAL_TIM_OC_Stop()

Time Output Compare의 동작을 시작, 정지

HAL_TIM_OC_Sart_IT()

Time Output Compare의 동작을 시작하고 인터럽트 발생을 활성화

HAL_TIM_OC_Stop_IT()

Time Output Compare의 동작을 정지하고 인터럽트 발생을 비활성화

HAL_TIM_OC_Start_DMA()

Time Output Compare의 동작을 시작하고 DMA 전송을 활성화

HAL_TIM_OC_Stop_DMA()

Time Output Compare의 동작을 정지하고 DMA 전송을 비활성화

 

3) 타임 PWM 함수 (Time PWM Function)

- 타이머의 PWM 동작을 제어하는 함수

HAL_TIM_PWM_Init(), HAL_TIM_PWM_DeIint()

Time PWM의 초기화, 초기화 해제

HAL_TIM_PWM_MspInit(), HAL_TIM_PWM_MspDeIint()

Time PWM MSP 초기화, 초기화 해제

HAL_TIM_PWM_Start(), HAL_TIM_PWM_Stop()

Time PWM을 시작, 정지

 

HAL_TIM_PWM_Start_IT()

Time PWM을 시작하고 인터럽트를 활성화

HAL_TIM_PWM_Stop_IT()

Time PWM을 중지하고 인터럽트를 비활성화

HAL_TIM_PWM_Start_DMA()

Time PWM의 동작을 시작하고 DMA 전송을 활성화

HAL_TIM_PWM_Stop_DMA()

Time PWM의 동작을 정지하고 DMA 전송을 비활성화

 

4) 타임 입력 캡쳐 함수 (Time Input Capture Function)

- 타이머의  Input Capture 동작을 제어하는 함수

HAL_TIM_IC_Init(), HAL_TIM_IC_DeIint()

Time Input Capture의 초기화, 초기화 해제

HAL_TIM_IC_MspInit(), HAL_TIM_IC_MspDeIint()

Time Input Capture MSP의 초기화, 초기화 해제

HAL_TIM_IC_Start(), HAL_TIM_IC_Stop()

Time Input Capture를 시작, 정지

HAL_TIM_IC_Start_IT()

Time Input Capture를 시작하고 인터럽트를 활성화

HAL_TIM_IC_Stop_IT()

Time Input Capture를 정지하고 인터럽트를 활성화

HAL_TIM_IC_Start_DMA()

Time Input Capture를 시작하고 DMA 전송을 활성화

HAL_TIM_IC_Stop_DMA()

Time Input Capture를 정지하고 DMA 전송을 비활성화

 

5) 타임 원펄스 캡쳐 함수 (Time One Pulse Function)

- 타이머의 원펄스 동작을 제어하는 함수

HAL_TIM_OnePulse_Init(), HAL_TIM_OnePulse_DeInit()

Time One Pulse의 초기화, 초기화 해제

HAL_TIM_OnePulse_MspInit(), HAL_TIM_OnePulse_MspDeInit()

Time One Pulse Msp 초기화, 초기화 해제

HAL_TIM_OnePulse_Start()

Time One Pulse를 시작함

HAL_TIM_OnePulse_Stop()

Time One Pulse를 정지함

HAL_TIM_OnePulse_Start_It()

Time One Pulse를 시작하고 인터럽트를 활성화

HAL_TIM_OnePulse_Stop_It()

Time One Pulse를 정지하고 인터럽트를 비활성화

HAL_TIM_OnePulse_Start_DMA()

Time One Pulse를 시작하고 DMA 전송을 활성화

HAL_TIM_OnePulse_Stop_DMA()

Time One Pulse를 정지하고 DMA 전송을 비활성화

 

6) 타임 엔코더 함수 (Time Encoder Function)

- 타이머의 엔코더 동작을 제어하는 함수

HAL_TIM_Encoder_Init(), HAL_TIM_Encoder_DeInit()

Time Encoder의 초기화, 초기화 해제

HAL_TIM_Encoder_MspInit(), HAL_TIM_Encoder_MspDeInit()

Time Encoder MSP의 초기화, 초기화 해제

HAL_TIM_Encoder_Start()

Time Encoder의 시작

HAL_TIM_Encoder_Stop()

Time Encoder의 정지

HAL_TIM_Encoder_Start_IT()

Time Encoder를 시작하고 인터럽트를 활성화

HAL_TIM_Encoder_Stop_IT()

Time Encoder를 정지하고 인터럽트를 비활성화

HAL_TIM_Encoder_Start_DMA()

Time Encoder를 시작하고 DMA를 활성화

HAL_TIM_Encoder_Stop_DMA()

Time Encoder를 정지하고 DMA를 비활성화

 

7) IRQ 핸들러 함수 (IRQ Handler Management)

- 타이머의 IRQ 핸들러 동작을 관리(제어)하는 함수

HAL_TIM_IRQHandler()

 

8) 주변장치 제어 함수 (Peripheral Control Function)

- 타이머의 주변장치의 동작을 제어하는 함수

- OC, PWM, IC, One Pulse 모드의 입출력 채널 설정

HAL_TIM_OC_ConfigChannel()

입출력 채널을 OC 모드로 설정

HAL_TIM_IC_ConfigChannel()

입출력 채널을 IC 모드로 설정

HAL_TIM_PWM_ConfigChannel()

입출력 채널을 PWM 모드로 설정

HAL_TIM_OnePulse_ConfigChannel()

입출력 채널을 One Pulse 모드로 설정

- 클럭 Complementary Channel, 브레이크 등의 설정

HAL_TIM_ConfigClockSource()

HAL_TIM_GenerateEvent()

HAL_TIM_ConfigOCrefClear()

HAL_TIM_ConfigTI1Input()

HAL_TIM_ReadCapturedValue()

- Master Slave 동기화 설정

HAL_TIM_SlaveConfigSynchronization()

HAL_TIM_SlaveConfigSynchronization_IT()

- DMA Burst Mode의 설정

HAL_TIM_DMABurst_WriteStart()

HAL_TIM_DMABurst_WriteStop()

HAL_TIM_DMABurst_ReadSart()

HAL_TIM_DMABurst_ReadStop()

 

9) 타이머 콜백 함수 (TIM Callbacks Function)

- 타이머의 관련 인터럽트 발생시에 호출되는 콜백 함수

HAL_TIM_PeriodElapsedCallback()

Timer Period elapsed 콜백 함수

HAL_TIM_OC_DelayElapsedCallback()

Timer Output Compare 콜백 함수

HAL_TIM_IC_CaptureCallback()

Timer Input Capture 콜백 함수

HAL_TIM_PWM_PulseFinishedCallback()

Timer PWM pulse finished 콜백 함수

HAL_TIM_TriggerCallback()

Timer Trigger 콜백 함수

HAL_TIM_ErrorCallback()

Timer Error 콜백 함수

 

10) 주변장치 상태 함수 (Peripheral State Function)

- 실행중에 해당 주변장치의 상태와 데이터의 흐름 상태를 받아오는 함수

HAL_TIM_Base_GetState()

HAL_TIM_OC_GetState()

HAL_TIM_PWM_GetState()

HAL_TIM_IC_GetState()

HAL_TIM_OnePulse_GetState()

HAL_TIM_Encoder_GetState()


RTC

HAL_RTC_GetTIme(&hrtc, &sTime, RTC_FORMAT_BIN);

HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);


PWM

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);


I2C

HAL_I2C_IsDeviceReady(&hi2c1, i << 1, 1, 10)

HAL_I2C_Master_Transmit(&hi2c1, lcd_addr, data_arr, sizeof(data_arr), HAL_MAX_DELAY);  

728x90