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

📄 spi.c

📁 MSP340例程 适合入门 欢迎大家下载共享
💻 C
字号:
/**********************************************************
*   文件名称:
*           
*  文件说明:
*          模块操作MSP430的USART的SPI通讯模块,
*       本实验需要使用外围芯片HC164、HC165
*       实验从HC165读取数据,向HC164写数据
*       HC164、HC165的有关知识请参考datasheet
*
***********************************************************/

#include  <msp430x44x.h>

/**********************************************************
;
;                          MSP430F449             
;                       -----------------
;                   /|\|              XIN|-  
;                    | |                 |     ^      HC164
;          HC165     --|RST          XOUT|-    |  -------------
;        ----------    |                 |     |-|/CLR,B       |  8
;    8  |      /LD|<---|P3.0   SIMO0/P3.1|------>|A          Qx|--\->
;   -\->|A-H   CLK|<---|P3.3/UCLK0 - P3.3|------>|CLK          |
;     |-|INH    QH|--->|P3.2/SOMI0       |       |             |    
;     |-|SER      |    |                 |       |             | 
;     - |         |    |                 |       |             |
;
******************************************************************/

/**************  程序初始化 *****************************************/
void init_SPI()
{
    P3SEL |= 0x0E;                          //P1.1~3 置位外围模块
    P3DIR |= 0x01;                          //P3.0 输出模式
    ME1 |= USPIE0;                          // 使能 USART0 SPI 模式
    UTCTL0 = CKPH+SSEL1+SSEL0+STC ;          // 设置 SMCLK 和 3-pin 模式;
    UCTL0  = CHAR + SYNC + MM;              //设置 8-bit 字符模式
    UBR00 = 0x02;                           //设置波特率
    UBR10 = 0x00;
    UMCTL0 = 0x00;
      
}

/**********************************************************
*
*           转发数据
*  
***********************************************************/
void forward_Data()
{
     while((IFG1 & UTXIFG0)!= UTXIFG0);     //检测是否TX发送缓存Ready
     P3OUT &= 0xFE;                         //锁存HC165的数据
     P3OUT |= 0x01;
     TXBUF0 = RXBUF0;                       //把HC165的数据发到HC164
}
void main()
{
     unsigned int tmp;                      //延时变量
     WDTCTL = WDTHOLD + WDTPW;              //关看门狗
     init_SPI();                            //初始化SPI
     while(1)
     {
       forward_Data();                      // 交换数据
           
       for(tmp=0;tmp<0xffff;tmp++);         // 延迟,此间可以设置断点
    }           
}

⌨️ 快捷键说明

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