完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在用MSP430F155连接一个Flash存储器SST25VF016B,通过SPI同步串行通信方式实现通信。但是现在程序不能发送和接收(不能进入中断),各位哥哥给看看有什么问题?
以下是SPI程序: #define CE0 P5OUT&=~BIT3 #define CE1 P5OUT|=BIT3 unsigned char RxFlag=0; unsigned char TxFlag=0; void SPI_init() { P5DIR |=BIT3; //P5.3 CE引脚 P5DIR |=BIT2; P5OUT |=BIT2;//WP引脚 P5DIR |=BIT0; //P5.0 Hold引脚 P5OUT |=BIT0; P5DIR |=BIT1; //P5.1 Vcc引脚 P5OUT |=BIT1; P3SEL |=BIT1+BIT2+BIT3; //SIMO SOMI UCLK U0CTL =CHAR+SYNC+MM+SWRST; //8位SPI,SPI模式,主机模式,保持在复位状态 U0TCTL =SSEL1+STC; //时钟源为SMCLK,3线模式; U0BR0 =0x002; U0BR1 =0x000; //波特率设定 U0MCTL =0x000; //调整寄存器没有调整; ME1 =USPIE0; //打开SPI使能 U0CTL &=~SWRST; //关复位 U0IE |= URXIE0 + UTXIE0; WRSR(0x00); //Flash去保护 } void SPI_send(unsigned char byte) //发送一个数据 { while(TxFlag == 0); TxFlag=0; //while((IFG1 & UTXIFG0) == 0); //等待发送数据缓存是否准备好接收新数据 TXBUF0=byte; //发送一个字节; } unsigned char SPI_get() //接收一个数据 { unsigned char in; while(RxFlag==0); //等待接收完成 RxFlag=0; in=U0RXBUF; return in; } #pragma vector=USART0RX_VECTOR __interrupt void UartRx() { RxFlag=1; } #pragma vector=USART0TX_VECTOR __interrupt void UartTx () { TxFlag=1; } 以下是时钟初始程序: WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 BCSCTL1 |=DIVA_2; //ACLK 4分频 设置时钟 BCSCTL1 &=~XT2OFF; //XT2有效 while((IFG1&OFIFG)==1) //当OFIFG等于0的时候结束,说明晶体振荡器正常工作了 { IFG1 &=~OFIFG; //清除晶体振荡器失效标志OFIFG标志 delay(); //等待50us } BCSCTL2 |=SELM1; //MCLK BCSCTL2 |=SELS; //SMCLK5 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
3036个成员聚集在这个小组
加入小组2935 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3613 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2346 浏览 1 评论
4810 浏览 1 评论
2576 浏览 1 评论
1335浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3614浏览 2评论
2937浏览 1评论
1522浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 15:33 , Processed in 1.610255 second(s), Total 61, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号