/*
 * H_Common_STM32F4_PWM_1CH.h
 *
 *  Created on: 2024/11/25
 *      Author: egaono-electronics
 */

#ifndef H_COMMON_STM32F4_PWM_1CH_H_
#define H_COMMON_STM32F4_PWM_1CH_H_

#include "Dev_Conf.h"

#include def_Header_HAL



//----------------------------------------------------------
// PWM初期化
//----------------------------------------------------------
// 引数;
// TIM_HandleTypeDef *pHandle_TIMx :
//                      Time Base Handle構造体のポインタ
// TIM_TypeDef *TIMx : TIM選択
// uint32_t uint32_Div_Clock : SystemCoreClock の除数
// uint32_t uint32_TIMx_CCRx : TiMx CHx のインターバル


// 戻り値:
//    なし
//----------------------------------------------------------
void Initialize_PWM(TIM_HandleTypeDef *pHandle_TIMx,
                    TIM_TypeDef *TIMx,
                    uint32_t uint32_Div_Clock,
                    uint32_t uint32_TIMx_CCRx);



//----------------------------------------------------------
// PWMの周期設定
//----------------------------------------------------------
// 引数;
// TIM_HandleTypeDef *pHandle_TIMx :
//                      Time Base Handle構造体のポインタ
// TIM_TypeDef *TIMx : TIM選択
// uint32_t uint32_PrescalerValue : TIMx のクロック分周比
// uint32_t uint32_TIMx_Period : TiMx CHx の周期


// 戻り値:
//    なし
//----------------------------------------------------------
void Config_PWM_Period(TIM_HandleTypeDef *pHandle_TIMx,
                       TIM_TypeDef *TIMx,
                       uint32_t uint32_PrescalerValue,
                       uint32_t uint32_TIMx_Period);



//----------------------------------------------------------
// PWMパルス出力設定
//----------------------------------------------------------
// 引数;
// TIM_HandleTypeDef *pHandle_TIMx :
//                      Time Base Handle構造体のポインタ
// TIM_TypeDef *TIMx : TIM選択
// uint32_t uint32_TIM_CHANNEL_x : Channel選択
// uint32_t uint32_Pulse : Pulse出力値


// 戻り値:
//    なし
//----------------------------------------------------------
void Configure_PWM(TIM_HandleTypeDef *pHandle_TIMx,
                   TIM_TypeDef *TIMx,
                   uint32_t uint32_TIM_CHANNEL_x,
                   uint32_t uint32_Pulse);



//----------------------------------------------------------
// PWMパルス出力設定 : 反転出力
//----------------------------------------------------------
// 引数;
// TIM_HandleTypeDef *pHandle_TIMx :
//                      Time Base Handle構造体のポインタ
// TIM_TypeDef *TIMx : TIM選択
// uint32_t uint32_TIM_CHANNEL_x : Channel選択
// uint32_t uint32_Pulse : Pulse出力値


// 戻り値:
//    なし
//----------------------------------------------------------
void Configure_PWM_LOW(TIM_HandleTypeDef *pHandle_TIMx,
                       TIM_TypeDef *TIMx,
                       uint32_t uint32_TIM_CHANNEL_x,
                       uint32_t uint32_Pulse);



// TIM Output Compare Configuration Structure
extern TIM_OC_InitTypeDef  GLB_struct_TIM_OC_Init;



#endif /* H_COMMON_STM32F4_PWM_1CH_H_ */
