195 lines
9.4 KiB
C
195 lines
9.4 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
|
* File Name : ch32l103_lptim.h
|
|
* Author : WCH
|
|
* Version : V1.0.0
|
|
* Date : 2023/07/08
|
|
* Description : This file contains all the functions prototypes for the
|
|
* TIM firmware library.
|
|
*********************************************************************************
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
|
* Attention: This software (modified or not) and binary are used for
|
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
|
*******************************************************************************/
|
|
#ifndef __CH32L103_LPTIM_H
|
|
#define __CH32L103_LPTIM_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "ch32l103.h"
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t LPTIM_ClockSource; /* Selects the clock source.
|
|
This parameter can be a value of @ref LPTIM_Clock_Source */
|
|
|
|
union{
|
|
uint32_t LPTIM_ClockPolarity; /* Configures Clock Polarity(No Encoder mode).
|
|
This parameter can be a value of @ref LPTIM_ClockPolarity */
|
|
|
|
uint32_t LPTIM_EncoderMode; /* Configures Encoder mode.
|
|
This parameter can be a value of @ref LPTIM_EncoderMode */
|
|
};
|
|
|
|
uint32_t LPTIM_ClockSampleTime; /* Configures Clock Sample Time.
|
|
This parameter can be a value of @ref LPTIM_ClockSampleTime */
|
|
|
|
uint32_t LPTIM_TriggerSampleTime; /* Configures Trigger Sample Time.
|
|
This parameter can be a value of @ref LPTIM_TriggerSampleTime */
|
|
|
|
uint32_t LPTIM_ClockPrescaler; /* Configures the clock Prescaler.
|
|
This parameter can be a value of @ref LPTIM_ClockPrescaler */
|
|
|
|
uint32_t LPTIM_TriggerSource; /* Configures trigger source.
|
|
This parameter can be a value of @ref LPTIM_TriggerSource */
|
|
|
|
uint32_t LPTIM_ExTriggerPolarity; /* Configures external trigger polarity.
|
|
This parameter can be a value of @ref LPTIM_ExTriggerPolarity */
|
|
|
|
FunctionalState LPTIM_TimeOut; /* Specifies whether the time out function.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
FunctionalState LPTIM_OnePulseMode; /* Specifies whether the PWM out one pulse.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
uint32_t LPYIM_OutputPolarity; /* Configures output polarity.
|
|
This parameter can be a value of @ref LPYIM_OutputPolarity */
|
|
|
|
uint32_t LPYIM_UpdateMode; /* Configures update mode.
|
|
This parameter can be a value of @ref LPYIM_UpdateMode */
|
|
|
|
uint32_t LPTIM_CountSource; /* Configures Counter Source.
|
|
This parameter can be a value of @ref LPTIM_CountSource */
|
|
|
|
FunctionalState LPTIM_Encoder; /* Specifies whether open Encoder function.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
uint32_t LPTIM_InClockSource; /* Specifies Internal clock source.
|
|
This parameter can be a value of @ref LPTIM_InClockSource */
|
|
|
|
FunctionalState LPTIM_ForceOutHigh; /* Specifies whether the PWM out high level.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
FunctionalState LPTIM_SingleMode; /* Specifies whether single mode.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
FunctionalState LPTIM_ContinuousMode; /* Specifies whether continuous mode.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
FunctionalState LPTIM_PWMOut; /* Specifies whether PWM out function.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
FunctionalState LPTIM_CounterDirIndicat; /* Specifies whether counter direction indicate function.
|
|
This parameter can be set to ENABLE or DISABLE */
|
|
|
|
uint16_t LPTIM_Pulse; /* Specifies the pulse value to be loaded into the Capture Compare Register.
|
|
This parameter can be a number between 0x0000 and 0xFFFF */
|
|
|
|
uint16_t LPTIM_Period; /* Specifies the period value to be loaded into the active
|
|
This parameter must be a number between 0x0000 and 0xFFFF. */
|
|
} LPTIM_TimeBaseInitTypeDef;
|
|
|
|
|
|
/* LPTIM_Clock_Source */
|
|
#define LPTIM_ClockSource_In ((uint32_t)0x00000000)
|
|
#define LPTIM_ClockSource_Ex ((uint32_t)0x00000001)
|
|
|
|
/* LPTIM_ClockPolarity */
|
|
#define LPTIM_ClockPolarity_Rising ((uint32_t)0x00000000)
|
|
#define LPTIM_ClockPolarity_Falling ((uint32_t)0x00000002)
|
|
#define LPTIM_ClockPolarity_Rising_Falling ((uint32_t)0x00000004)
|
|
|
|
/* LPTIM_ClockPrescalerTime */
|
|
#define LPTIM_ClockSampleTime_0T ((uint32_t)0x00000000)
|
|
#define LPTIM_ClockSampleTime_2T ((uint32_t)0x00000008)
|
|
#define LPTIM_ClockSampleTime_4T ((uint32_t)0x00000010)
|
|
#define LPTIM_ClockSampleTime_8T ((uint32_t)0x00000018)
|
|
|
|
/* LPTIM_TriggerSampleTime */
|
|
#define LPTIM_TriggerSampleTime_0T ((uint32_t)0x00000000)
|
|
#define LPTIM_TriggerSampleTime_2T ((uint32_t)0x00000040)
|
|
#define LPTIM_TriggerSampleTime_4T ((uint32_t)0x00000080)
|
|
#define LPTIM_TriggerSampleTime_8T ((uint32_t)0x000000C0)
|
|
|
|
/* LPTIM_ClockPrescaler */
|
|
#define LPTIM_TClockPrescaler_DIV1 ((uint32_t)0x00000000)
|
|
#define LPTIM_TClockPrescaler_DIV2 ((uint32_t)0x00000200)
|
|
#define LPTIM_TClockPrescaler_DIV4 ((uint32_t)0x00000400)
|
|
#define LPTIM_TClockPrescaler_DIV8 ((uint32_t)0x00000600)
|
|
#define LPTIM_TClockPrescaler_DIV16 ((uint32_t)0x00000800)
|
|
#define LPTIM_TClockPrescaler_DIV32 ((uint32_t)0x00000A00)
|
|
#define LPTIM_TClockPrescaler_DIV64 ((uint32_t)0x00000C00)
|
|
#define LPTIM_TClockPrescaler_DIV128 ((uint32_t)0x00000E00)
|
|
|
|
/* LPTIM_TriggerSource */
|
|
#define LPTIM_TriggerSource_ETR ((uint32_t)0x00000000)
|
|
#define LPTIM_TriggerSource_RTC_ALARM ((uint32_t)0x00002000)
|
|
#define LPTIM_TriggerSource_TAMP ((uint32_t)0x00004000)
|
|
|
|
/* LPTIM_ExTriggerPolarity */
|
|
#define LPTIM_ExTriggerPolarity_Disable ((uint32_t)0x00000000)
|
|
#define LPTIM_ExTriggerPolarity_Rising ((uint32_t)0x00020000)
|
|
#define LPTIM_ExTriggerPolarity_Falling ((uint32_t)0x00040000)
|
|
#define LPTIM_ExTriggerPolarity_Rising_Falling ((uint32_t)0x00060000)
|
|
|
|
/* LPYIM_OutputPolarity */
|
|
#define LPYIM_OutputPolarity_High ((uint32_t)0x00000000)
|
|
#define LPYIM_OutputPolarity_Low ((uint32_t)0x00200000)
|
|
|
|
/* LPYIM_UpdateMode */
|
|
#define LPYIM_UpdateMode0 ((uint32_t)0x00000000)
|
|
#define LPYIM_UpdateMode1 ((uint32_t)0x00400000)
|
|
|
|
/* LPTIM_CountSource */
|
|
#define LPTIM_CountSource_Internal ((uint32_t)0x00000000)
|
|
#define LPTIM_CountSource_External ((uint32_t)0x00800000)
|
|
|
|
/* LPTIM_InClockSource */
|
|
#define LPTIM_InClockSource_PCLK1 ((uint32_t)0x00000000)
|
|
#define LPTIM_InClockSource_HSI ((uint32_t)0x02000000)
|
|
#define LPTIM_InClockSource_LSE ((uint32_t)0x04000000)
|
|
#define LPTIM_InClockSource_LSI ((uint32_t)0x06000000)
|
|
|
|
/* LPTIM_Flag_Definition */
|
|
#define LPTIM_FLAG_DIR_SYNC ((uint32_t)0x00000080)
|
|
#define LPTIM_FLAG_DOWN ((uint32_t)0x00000040)
|
|
#define LPTIM_FLAG_UP ((uint32_t)0x00000020)
|
|
#define LPTIM_FLAG_ARROK ((uint32_t)0x00000010)
|
|
#define LPTIM_FLAG_CMPOK ((uint32_t)0x00000008)
|
|
#define LPTIM_FLAG_EXTTRIG ((uint32_t)0x00000004)
|
|
#define LPTIM_FLAG_ARRM ((uint32_t)0x00000002)
|
|
#define LPTIM_FLAG_CMPM ((uint32_t)0x00000001)
|
|
|
|
/* LPTIM_Interrupts_Definition */
|
|
#define LPTIM_IT_DOWN ((uint32_t)0x00000040)
|
|
#define LPTIM_IT_UP ((uint32_t)0x00000020)
|
|
#define LPTIM_IT_ARROK ((uint32_t)0x00000010)
|
|
#define LPTIM_IT_CMPOK ((uint32_t)0x00000008)
|
|
#define LPTIM_IT_EXTTRIG ((uint32_t)0x00000004)
|
|
#define LPTIM_IT_ARRM ((uint32_t)0x00000002)
|
|
#define LPTIM_IT_CMPM ((uint32_t)0x00000001)
|
|
|
|
|
|
void LPTIM_DeInit(void);
|
|
void LPTIM_TimeBaseInit(LPTIM_TimeBaseInitTypeDef* LPTIM_TimeBaseInitStruct);
|
|
void LPTIM_TimeBaseStructInit(LPTIM_TimeBaseInitTypeDef* LPTIM_TimeBaseInitStruct);
|
|
void LPTIM_CounterDirIndicat_Cmd(FunctionalState NewState);
|
|
void LPTIM_OutCmd(FunctionalState NewState);
|
|
void LPTIM_Cmd(FunctionalState NewState);
|
|
uint16_t LPTIM_GetCounter(void);
|
|
void LPTIM_SetAutoreload(uint16_t Autoreload);
|
|
void LPTIM_SetCompare(uint16_t Compare);
|
|
void LPTIM_ITConfig(uint32_t LPTIM_IT, FunctionalState NewState);
|
|
FlagStatus LPTIM_GetFlagStatus(uint32_t LPTIM_FLAG);
|
|
void LPTIM_ClearFlag(uint32_t LPTIM_FLAG);
|
|
ITStatus LPTIM_GetITStatus(uint32_t LPTIM_IT);
|
|
void LPTIM_ClearITPendingBit(uint32_t LPTIM_IT);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|