📄 main.c
字号:
/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2007
*
* File name : main.c
* Description : Main module
*
* History :
* 1. Date : 9, January 2007
* Author : Stanimir Bonev
* Description : Create
*
* This example project shows how to use the IAR Embedded Workbench for ARM
* to develop code for the Olimex LPC-H288x header board. It shows
* basic use of I/O, timer and the interrupt controllers.
* It starts by togging LED(P2.1).
*
*
* $Revision: 1.0 $
**************************************************************************/
#include <intrinsics.h>
#include <stdio.h>
#include <NXP/iolpc2888.h>
#include "lpc288x_low_init.h"
#if defined(XFLASH_INIT)
#define TIMER0_TICK_PER_SEC 20
#elif defined(IFLASH_BOOT)
#define TIMER0_TICK_PER_SEC 10
#else
#define TIMER0_TICK_PER_SEC 5
#endif
#define TIMER0_IN_FREQ 12000000
/*************************************************************************
* Function Name: Timer0IntrHandler
* Parameters: none
*
* Return: none
*
* Description: Timer 0 interrupt handler
*
*************************************************************************/
void Timer0IntrHandler (void)
{
T0CLR = 0; // clear timer interrupt
MODE0_2_bit.P2_1 ^= 1; // toggle P2.1
}
/*************************************************************************
* Function Name: main
* Parameters: none
*
* Return: none
*
* Description: main
*
*************************************************************************/
int main(void)
{
// Init led D9 pin (P2.1)
MODE1_2_bit.P2_1 = 1;
MODE0_2_bit.P2_1 = 1;
// Init Time0
T0CTRL_bit.TENAB = 0; // disable counting
T0CTRL_bit.TMODE = 1; // enable auto reload from T0LOAD register
T0CTRL_bit.PRESCALE = 2; // prescaler = CGU clock rate / 256
// set timer 0 period
T0LOAD = (TIMER0_IN_FREQ)/(256 * TIMER0_TICK_PER_SEC);
T0CLR = 0; // clear timer pending interrupt
// init timer 0 interrupt
IrqTable[VIC_TIMER0].pIntrFunc = Timer0IntrHandler;
IrqTable[VIC_TIMER0].IntrPriority = 1;
INT_REQ5 = (1UL << 29) | // clear software interrupt
(1UL << 28) | // Update Priority
(1UL << 27) | // Update target
(1UL << 26) | // Update interrupt enable
(1UL << 25) | // Update interrupt active level
(1UL << 16) | // INTEN
1; // PRIO
T0CTRL_bit.TENAB = 1; // enable timer 0 counting
__enable_interrupt();
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -