Merge branch 'dhylands-add-timer-deinit'
This commit is contained in:
commit
5e6419cb11
|
@ -549,6 +549,7 @@ soft_reset:
|
||||||
storage_flush();
|
storage_flush();
|
||||||
|
|
||||||
printf("PYB: soft reboot\n");
|
printf("PYB: soft reboot\n");
|
||||||
|
timer_deinit();
|
||||||
|
|
||||||
first_soft_reset = false;
|
first_soft_reset = false;
|
||||||
goto soft_reset;
|
goto soft_reset;
|
||||||
|
|
|
@ -107,6 +107,9 @@ static uint32_t tim3_counter = 0;
|
||||||
STATIC pyb_timer_obj_t *pyb_timer_obj_all[14];
|
STATIC pyb_timer_obj_t *pyb_timer_obj_all[14];
|
||||||
#define PYB_TIMER_OBJ_ALL_NUM MP_ARRAY_SIZE(pyb_timer_obj_all)
|
#define PYB_TIMER_OBJ_ALL_NUM MP_ARRAY_SIZE(pyb_timer_obj_all)
|
||||||
|
|
||||||
|
STATIC mp_obj_t pyb_timer_deinit(mp_obj_t self_in);
|
||||||
|
STATIC mp_obj_t pyb_timer_callback(mp_obj_t self_in, mp_obj_t callback);
|
||||||
|
|
||||||
void timer_init0(void) {
|
void timer_init0(void) {
|
||||||
tim3_counter = 0;
|
tim3_counter = 0;
|
||||||
for (uint i = 0; i < PYB_TIMER_OBJ_ALL_NUM; i++) {
|
for (uint i = 0; i < PYB_TIMER_OBJ_ALL_NUM; i++) {
|
||||||
|
@ -114,6 +117,16 @@ void timer_init0(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unregister all interrupt sources
|
||||||
|
void timer_deinit(void) {
|
||||||
|
for (uint i = 0; i < PYB_TIMER_OBJ_ALL_NUM; i++) {
|
||||||
|
pyb_timer_obj_t *tim = pyb_timer_obj_all[i];
|
||||||
|
if (tim != NULL) {
|
||||||
|
pyb_timer_deinit(tim);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TIM3 is set-up for the USB CDC interface
|
// TIM3 is set-up for the USB CDC interface
|
||||||
void timer_tim3_init(void) {
|
void timer_tim3_init(void) {
|
||||||
// set up the timer for USBD CDC
|
// set up the timer for USBD CDC
|
||||||
|
@ -369,10 +382,15 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(pyb_timer_init_obj, 1, pyb_timer_init);
|
||||||
/// \method deinit()
|
/// \method deinit()
|
||||||
/// Deinitialises the timer.
|
/// Deinitialises the timer.
|
||||||
///
|
///
|
||||||
/// *This function is not yet implemented.*
|
/// Disables the callback (and the associated irq).
|
||||||
|
/// Stops the timer, and disables the timer peripheral.
|
||||||
STATIC mp_obj_t pyb_timer_deinit(mp_obj_t self_in) {
|
STATIC mp_obj_t pyb_timer_deinit(mp_obj_t self_in) {
|
||||||
//pyb_timer_obj_t *self = self_in;
|
pyb_timer_obj_t *self = self_in;
|
||||||
// TODO implement me
|
|
||||||
|
// Disable the interrupt
|
||||||
|
pyb_timer_callback(self_in, mp_const_none);
|
||||||
|
|
||||||
|
HAL_TIM_Base_DeInit(&self->tim);
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_timer_deinit_obj, pyb_timer_deinit);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_timer_deinit_obj, pyb_timer_deinit);
|
||||||
|
|
|
@ -40,4 +40,6 @@ void timer_tim3_init(void);
|
||||||
void timer_tim5_init(void);
|
void timer_tim5_init(void);
|
||||||
void timer_tim6_init(uint freq);
|
void timer_tim6_init(uint freq);
|
||||||
|
|
||||||
|
void timer_deinit(void);
|
||||||
|
|
||||||
void timer_irq_handler(uint tim_id);
|
void timer_irq_handler(uint tim_id);
|
||||||
|
|
Loading…
Reference in New Issue