tattaka/ぐだぐだcoder

アクアリウムとかマイクロマウスとかアリュージョニストとかそのへん

自分が良く使うHALの関数について自分なりの解説(というかメモ書き)

この記事はstm32 Advent Calendar 2017の10日目の投稿です.
自分が普段よく使うHALの関数について、使い方を忘れてもここを見ればわかるよう備忘録がわりに記していきます。

GPIO

関数 HAL_GPIO_WritePin (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
ヘッダ stm32f4xx_hal_gpio.h
型名 void
機能 Pinstate(High: GPIO_PIN_SET, Low: GPIO_PIN_RESET)を操作する
HAL_GPIO_WritePin (GPIOA, GPIO_PIN_1, GPIO_PIN_SET)
関数 HAL_GPIO_TogglePin (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
ヘッダ stm32f4xx_hal_gpio.h
型名 void
機能 Pinstateを反転させる
HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_1)
関数 HAL_GPIO_ReadPin (GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
ヘッダ stm32f4xx_hal_gpio.h
型名 GPIO_PinState
機能 指定したピン(インプットモード)の状態を読み取る
HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_1)

Timer

ベース
関数 HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 指定した構造体でタイマを設定する
HAL_TIM_Base_Init(&htim1, TIM_CHANNEL_1)
関数 HAL_TIM_Base_Start (TIM_HandleTypeDef *htim)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 指定したタイマを有効にする(割り込みは有効にならない?)
HAL_TIM_Base_Start(&htim1)
関数 HAL_TIM_Base_Stop (TIM_HandleTypeDef *htim)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 指定したタイマをストップさせる
HAL_TIM_Base_Stop(&htim1)
関数 HAL_TIM_Base_Start_IT (TIM_HandleTypeDef *htim)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 割り込みを有効にしてから指定したタイマを有効にする
HAL_TIM_Base_Start_IT(&htim1)
関数 HAL_TIM_Base_Stop_IT (TIM_HandleTypeDef *htim)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 割り込みを無効にしてから指定したタイマをストップさせる
HAL_TIM_Base_Stop_IT(&htim1)
PWM
関数 HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 指定したタイマ・チャンネルでPWMを設定する
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1)(sConfigOCはPWM設定のための構造体)
関数 HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 指定したパルスとデューティでPWM波を出力する
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1)
関数 HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 出力されているPWM波を止める
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1)
ADC
関数 HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 指定したADCを設定する
HAL_ADC_ConfigChannel(&hadc1, &sConfig)(sConfigOCはADC設定のための構造体)
関数 HAL_ADC_Start(ADC_HandleTypeDef* hadc)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 ADCをスタートさせる(割り込みは有効化されない)
HAL_ADC_Start(&hadc1)
関数 HAL_ADC_Stop(ADC_HandleTypeDef* hadc)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 ADCをストップさせる
HAL_ADC_Stop(&hadc1)
関数 HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 ADCをスタートさせ割り込みを有効化する
HAL_ADC_Start_IT(&hadc1)
関数 HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 ADCをストップさせ割り込みを無効化する
HAL_ADC_Stop_IT(&hadc1)
関数 HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 ADCをDMAモードでスタートさせる
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)sensor_value, SENSOR_NUM)(sensor_valueは格納用の配列、SENSOR_NUMは行うADCの数)
関数 HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc)
ヘッダ stm32f4xx_hal_adc.h
型名 HAL_StatusTypeDef
機能 DMAモードで動いているADCをストップさせる
HAL_ADC_Start_DMA(&hadc1)
Encoder Interface

エンコーダの値を知りたければTIMx->CNTにアクセスする

関数 HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
ヘッダ stm32f4xx_hal_tim.h
型名 HAL_StatusTypeDef
機能 エンコーダインフェース有効化し読み取りをスタートさせる
HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL)(2相エンコーダの場合両方読み取る)

SPI

関数 HAL_SPI_Init(SPI_HandleTypeDef *hspi)
ヘッダ stm32f4xx_hal_spi.h
型名 HAL_StatusTypeDef
機能 指定した構造体でSPIを設定する
HAL_SPI_Init(&hspi1)
関数 HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
ヘッダ stm32f4xx_hal_spi.h
型名 HAL_StatusTypeDef
機能 Sizeで送信するデータ数を決め、pTxDataをスレーブに送り、帰ってきたデータをpRxDataに格納する
HAL_SPI_TransmitReceive(&hspi1, send_data, rcv_data, size, 100)

UART

関数 HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
ヘッダ stm32f4xx_hal_uart.h
型名 HAL_StatusTypeDef
機能 Sizeで送信するデータ数を決め、pTxDataをスレーブに送る
HAL_UART_Transmit(&huart1, &char, 1, 1)