更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
hal_timer.h 文件参考

浏览源代码.

函数

UINT32 HalClockFreqRead (VOID)
 
VOID HalClockFreqWrite (UINT32 freq)
 
VOID HalClockStart (VOID)
 
VOID HalClockIrqClear (VOID)
 
VOID HalClockInit (VOID)
 
UINT64 HalClockGetCycles (VOID)
 
VOID HalDelayUs (UINT32 usecs)
 
UINT32 HalClockGetTickTimerCycles (VOID)
 
UINT64 HalClockTickTimerReload (UINT64 cycles)
 
UINT32 HrtimersInit (VOID)
 
VOID HrtimerClockIrqClear (VOID)
 
VOID HrtimerClockStart (UINT32 period)
 
VOID HrtimerClockStop (VOID)
 
UINT32 HrtimerClockValueGet (VOID)
 
VOID HrtimerClockInit (VOID)
 

函数说明

◆ HalClockFreqRead()

UINT32 HalClockFreqRead ( VOID  )

在文件 arm_generic_timer.c95 行定义.

96{
97 return READ_TIMER_REG32(TIMER_REG_CNTFRQ);
98}
这是这个函数的调用关系图:

◆ HalClockFreqWrite()

VOID HalClockFreqWrite ( UINT32  freq)

在文件 arm_generic_timer.c100 行定义.

101{
102 WRITE_TIMER_REG32(TIMER_REG_CNTFRQ, freq);
103}
这是这个函数的调用关系图:

◆ HalClockGetCycles()

UINT64 HalClockGetCycles ( VOID  )

在文件 arm_generic_timer.c125 行定义.

126{
127 UINT64 cntpct;
128
129 cntpct = READ_TIMER_REG64(TIMER_REG_CT);
130 return cntpct;
131}
long unsigned int UINT64
Definition: los_typedef.h:66
这是这个函数的调用关系图:

◆ HalClockGetTickTimerCycles()

UINT32 HalClockGetTickTimerCycles ( VOID  )

在文件 arm_generic_timer.c169 行定义.

170{
171 UINT64 cval = TimerCvalRead();
172 UINT64 cycles = HalClockGetCycles();
173
174 return (UINT32)((cval > cycles) ? (cval - cycles) : 0);
175}
UINT64 HalClockGetCycles(VOID)
STATIC_INLINE UINT64 TimerCvalRead(VOID)
unsigned int UINT32
Definition: los_typedef.h:57
函数调用图:

◆ HalClockInit()

VOID HalClockInit ( VOID  )

在文件 arm_generic_timer.c133 行定义.

134{
135 UINT32 ret;
136
137 g_sysClock = HalClockFreqRead();//读取CPU的时钟频率
138 ret = LOS_HwiCreate(OS_TICK_INT_NUM, MIN_INTERRUPT_PRIORITY, 0, OsTickHandler, 0);//创建硬中断定时器
139 if (ret != LOS_OK) {
140 PRINT_ERR("%s, %d create tick irq failed, ret:0x%x\n", __FUNCTION__, __LINE__, ret);
141 }
142}
UINT32 HalClockFreqRead(VOID)
LITE_OS_SEC_DATA_INIT UINT32 g_sysClock
系统时钟,是绝大部分部件工作的时钟源,也是其他所有外设的时钟的来源
Definition: los_tick.c:40
LITE_OS_SEC_TEXT_INIT UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum, HWI_PRIOR_T hwiPrio, HWI_MODE_T hwiMode, HWI_PROC_FUNC hwiHandler, HwiIrqParam *irqParam)
创建一个硬中断 中断创建,注册中断号、中断触发模式、中断优先级、中断处理程序。中断被触发时, handleIrq会调用该中断处理程序
Definition: los_hwi.c:429
LITE_OS_SEC_TEXT VOID OsTickHandler(VOID)
Handle the system tick timeout.
Definition: los_tick.c:50
函数调用图:
这是这个函数的调用关系图:

◆ HalClockIrqClear()

VOID HalClockIrqClear ( VOID  )
这是这个函数的调用关系图:

◆ HalClockStart()

VOID HalClockStart ( VOID  )

在文件 arm_generic_timer.c144 行定义.

145{
146 HalIrqUnmask(OS_TICK_INT_NUM);
147
148 /* triggle the first tick */
149 TimerCtlWrite(0);
150 TimerTvalWrite(OS_CYCLE_PER_TICK);
151 TimerCtlWrite(1);
152}
STATIC_INLINE VOID TimerTvalWrite(UINT32 tval)
STATIC_INLINE VOID TimerCtlWrite(UINT32 cntpCtl)
VOID HalIrqUnmask(UINT32 vector)
撤销中断屏蔽
Definition: gic_v2.c:86
函数调用图:
这是这个函数的调用关系图:

◆ HalClockTickTimerReload()

UINT64 HalClockTickTimerReload ( UINT64  cycles)

在文件 arm_generic_timer.c177 行定义.

178{
179 HalIrqMask(OS_TICK_INT_NUM);
180 HalIrqClear(OS_TICK_INT_NUM);
181
182 TimerCtlWrite(0);
184 TimerCtlWrite(1);
185
186 HalIrqUnmask(OS_TICK_INT_NUM);
187 return cycles;
188}
STATIC_INLINE VOID TimerCvalWrite(UINT64 cval)
VOID HalIrqClear(UINT32 vector)
Definition: gic_v2.c:104
VOID HalIrqMask(UINT32 vector)
屏蔽中断
Definition: gic_v2.c:77
函数调用图:
这是这个函数的调用关系图:

◆ HalDelayUs()

VOID HalDelayUs ( UINT32  usecs)

在文件 arm_generic_timer.c154 行定义.

155{
156 UINT64 cycles = (UINT64)usecs * g_sysClock / OS_SYS_US_PER_SECOND;
157 UINT64 deadline = HalClockGetCycles() + cycles;
158
159 while (HalClockGetCycles() < deadline) {
160 __asm__ volatile ("nop");
161 }
162}
函数调用图:
这是这个函数的调用关系图:

◆ HrtimerClockInit()

VOID HrtimerClockInit ( VOID  )

◆ HrtimerClockIrqClear()

VOID HrtimerClockIrqClear ( VOID  )

◆ HrtimerClockStart()

VOID HrtimerClockStart ( UINT32  period)

◆ HrtimerClockStop()

VOID HrtimerClockStop ( VOID  )

◆ HrtimerClockValueGet()

UINT32 HrtimerClockValueGet ( VOID  )

◆ HrtimersInit()

UINT32 HrtimersInit ( VOID  )