mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
Merged in raiden00/nuttx (pull request #606)
stm32_hrtim: add repetition support and fix enum overflow Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
committed by
Gregory Nutt
parent
8fe9e81183
commit
2e5bef89b8
@@ -729,6 +729,8 @@ static int hrtim_cmp_update(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
|||||||
uint8_t index, uint16_t cmp);
|
uint8_t index, uint16_t cmp);
|
||||||
static int hrtim_per_update(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
static int hrtim_per_update(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
uint16_t per);
|
uint16_t per);
|
||||||
|
static int hrtim_rep_update(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
|
uint8_t rep);
|
||||||
static uint16_t hrtim_per_get(FAR struct hrtim_dev_s *dev, uint8_t timer);
|
static uint16_t hrtim_per_get(FAR struct hrtim_dev_s *dev, uint8_t timer);
|
||||||
static uint16_t hrtim_cmp_get(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
static uint16_t hrtim_cmp_get(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
uint8_t index);
|
uint8_t index);
|
||||||
@@ -1538,6 +1540,7 @@ static const struct stm32_hrtim_ops_s g_hrtim1ops =
|
|||||||
{
|
{
|
||||||
.cmp_update = hrtim_cmp_update,
|
.cmp_update = hrtim_cmp_update,
|
||||||
.per_update = hrtim_per_update,
|
.per_update = hrtim_per_update,
|
||||||
|
.rep_update = hrtim_rep_update,
|
||||||
.per_get = hrtim_per_get,
|
.per_get = hrtim_per_get,
|
||||||
.cmp_get = hrtim_cmp_get,
|
.cmp_get = hrtim_cmp_get,
|
||||||
.fclk_get = hrtim_fclk_get,
|
.fclk_get = hrtim_fclk_get,
|
||||||
@@ -4897,6 +4900,31 @@ static uint16_t hrtim_per_get(FAR struct hrtim_dev_s *dev, uint8_t timer)
|
|||||||
return (uint16_t)hrtim_tim_getreg(priv, timer, STM32_HRTIM_TIM_PER_OFFSET);
|
return (uint16_t)hrtim_tim_getreg(priv, timer, STM32_HRTIM_TIM_PER_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: hrtim_rep_update
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Try update HRTIM Timer repetition register.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* dev - HRTIM device structure
|
||||||
|
* timer - HRTIM Timer index
|
||||||
|
* rep - New repetition register value
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* 0 on success; a negated errno value on failure
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static int hrtim_rep_update(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
|
uint8_t rep)
|
||||||
|
{
|
||||||
|
FAR struct stm32_hrtim_s *priv = (FAR struct stm32_hrtim_s *)dev->hd_priv;
|
||||||
|
hrtim_tim_putreg(priv, timer, STM32_HRTIM_TIM_REPR_OFFSET, rep);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: hrtim_cmp_update
|
* Name: hrtim_cmp_update
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -397,10 +397,13 @@ enum stm32_hrtim_tim_rst_e
|
|||||||
HRTIM_RST_TDCMP2 = (1<<29),
|
HRTIM_RST_TDCMP2 = (1<<29),
|
||||||
HRTIM_RST_TDCMP4 = (1<<30),
|
HRTIM_RST_TDCMP4 = (1<<30),
|
||||||
HRTIM_RST_TECMP1 = (1<<31),
|
HRTIM_RST_TECMP1 = (1<<31),
|
||||||
HRTIM_RST_TECMP2 = (1<<32),
|
|
||||||
HRTIM_RST_TECMP4 = (1<<33),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This definitions does not fit to the above 32 bit enum */
|
||||||
|
|
||||||
|
#define HRTIM_RST_TECMP2 (1ull<<32)
|
||||||
|
#define HRTIM_RST_TECMP4 (1ull<<33)
|
||||||
|
|
||||||
/* HRTIM Timer X prescaler */
|
/* HRTIM Timer X prescaler */
|
||||||
|
|
||||||
enum stm32_hrtim_tim_prescaler_e
|
enum stm32_hrtim_tim_prescaler_e
|
||||||
@@ -1000,6 +1003,7 @@ struct stm32_hrtim_ops_s
|
|||||||
int (*cmp_update)(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
int (*cmp_update)(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
uint8_t index, uint16_t cmp);
|
uint8_t index, uint16_t cmp);
|
||||||
int (*per_update)(FAR struct hrtim_dev_s *dev, uint8_t timer, uint16_t per);
|
int (*per_update)(FAR struct hrtim_dev_s *dev, uint8_t timer, uint16_t per);
|
||||||
|
int (*rep_update)(FAR struct hrtim_dev_s *dev, uint8_t timer, uint8_t rep);
|
||||||
uint16_t (*per_get)(FAR struct hrtim_dev_s *dev, uint8_t timer);
|
uint16_t (*per_get)(FAR struct hrtim_dev_s *dev, uint8_t timer);
|
||||||
uint16_t (*cmp_get)(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
uint16_t (*cmp_get)(FAR struct hrtim_dev_s *dev, uint8_t timer,
|
||||||
uint8_t index);
|
uint8_t index);
|
||||||
|
|||||||
Reference in New Issue
Block a user