【分享】spi通信

2019-07-26 16:04发布

MSP430F149的两个USATR 在实现SPI通讯,采用中断接受

  1. #include  <msp430x14x.h>

  2. void main(void)
  3. {
  4.   volatile unsigned int i;

  5.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  6.   P1OUT = 0x00;                             // P1.0 setup for LED output
  7.   P1DIR |= 0x03;
  8.   P5SEL |= 0x0E;                            // P5.1,2,3 SPI option select
  9.   P5OUT &= ~0x01;
  10.   P5DIR |= 0x01;                            //Reset Slave
  11.   P5DIR &= ~0x01;
  12.   U1CTL = CHAR + SYNC + MM + SWRST;         // 8-bit, SPI, Master
  13.   U1TCTL = CKPL + SSEL1 + STC;              // Polarity, SMCLK, 3-wire
  14.   U1BR0 = 0x02;                             // SPICLK = SMCLK/2
  15.   U1BR1 = 0x00;
  16.   U1MCTL = 0x00;
  17.   ME2 |= USPIE1;                            // Module enable
  18.   U1CTL &= ~SWRST;                          // SPI enable
  19.   IE2 |= URXIE1 + UTXIE1;                   // RX and TX interrupt enable

  20.   for (i = 0xFFF; i > 0; i--);              // Time for slave to ready
  21.   _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
  22. }

  23. #pragma vector=USART1RX_VECTOR
  24. __interrupt void SPI1_rx (void)
  25. {
  26.   P1OUT = RXBUF1;                           // RXBUF1 to TXBUF1
  27. }

  28. #pragma vector=USART1TX_VECTOR
  29. __interrupt void SPI1_tx (void)
  30. {
  31.   unsigned int i;

  32.   i = P1IN;
  33.   i = i >> 4;
  34.   TXBUF1 = i;                               // Transmit character
  35. }
复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。