测试代码高亮-CSDN默认皮肤

01  //===========================================================================//
02  //                                                                           //
03  // 文件:  MAIN.C                                                            //
04  // 说明:  BW-DK5438开发板单片机SPI端口实验程序                              //
05  //         设置SPI端口工作模式,通过SPI端口发送数据                          //
06  //         可在P3.1/P3.3端口观察数据、时钟波形                               //
07  // 编译:  IAR Embedded Workbench IDE for MSP430 v4.21                       //
08  // 版本:  v1.1                                                              //
09  // 编写:  JASON.ZHANG                                                       //
10  // 版权:  北京拓普博维电子技术有限公司                                      //
11  //                                                                           //
12  //===========================================================================//
13 
14  #include "msp430x54x.h"
15  #include <stdlib.h>
16  #include <stdio.h>
17  #include <string.h>
18  #include "PIN_DEF.H"
19 
20  #define  FLL_FACTOR     649                                 // FLL_FACTOR: DCO倍频系数    
21  char   event , RXBuffer [ 2 ]                                  ;
22 
23 
24  //***************************************************************************//
25  //                                                                           //
26  //                 初始化主时钟: MCLK = XT1×(FLL_FACTOR+1)                  //
27  //                                                                           //
28  //***************************************************************************//
29  void Init_CLK( void)
30  {
31    WDTCTL     = WDTPW + WDTHOLD                            ; // 关看门狗
32    P7SEL     |= 0x03                                       ; // 端口选择外部低频晶振XT1
33    UCSCTL6   &=~ XT1OFF                                     ; // 使能外部晶振
34    UCSCTL6   |= XCAP_3                                     ; // 设置内部负载电容
35    UCSCTL3   |= SELREF_2                                   ; // DCOref = REFO
36    UCSCTL4   |= SELA_0                                     ; // ACLK   = XT1  
37    __bis_SR_register( SCG0)                                 ; // 关闭FLL控制回路
38    UCSCTL0     = 0x0000                                     ; // 设置DCOx, MODx
39    UCSCTL1     = DCORSEL_7                                  ; // 设置DCO振荡范围
40    UCSCTL2     = FLLD__1 + FLL_FACTOR                       ; // Fdco = ( FLL_FACTOR + 1)×FLLRef = (649 + 1) * 32768 = 21.2992MHz
41    __bic_SR_register( SCG0)                                 ; // 打开FLL控制回路                                                            
42    __delay_cycles( 1024000)                                 ;
43    do
44    {
45      UCSCTL7 &= ~( XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志                                                            
46      SFRIFG1 &= ~ OFIFG                                     ;
47    } while( SFRIFG1 & OFIFG)                                   ; // 检测振荡器错误标志
48  }
49 
50  //***************************************************************************//
51  //                                                                           //
52  //  Init_Port(void): 设置IO端口                                              //
53  //                                                                           //
54  //***************************************************************************//
55  void Init_Port( void)
56  {
57    P5DIR   |= POWER                                         ; // 主电源
58    MAIN_POWER_ON                                           ;
59    P7DIR   |= LED_PWR                                       ; // 发光二极管电源
60    P7OUT   &=~ LED_PWR                                       ;
61    INTERNAL_PULL_UP                                        ; // 使能键盘端口内部上拉电阻
62    ROW_IN_COL_OUT                                          ; // 设置行输入,列输出0
63  }
64 
65  //***************************************************************************//
66  //                                                                           //
67  //  Init_SPI(void): 设置SPI端口                                              //
68  //                                                                           //
69  //***************************************************************************//
70  void Init_SPI( void)
71  {  
72    P8OUT     |= LCD_NCS                                     ; // SPI端口复用,DisableTFT液晶端口
73    P8DIR     |= LCD_NCS                                     ;
74    P3OUT     |= NCS25                                       ;
75    P3DIR     |= NCS25                                       ;
76    P3SEL     &= 0xF0                                        ;
77    P3SEL     |= 0x0E                                        ; // // P3.1/2/3功能选择为SPI
78    UCB0CTL1 |= UCSWRST                                     ; // 复位SPI状态机
79    UCB0CTL0 |= UCMST + UCSYNC + UCCKPL + UCMSB                   ; // 3-pin, 8-bit SPI master, Clock polarity high, MSB
80    UCB0CTL1 |= UCSSEL_2                                    ; // 选择SCK参考源为SMCLK
81    UCB0BR0   = 0x02                                        ; // SCK = SMCK/2
82    UCB0BR1   = 0                                           ;
83    UCB0CTL1 &=~ UCSWRST                                     ; // SPI状态机使能
84  }
85 
86 
87  void main( void )
88  {
89    WDTCTL = WDTPW + WDTHOLD                                ;
90    Init_CLK()                                              ;
91    Init_Port()                                             ;
92    Init_SPI()                                              ;
93    for(;;)
94    {
95      UCB0TXBUF = 0x55                                     ;
96      __delay_cycles( 280)                                  ;
97    }
98  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值