Add SetCompare method to PWM channel
This commit is contained in:
parent
fe499d69f0
commit
13dcb08f94
@ -21,7 +21,7 @@ struct IO
|
|||||||
GPIO_TypeDef* port;
|
GPIO_TypeDef* port;
|
||||||
std::uint16_t pin;
|
std::uint16_t pin;
|
||||||
|
|
||||||
IO() = default;
|
IO() = delete;
|
||||||
IO(GPIO_TypeDef* port, const unsigned short pin);
|
IO(GPIO_TypeDef* port, const unsigned short pin);
|
||||||
|
|
||||||
void Set(const bool state);
|
void Set(const bool state);
|
||||||
|
|||||||
@ -24,7 +24,7 @@ struct PwmChannel
|
|||||||
std::uint32_t timer_code;
|
std::uint32_t timer_code;
|
||||||
IO pin;
|
IO pin;
|
||||||
|
|
||||||
PwmChannel() = default;
|
PwmChannel() = delete;
|
||||||
|
|
||||||
PwmChannel(TIM_HandleTypeDef* timer,
|
PwmChannel(TIM_HandleTypeDef* timer,
|
||||||
const std::uint32_t channel,
|
const std::uint32_t channel,
|
||||||
@ -36,6 +36,8 @@ struct PwmChannel
|
|||||||
|
|
||||||
void Enable();
|
void Enable();
|
||||||
void Disable();
|
void Disable();
|
||||||
|
|
||||||
|
void SetCompare(const std::uint32_t compare);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,34 +28,34 @@ void DualDrvMotors::Set(const std::int16_t left, const std::int16_t right)
|
|||||||
{
|
{
|
||||||
if (left > 0)
|
if (left > 0)
|
||||||
{
|
{
|
||||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, left);
|
_left.forward.SetCompare(left);
|
||||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, 0);
|
_left.backward.SetCompare(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, 0);
|
_left.forward.SetCompare(0);
|
||||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, (-1 * left));
|
_left.backward.SetCompare(-1 * left);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (right > 0)
|
if (right > 0)
|
||||||
{
|
{
|
||||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, right);
|
_right.forward.SetCompare(right);
|
||||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, 0);
|
_right.backward.SetCompare(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, 0);
|
_right.forward.SetCompare(0);
|
||||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, (-1 * right));
|
_right.backward.SetCompare(-1 * right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DualDrvMotors::Coast()
|
void DualDrvMotors::Coast()
|
||||||
{
|
{
|
||||||
__HAL_TIM_SET_COMPARE(_left.forward.timer, _left.forward.channel, 0);
|
_left.forward.SetCompare(0);
|
||||||
__HAL_TIM_SET_COMPARE(_left.backward.timer, _left.backward.channel, 0);
|
_left.backward.SetCompare(0);
|
||||||
|
|
||||||
__HAL_TIM_SET_COMPARE(_right.forward.timer, _right.forward.channel, 0);
|
_right.forward.SetCompare(0);
|
||||||
__HAL_TIM_SET_COMPARE(_right.backward.timer, _right.backward.channel, 0);
|
_right.backward.SetCompare(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DualDrvMotors::Break()
|
void DualDrvMotors::Break()
|
||||||
|
|||||||
@ -55,4 +55,9 @@ void PwmChannel::Disable()
|
|||||||
HAL_TIM_PWM_Stop(timer, channel);
|
HAL_TIM_PWM_Stop(timer, channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PwmChannel::SetCompare(const std::uint32_t compare)
|
||||||
|
{
|
||||||
|
__HAL_TIM_SET_COMPARE(timer, channel, compare);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user