📄 tms470r1b1m_rti_01.c
字号:
//*******************************************************************************
// TMS470 Demo - RTI Interrupts From TAP, CMP1 and CMP2
//
// Description; Service TAP, CMP1 and CMP2 interrupts and toggle Pin HET0,
// HET12 and HET31 in response. Software adds offset to CMP1 and CMP2 to
// maintain intervals.
//
// SYSCLK = MCLK = ACLK = 8 x 7.3728MHz = 58.9824MHz
// ICLK = SYSCLK / 2 = 29.4912MHz
//
// //*An external 7.3728MHz XTAL with proper load caps is required*//
//
// TMS-FET470B1M
// -----------------
// | OSCIN|-
// | | 7.3728MHz
// +--|PLLDIS OSCOUT|-
// | | |
// -+- | HET0|---> LED Toggle
// | HET1|---> LED Toggle 2X
// | HET2|---> LED Toggle 4X
// | |
//
// A.Dannenberg / J.Mangino
// Texas Instruments, Inc
// July 29th 2005
// Built with IAR Embedded Workbench Version: 4.20A
//******************************************************************************
#include <intrinsic.h>
#include "iotms470r1b1m.h"
#include "tms470r1b1m_bit_definitions.h"
void main(void)
{
PCR = CLKDIV_2; // ICLK = SYSCLK / 2
GCR = ZPLL_CLK_DIV_PRE_1; // SYSCLK = 8 x fOSC
PCR |= PENABLE; // Enable peripherals
HETDIR = 0xFFFFFFFF; // HETx Output direction
HETDOUT = 0xFFFFFFFF;
RTIPCTL = 4; // Preload modulo counter
RTICNTL |= TAPENA; // Enable TAP interrupt
RTICMP1 = 1048576;
RTICMP2 = 524288;
RTICINT |= CMP1ENA + CMP2ENA; // Enable CMP1/CMP2 interrupts
REQMASK = (1 << CIM_TAP)+(1 << CIM_COMP1)+(1 << CIM_COMP2);
// Enable RTI TAP/CMP1/2 chan's
__enable_interrupt(); // Enable interrupts
for (;;) {}
}
//------------------------------------------------------------------------------
// TMS470R1B1M Standard Interrupt Handler
//------------------------------------------------------------------------------
__irq __arm void irq_handler(void)
{
switch ((0xff & IRQIVEC) - 1)
{
case CIM_TAP:
RTICNTL &= ~0x80; // Clear TAP flag
HETDOUT ^= 0x01; // Toggle using exclusive-OR
break;
case CIM_COMP1:
RTICMP1 += 1048576; // Add offset
RTICINT &= ~0x80; // Clear CMP1 flag
HETDOUT ^= 0x02; // Toggle using exclusive-OR
break;
case CIM_COMP2:
RTICMP2 += 524288; // Add offset
RTICINT &= ~0x40; // Clear CMP2 flag
HETDOUT ^= 0x04; // Toggle using exclusive-OR
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -