?? tms470r1a256_sci2_02.c
字號(hào):
//*******************************************************************************
// TMS470 Demo - SCI2 19200 Transmit String
//
// Description; Transmit the string "Hello World" using SCI2. The RTI tap
// interrupt enables the SCI2 TX interrupt allowing transmission of string.
// At completion of string transmission, the SCI2 ISR disables further
// transmission.
// RTI tap divides ICLK/2^20
// ACLK = ICLK = SYSCLK = MCLK = 12MHz
// Baud rate divider with 12MHz ICLKL @19200 = 12MHz/(8*19200)-1 = 0x4D
//
// //*An external 12Mhz XTAL on OSCIN OSCOUT with proper load caps required*//
//
// TMS-FET470A256
// -----------------
// /|\| OSCIN|-
// | | | 12MHz
// --|PLLDIS OSCOUT|-
// | |
// | SCI2TX|------------>
// | | 19200 - 8N1
// | SCI2RX|<------------
//
// M.Buccini/A.Dannenberg
// Texas Instruments, Inc
// January 2005
// Built with IAR Embedded Workbench Version: 4.20A
//******************************************************************************
#include <intrinsic.h>
#include "iotms470r1a256.h"
#include "tms470r1a256_bit_definitions.h"
const char string1[] = { "Hello World\r\n" };
unsigned int i = 0;
void main(void)
{
PCR = CLKDIV_1; // ICLK = SYSCLK
PCR |= PENABLE; // enable peripherals
SCI2CTL3 &= ~SW_NRESET; // Reset SCI state machine
SCI2CCR = TIMING_MODE_ASYNC + CHAR_8; // Async, 8-bit Char
SCI2CTL1 |= RXENA; // RX enabled
SCI2CTL2 |= TXENA; // TX enabled
SCI2CTL3 |= CLOCK; // Internal clock
SCI2LBAUD = 0x4d; // 12MHz/(8*19200)-1
SCI2PC2 |= RX_FUNC; // SCIRX is the SCI receive pin
SCI2PC3 |= TX_FUNC; // SCITX is the SCI transmit pin
SCI2CTL3 |= SW_NRESET; // Configure SCI2 state machine
RTIPCTL = 1; // Preload modulo /1
RTICNTL |= TAPENA; // Enable TAP interrupt
REQMASK = (1 << CIM_SCI2TX)+(1 << CIM_TAP); // Enable SCI2TX, RTI tap chan's
__enable_interrupt(); // Enable interrupts
for (;;) {}
}
//------------------------------------------------------------------------------
// TMS470R1A256 Standard Interrupt Handler
//------------------------------------------------------------------------------
#pragma vector = IRQV
__irq __arm void irq_handler(void)
{
switch ((0xff & IRQIVEC) - 1)
{
case CIM_TAP:
{
i = 0;
SCI2TXBUF = string1[i++]; // First char to TX buffer
SCI2CTL3 |= TX_ACTION_ENA; // Enable TX interrupt
RTICNTL &= ~TAPFLAG; // Clear TAP flag
break;
}
case CIM_SCI2TX:
{
if (i < sizeof string1-1)
SCI2TXBUF = string1[i++];
else
SCI2CTL3 &= ~ TX_ACTION_ENA; // Disable TX interrupt
break;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -