📄 clock-arch.c
字号:
/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2006
*
* File name : clock-arch.c
* Description : Implementation of architecture-specific clock functionality
*
* History :
* 1. Date : October 4, 2006
* Author : Stanimir Bonev
* Description : Create
*
* $Revision: 18137 $
**************************************************************************/
#include "clock-arch.h"
volatile clock_time_t Ticks;
/*************************************************************************
* Function Name: Tim0Handler
* Parameters: none
*
* Return: none
*
* Description: Timer 0 interrupt handler
*
*************************************************************************/
static
void Timer0IntrHandler (void)
{
++Ticks;
T0IR_bit.MR0INT = 1;
VICADDRESS = 0;
}
/*************************************************************************
* Function Name: clock_init
* Parameters: Int32U IntrPriority
*
* Return: none
*
* Description: Timer init
*
*************************************************************************/
void clock_init(Int32U IntrPriority)
{
Ticks = 0;
// Init Time0
PCONP_bit.PCTIM0 = 1; // Enable TMR0 clk
T0TCR_bit.CE = 0; // counting disable
T0TCR_bit.CR = 1; // set reset
T0TCR_bit.CR = 0; // release reset
T0CTCR_bit.CTM = 0; // Timer Mode: every rising PCLK edge
T0MCR_bit.MR0I = 1; // Enable Interrupt on MR0
T0MCR_bit.MR0R = 1; // Enable reset on MR0
T0MCR_bit.MR0S = 0; // Disable stop on MR0
// set timer 0 period
T0PR = 0;
T0MR0 = SYS_GetFpclk(TIMER0_PCLK_OFFSET)/(TICK_PER_SEC);
// init timer 0 interrupt
T0IR_bit.MR0INT = 1; // clear pending interrupt
VIC_SetVectoredIRQ(Timer0IntrHandler,IntrPriority,VIC_TIMER0);
VICINTENABLE |= 1UL << VIC_TIMER0;
T0TCR_bit.CE = 1; // counting Enable
}
/*************************************************************************
* Function Name: clock_init
* Parameters: none
*
* Return: none
*
* Description: The current clock time, measured in system ticks
*
*************************************************************************/
clock_time_t clock_time(void)
{
return(Ticks);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -