📄 main.c
字号:
/* main.c - Fixed Interval Timer interrupt example */
/* Rev 1.0 April 19, 2004 S.Mihalik, Copyright Freescale, 2004. All Rights Reserved */
/* Rev 1.1 Sept 1, 2004 SM - simplfied, syntax changes */
/* Rev 1.2 May 15 2006 SM- Changed GPIO205 to GPIO195 for use in 324, 208 packages */
/* Rev 1.3 Aug 12 2006 SM - Changed variable i to volatile */
/* Rev 1.4 Jun 18 2007 SM - Passed spr IVPR value from link file, changed GPIO pin */
/* and f0r MPC551x removed code to load spr IVOR11 */
/* Notes: */
/* 1. MMU not initialized; must be done by debug scripts or BAM */
/* 2. SRAM not initialized; must be done by debug scripts or in crt0 type file */
#include "mpc563m.h" /* Use proper include file such as mpc5510.h or mpc5554.h */
extern IVOR11Handler(); /* Needed for MPC555x only */
extern uint32_t __IVPR_VALUE; /* Interrupt Vector Prefix value from link file */
uint32_t FITctr = 0; /* Counter for Fixed Interval Timer interrupts */
asm void initIrqVectors(void) {
lis r0, __IVPR_VALUE@h /* IVPR value is passed from link file */
ori r0, r0, __IVPR_VALUE@l /* Note: IVPR lower bits are unused in MPC555x */
mtivpr r0
/* The following two lines are required for MPC555x, and are not used for MPC551x */
li r0, IVOR11Handler@l /* IVOR11 = lower half of handler address */
mtivor11 r0
}
asm void initFIT(void) {
li r0, 0 /* Initialize time base to 0 */
mttbu r0
mttbl r0
lis r0, 0x0181 /* Enable FIT interrupt and set */
ori r0, r0, 0x4000 /* FP=0, FPEXT=A for 0.7 sec timeout */
mttcr r0
li r0, 0x4000 /* Enable Time Base and Decrementer (set TBEN) */
mthid0 r0
}
void main (void) {
volatile uint32_t i = 0; /* Dummy idle counter */
initIrqVectors(); /* Initialize interrupt vectors registers*/
initFIT(); /* Initialize FIT routine */
SIU.PCR[114].R= 0x0303; /* Initialize GPIO as output. */
asm (" wrteei 1"); /* Enable external interrupts (INTC, DEC, FIT) */
while (1) { i++; } /* Loop forever */
}
asm void ClrFitFlag(void) {
lis r0, 0x0400
mttsr r0 /* Write "1" clear FIT Interrupt Status flag */
}
void FitISR(void) {
FITctr++; /* Increment interrupt counter */
SIU.GPDO[114].R = ~SIU.GPDI[114].R; /* Toggle GPIO output */
ClrFitFlag(); /* Clear FIT's flag */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -