Added timer reset function.
This commit is contained in:
parent
e85c55a9a7
commit
92edc113f9
@ -121,6 +121,9 @@ void tim_setup(void)
|
|||||||
/* Enable TIM1 commutation interrupt. */
|
/* Enable TIM1 commutation interrupt. */
|
||||||
nvic_enable_irq(NVIC_TIM1_TRG_COM_IRQ);
|
nvic_enable_irq(NVIC_TIM1_TRG_COM_IRQ);
|
||||||
|
|
||||||
|
/* Reset TIM1 peripheral */
|
||||||
|
timer_reset(TIM1);
|
||||||
|
|
||||||
/* Clock division. */
|
/* Clock division. */
|
||||||
timer_set_clock_division(TIM1, TIM_CR1_CKD_CK_INT);
|
timer_set_clock_division(TIM1, TIM_CR1_CKD_CK_INT);
|
||||||
|
|
||||||
|
@ -852,6 +852,7 @@ enum tim_oc_mode {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* --- TIM functions ------------------------------------------------------- */
|
/* --- TIM functions ------------------------------------------------------- */
|
||||||
|
void timer_reset(u32 timer_peripheral);
|
||||||
void timer_enable_irq(u32 timer_peripheral, u32 irq);
|
void timer_enable_irq(u32 timer_peripheral, u32 irq);
|
||||||
void timer_disable_irq(u32 timer_peripheral, u32 irq);
|
void timer_disable_irq(u32 timer_peripheral, u32 irq);
|
||||||
void timer_clear_flag(u32 timer_peripheral, u32 flag);
|
void timer_clear_flag(u32 timer_peripheral, u32 flag);
|
||||||
|
@ -26,6 +26,73 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libopencm3/stm32/timer.h>
|
#include <libopencm3/stm32/timer.h>
|
||||||
|
#include <libopencm3/stm32/rcc.h>
|
||||||
|
|
||||||
|
void timer_reset(u32 timer_peripheral)
|
||||||
|
{
|
||||||
|
switch (timer_peripheral)
|
||||||
|
{
|
||||||
|
case TIM1:
|
||||||
|
rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM1RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM1RST);
|
||||||
|
break;
|
||||||
|
case TIM2:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM2RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM2RST);
|
||||||
|
break;
|
||||||
|
case TIM3:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM3RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM3RST);
|
||||||
|
break;
|
||||||
|
case TIM4:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM4RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM4RST);
|
||||||
|
break;
|
||||||
|
case TIM5:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM5RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM5RST);
|
||||||
|
break;
|
||||||
|
case TIM6:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM6RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM6RST);
|
||||||
|
break;
|
||||||
|
case TIM7:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM7RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM7RST);
|
||||||
|
break;
|
||||||
|
case TIM8:
|
||||||
|
rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM8RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM8RST);
|
||||||
|
break;
|
||||||
|
/* These timers are not supported in libopencm3 yet */
|
||||||
|
/*
|
||||||
|
case TIM9:
|
||||||
|
rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM9RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM9RST);
|
||||||
|
break;
|
||||||
|
case TIM10:
|
||||||
|
rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM10RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM10RST);
|
||||||
|
break;
|
||||||
|
case TIM11:
|
||||||
|
rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM11RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM11RST);
|
||||||
|
break;
|
||||||
|
case TIM12:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM12RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM12RST);
|
||||||
|
break;
|
||||||
|
case TIM13:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM13RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM13RST);
|
||||||
|
break;
|
||||||
|
case TIM14:
|
||||||
|
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM14RST);
|
||||||
|
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_TIM14RST);
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void timer_enable_irq(u32 timer_peripheral, u32 irq)
|
void timer_enable_irq(u32 timer_peripheral, u32 irq)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user