chargeController/APP/functionalModule/Src/FM_TIM.c

104 lines
2.1 KiB
C
Raw Normal View History

2024-12-06 13:23:28 +00:00
#include "FM_TIM.h"
#include "timeSliceOffset.h"
#include "capture.h"
2024-12-06 13:23:28 +00:00
2024-12-06 13:23:28 +00:00
static int PWM_RESOLUTION;
/**
* @brief
* @param None
* @retval None
*/
void tim_Init(void)
2024-12-06 13:23:28 +00:00
{
HD_PWM_Init();
/* 得到pwm的分辨率 */
2024-12-06 13:23:28 +00:00
PWM_RESOLUTION = HAL_RCC_GetHCLKFreq() / 100000;
2024-12-11 09:51:48 +00:00
// HAL_TIM_Base_Start(&htim3);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
HD_controlTim_Init();
HAL_TIM_Base_Start_IT(&htim7);
2024-12-09 14:07:40 +00:00
HD_taskBaseTim_Init();
HAL_TIM_Base_Start_IT(&htim16);
HD_time_Init();
HAL_TIM_Base_Start_IT(&htim15);
2024-12-06 13:23:28 +00:00
}
/**
* @brief
* @param Pulse
* @retval None
*/
void set_pwmPulse(uint32_t Pulse)
{
if (Pulse > PWM_RESOLUTION) {
return;
}
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, Pulse);
}
2024-12-11 09:51:48 +00:00
/**
* @brief PWM信号输出
*/
void pwm_Stop(void)
{
// 设置PWM脉冲宽度为0 effectively停止PWM信号输出
set_pwmPulse(0);
// HAL_TIM_Base_Stop(&htim3);
}
2024-12-06 13:23:28 +00:00
/**
* @brief
* @param DutyRatio
* @retval None
*/
void set_pwmDutyRatio(float DutyRatio)
{
uint32_t Pulse = (int)(DutyRatio * PWM_RESOLUTION);
set_pwmPulse(Pulse);
}
/**
* @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM1 interrupt took place, inside
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* a global variable "uwTick" used as application time base.
* @param htim : TIM handle
* @retval None
*/
/**
* @brief
* @param htim
* @retval None
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM1) {
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */
else if (htim->Instance == TIM7) {
2024-12-06 13:23:28 +00:00
chargControl();
}
else if (htim->Instance == TIM16) {
TimeSliceOffset_Produce();
}
else if (htim->Instance == TIM15) {
hw_inc_tick();
}
2024-12-06 13:23:28 +00:00
/* USER CODE END Callback 1 */
}