⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tms470r1b1m_spi_08.c

📁 TMS-FET470B1M C Examples
💻 C
字号:
//*****************************************************************************
//  TMS470 Demo -  SPI Sample Program slave 4pin int
//
// This is a SPI 4 pin - Slave Mode - Interrupt configuration. Data is received
// from SPI 1 After recieving SPI data an interrupt is generated
// that lights leds on the IAR TMS470R1VF346 EVM. This is a 4 pin configuration
// using SIMO SPICLK SOMI SCS pins. Clock speed 12 Mhz.
//
//
//                              TMS-FET470B1M
//                             _________________
//                            |                 |
//                         /|\|            OSCIN|-
//                          | |                 | 7.5MHz
//                          --|PLLDIS     OSCOUT|-
//                            |                 |
//                         ---|SPICLK       SIMO|---
//                            |                 |
//                         ---|SCS          SOMI|---
//                            |                 |
//                            |             HET0|--- LED1
//                            |             ... |
//                            |            HET31|--- LED16
//                            |_________________|
//
//
//
//  J. Mangino / L.Westlund
//  Texas Instruments, Inc
//  August 12 2005
//  Built with IAR Embedded Workbench Version: 4.30A
//******************************************************************************

#include <intrinsic.h>
#include "iotms470r1b1m.h"
#include "tms470r1b1m_bit_definitions.h"

  unsigned int datp;
  int* ip;

void TMS470LedSet(unsigned int mask)
{
  GIODOUTE = mask & 0xFF;

  HETDOUT = (mask & 0xFF00)>>8;

}

void SPI1_irq_handler()
{
   datp = SPI1BUF;
   TMS470LedSet(datp);
}

//------------------------------------------------------------------------------
// TMS470R1A256 Standard Interrupt Handler
//------------------------------------------------------------------------------

__irq __arm void irq_handler(void)
{
   switch((0xff & IRQIVEC)-1)
  {
   case CIM_SPI1  : SPI1_irq_handler(); break;
  }
}


void main(void)
{

// Set up peripheral registers.
  // First disable interrupts.
  __disable_interrupt();

    // Setup system.
  PCR = CLKDIV_4;                               // ICLK = SYSCLK/4
  PCR |= PENABLE;                               // enable peripherals

  REQMASK=(1 << CIM_SPI1);                      // Enable SPI Interrupt mask

  HETDIR  = 0xff;                               // Set HET as GIO outputs
  HETDOUT = 0xff;                               // Output on
  HETDOUT = 0x00;                               // Output off
  HETDOUT = 0xff;                               // Output on
  GIODIRE = 0xff;                               // Set GIO outputs
  GIODOUTE =0xff;                               // Output on

  // SPI 1 Setup

  SPI1CTRL1= CHARLEN_16 + PRESCALE_1;           // char len = 16 prescale = 1 spi baud =Iclk/2
  SPI1CTRL2 = 0x00;                             // Slave mode
  SPI1CTRL3 = RX_INT_EN;                        // Enable SPI1 Interrupt
  SPI1PC6= SOMI_FUN + SIMO_FUN + CLK_FUN + SCS_FUN ;    // SIMO SPICLK ENA enables
  SPI1CTRL2 |= SPIEN;                           // Enable  SPIs

  datp = SPI1BUF;                               // Dummy Read to clear buffer

  __enable_interrupt();                         // Enable Interrupts

  // Loop forever.
  while (1);

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -