Skip to content

Commit 4529e9a

Browse files
authored
Merge pull request #4198 from mysterywolf/gettick
[bug] add function rt_tick_get_millisecond() and fix bug #4012
2 parents 32cf867 + a1f4d93 commit 4529e9a

File tree

6 files changed

+25
-4
lines changed

6 files changed

+25
-4
lines changed

bsp/stm32/libraries/HAL_Drivers/drv_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void SysTick_Handler(void)
5858

5959
uint32_t HAL_GetTick(void)
6060
{
61-
return rt_tick_get() * 1000 / RT_TICK_PER_SECOND;
61+
return rt_tick_get_millisecond();
6262
}
6363

6464
void HAL_SuspendTick(void)

components/net/lwip-1.4.1/src/arch/sys_arch.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
*/
3333

3434
#include <rtthread.h>
35+
#include <rthw.h>
3536

3637
#include "lwip/sys.h"
3738
#include "lwip/opt.h"
@@ -617,7 +618,7 @@ u32_t sys_jiffies(void)
617618

618619
u32_t sys_now(void)
619620
{
620-
return rt_tick_get() * (1000 / RT_TICK_PER_SECOND);
621+
return rt_tick_get_millisecond();
621622
}
622623

623624
#ifdef RT_LWIP_PPP

components/net/lwip-2.0.2/src/arch/sys_arch.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
*/
3333

3434
#include <rtthread.h>
35+
#include <rthw.h>
3536

3637
#include "lwip/sys.h"
3738
#include "lwip/opt.h"
@@ -627,7 +628,7 @@ u32_t sys_jiffies(void)
627628

628629
u32_t sys_now(void)
629630
{
630-
return rt_tick_get() * (1000 / RT_TICK_PER_SECOND);
631+
return rt_tick_get_millisecond();
631632
}
632633

633634

components/net/lwip-2.1.2/src/arch/sys_arch.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
*/
3434

3535
#include <rtthread.h>
36+
#include <rthw.h>
3637

3738
#include "lwip/sys.h"
3839
#include "lwip/opt.h"
@@ -641,7 +642,7 @@ u32_t sys_jiffies(void)
641642

642643
u32_t sys_now(void)
643644
{
644-
return rt_tick_get() * (1000 / RT_TICK_PER_SECOND);
645+
return rt_tick_get_millisecond();
645646
}
646647

647648
#if MEM_OVERFLOW_CHECK || MEMP_OVERFLOW_CHECK

include/rtthread.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ rt_tick_t rt_tick_get(void);
7777
void rt_tick_set(rt_tick_t tick);
7878
void rt_tick_increase(void);
7979
rt_tick_t rt_tick_from_millisecond(rt_int32_t ms);
80+
rt_tick_t rt_tick_get_millisecond(void);
8081

8182
void rt_system_timer_init(void);
8283
void rt_system_timer_thread_init(void);

src/clock.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* 2010-07-13 Bernard fix rt_tick_from_millisecond issue found by kuronca
1414
* 2011-06-26 Bernard add rt_tick_set function.
1515
* 2018-11-22 Jesven add per cpu tick
16+
* 2020-12-29 Meco Man add function rt_tick_get_millisecond()
1617
*/
1718

1819
#include <rthw.h>
@@ -116,5 +117,21 @@ rt_tick_t rt_tick_from_millisecond(rt_int32_t ms)
116117
}
117118
RTM_EXPORT(rt_tick_from_millisecond);
118119

120+
/**
121+
* This function will provide the passed millisecond from boot.
122+
*
123+
* @return passed millisecond from boot
124+
*/
125+
RT_WEAK rt_tick_t rt_tick_get_millisecond(void)
126+
{
127+
#if 1000 % RT_TICK_PER_SECOND == 0u
128+
return rt_tick_get() * (1000u / RT_TICK_PER_SECOND);
129+
#else
130+
#warning "rt-thread cannot provide a correct 1ms-based tick any longer,\
131+
please redefine this function in another file by using a high-precision hard-timer."
132+
return 0;
133+
#endif
134+
}
135+
119136
/**@}*/
120137

0 commit comments

Comments
 (0)