105 lines
3.1 KiB
C
105 lines
3.1 KiB
C
|
/**
|
|||
|
******************************************************************
|
|||
|
* @file bsp_key.c
|
|||
|
* @author fire
|
|||
|
* @version V1.0
|
|||
|
* @date 2015-xx-xx
|
|||
|
* @brief LPTIM-<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
******************************************************************
|
|||
|
* @attention
|
|||
|
*
|
|||
|
* ʵ<EFBFBD><EFBFBD>ƽ̨:Ұ<EFBFBD><EFBFBD> STM32H750 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD>̳ :http://www.firebbs.cn
|
|||
|
* <EFBFBD>Ա<EFBFBD> :http://firestm32.taobao.com
|
|||
|
*
|
|||
|
******************************************************************
|
|||
|
*/
|
|||
|
#include "./lptim/bsp_lptim.h"
|
|||
|
LPTIM_HandleTypeDef LPTIM_Handle;
|
|||
|
/**
|
|||
|
* @brief LPTIM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void LPTIM_GPIO_Config(void)
|
|||
|
{
|
|||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|||
|
/*<2A><><EFBFBD><EFBFBD>LPTIM1<4D><31><EFBFBD>ŵ<EFBFBD>ʱ<EFBFBD><CAB1>*/
|
|||
|
LPTIMx_OUT_GPIO_CLK_ENABLE();
|
|||
|
/*ѡ<><EFBFBD><F1B0B4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
GPIO_InitStructure.Pin = LPTIMx_OUT_PIN;
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ƒ<EFBFBD>ģʽ*/
|
|||
|
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
GPIO_InitStructure.Pull = GPIO_PULLUP;
|
|||
|
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
|
|||
|
GPIO_InitStructure.Alternate = LPTIMx_OUT_AF;
|
|||
|
/*ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
HAL_GPIO_Init(LPTIMx_OUT_GPIO_PORT, &GPIO_InitStructure);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TIM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void LPTIM_MODE_Config(void)
|
|||
|
{
|
|||
|
|
|||
|
RCC_PeriphCLKInitTypeDef RCC_PeriphCLKInitStruct;
|
|||
|
uint32_t PeriodValue;
|
|||
|
uint32_t PulseValue;
|
|||
|
RCC_PeriphCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPTIM1;
|
|||
|
/* ѡ<><D1A1>LSIʱ<49><CAB1><EFBFBD><EFBFBD>ΪLPTIMʱ<4D><CAB1>Դ */
|
|||
|
#if (LPTIMx_CLK_Source == LSI)
|
|||
|
RCC_PeriphCLKInitStruct.Lptim1ClockSelection = RCC_LPTIM1CLKSOURCE_LSI;
|
|||
|
/* ѡ<><D1A1>LSEʱ<45><CAB1><EFBFBD><EFBFBD>ΪLPTIMʱ<4D><CAB1>Դ */
|
|||
|
#elif (LPTIMx_CLK_Source == LSE)
|
|||
|
RCC_PeriphCLKInitStruct.Lptim1ClockSelection = RCC_LPTIM1CLKSOURCE_LSE;
|
|||
|
#endif
|
|||
|
HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphCLKInitStruct);
|
|||
|
/*<2A><><EFBFBD><EFBFBD>LPTIM1<4D><31>ʱ<EFBFBD><CAB1>*/
|
|||
|
|
|||
|
LPTIMx_CLK_ENABLE();
|
|||
|
/* <20><><EFBFBD>嶨ʱ<E5B6A8><CAB1><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ַ*/
|
|||
|
LPTIM_Handle.Instance = LPTIMx_Instance;
|
|||
|
//ѡ<><D1A1><EFBFBD>ڲ<EFBFBD>ʱ<EFBFBD><CAB1>ԴLPTIM_CLK = LSE=32.768KHz
|
|||
|
LPTIM_Handle.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
|
|||
|
// <20><>ʱ<EFBFBD><CAB1>ʱ<EFBFBD>ӷ<EFBFBD>Ƶϵ<C6B5><CFB5>
|
|||
|
LPTIM_Handle.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
|
|||
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ڲ<EFBFBD>
|
|||
|
LPTIM_Handle.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
|
|||
|
// <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LPTIM_Handle.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
|
|||
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LPTIM_Handle.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH;
|
|||
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ʽ
|
|||
|
LPTIM_Handle.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
|
|||
|
|
|||
|
HAL_LPTIM_Init(&LPTIM_Handle);
|
|||
|
/*PWMģʽ<C4A3><CABD><EFBFBD><EFBFBD>*/
|
|||
|
/*<2A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>99<39><39><EFBFBD><EFBFBD>Ϊ100<30>Σ<EFBFBD>
|
|||
|
Ϊһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>32.768KHz/100=327.68Hz*/
|
|||
|
PeriodValue = 100-1;
|
|||
|
/*PWM<57><4D><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>һ<EFBFBD>뼴50% */
|
|||
|
PulseValue = 50-1;
|
|||
|
HAL_LPTIM_PWM_Start(&LPTIM_Handle, PeriodValue, PulseValue);
|
|||
|
}
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void LPTIM_PWM_OUT(void)
|
|||
|
{
|
|||
|
LPTIM_GPIO_Config();
|
|||
|
|
|||
|
LPTIM_MODE_Config();
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD>ģʽ */
|
|||
|
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
|
|||
|
/* <20>ȴ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KEY2<59><32><EFBFBD>ѣ<EFBFBD><D1A3>˳<EFBFBD><CBB3><EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>PWM */
|
|||
|
HAL_LPTIM_PWM_Stop(&LPTIM_Handle);
|
|||
|
}
|
|||
|
|
|||
|
/*********************************************END OF FILE**********************/
|