stmhal/modutime: Refactor to use extmod's version of ticks_cpu.
This commit is contained in:
parent
5c93d0b916
commit
cd9b14bb11
|
@ -130,18 +130,6 @@ STATIC mp_obj_t time_time(void) {
|
|||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_0(time_time_obj, time_time);
|
||||
|
||||
STATIC mp_obj_t time_ticks_cpu(void) {
|
||||
static bool enabled = false;
|
||||
if (!enabled) {
|
||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||
DWT->CYCCNT = 0;
|
||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||
enabled = true;
|
||||
}
|
||||
return MP_OBJ_NEW_SMALL_INT(DWT->CYCCNT & MP_SMALL_INT_POSITIVE_MASK);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(time_ticks_cpu_obj, time_ticks_cpu);
|
||||
|
||||
STATIC const mp_map_elem_t time_module_globals_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_utime) },
|
||||
|
||||
|
@ -153,7 +141,7 @@ STATIC const mp_map_elem_t time_module_globals_table[] = {
|
|||
{ MP_OBJ_NEW_QSTR(MP_QSTR_sleep_us), (mp_obj_t)&mp_utime_sleep_us_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_ms), (mp_obj_t)&mp_utime_ticks_ms_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_us), (mp_obj_t)&mp_utime_ticks_us_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_cpu), (mp_obj_t)&time_ticks_cpu_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_cpu), (mp_obj_t)&mp_utime_ticks_cpu_obj },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_diff), (mp_obj_t)&mp_utime_ticks_diff_obj },
|
||||
};
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "usb.h"
|
||||
#include "uart.h"
|
||||
|
||||
bool mp_hal_ticks_cpu_enabled = false;
|
||||
|
||||
// this table converts from HAL_StatusTypeDef to POSIX errno
|
||||
const byte mp_hal_status_to_errno_table[4] = {
|
||||
[HAL_OK] = 0,
|
||||
|
@ -71,6 +73,15 @@ void mp_hal_stdout_tx_strn_cooked(const char *str, size_t len) {
|
|||
}
|
||||
}
|
||||
|
||||
void mp_hal_ticks_cpu_enable(void) {
|
||||
if (!mp_hal_ticks_cpu_enabled) {
|
||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||
DWT->CYCCNT = 0;
|
||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||
mp_hal_ticks_cpu_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
void mp_hal_gpio_clock_enable(GPIO_TypeDef *gpio) {
|
||||
if (0) {
|
||||
#ifdef __GPIOA_CLK_ENABLE
|
||||
|
|
|
@ -35,13 +35,24 @@ NORETURN void mp_hal_raise(HAL_StatusTypeDef status);
|
|||
void mp_hal_set_interrupt_char(int c); // -1 to disable
|
||||
|
||||
// timing functions
|
||||
|
||||
#include "stmhal/systick.h"
|
||||
|
||||
#define mp_hal_delay_ms HAL_Delay
|
||||
#define mp_hal_delay_us(us) sys_tick_udelay(us)
|
||||
#define mp_hal_delay_us_fast(us) sys_tick_udelay(us)
|
||||
#define mp_hal_ticks_ms HAL_GetTick
|
||||
#define mp_hal_ticks_us() sys_tick_get_microseconds()
|
||||
|
||||
extern bool mp_hal_ticks_cpu_enabled;
|
||||
void mp_hal_ticks_cpu_enable(void);
|
||||
static inline mp_uint_t mp_hal_ticks_cpu(void) {
|
||||
if (!mp_hal_ticks_cpu_enabled) {
|
||||
mp_hal_ticks_cpu_enable();
|
||||
}
|
||||
return DWT->CYCCNT;
|
||||
}
|
||||
|
||||
// C-level pin HAL
|
||||
#include "stmhal/pin.h"
|
||||
#define mp_hal_pin_obj_t const pin_obj_t*
|
||||
|
|
Loading…
Reference in New Issue