[FACE=Courier New][FACE=宋体][LINE-HEIGHT=19px][SIZE=14px]串口同步通讯的声明:[/FACE][/LINE-HEIGHT][/FACE][/SIZE][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]// 初始化MSP430的SPI[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]// SPI时钟选择DCOCLK最高频率,在8M-10M之间;因外部XT2=8M晶振,故选用外部晶振[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]void Init_SPI(void)[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]{[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]// BCSCTL1_ |= RSEL0 + RSEL1 + RSEL2; // 选择最高标称频率[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]// DCOCTL_ |= DCO0 + DCO1 + DCO2; [/FACE][/LINE-HEIGHT] // Set max DCO frequency [/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]// BCSCTL2_ &= ~SELS; [/FACE][/LINE-HEIGHT] // SMCLK选择DCOCLK时钟源[/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]
[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master,Software reset enable[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0TCTL = SSEL0 + SSEL1 + STC; // 在USCLK时钟的下降沿输出,上升沿锁存[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0BR0 = 0x002; // SPICLK = SMCLK/2[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0BR1 = 0x000;[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0MCTL = 0x000; // 同步通信时不需要调整寄存器,使用时最好全写0[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] ME1 = USPIE0; // SPI模块0允许[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] U0CTL &= ~SWRST; // SPI允许[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] [/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] // IE1 |= URXIE0; // 接收中断允许[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px] // _EINT(); // 允许中断 [/FACE][/LINE-HEIGHT][/COLOR][/SIZE][/P][FACE=Courier New][COLOR=#3352cc][LINE-HEIGHT=19px][SIZE=14px]
}[/FACE][/LINE-HEIGHT][/COLOR][/SIZE][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]已经查了好多遍,我认为声明是没有错误的。。[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]
[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]然后用串口通讯发送一个字节:[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][FACE=monospace][SIZE=14px] [/FACE][/SIZE][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=monospace][COLOR=#3333cc] U0TXBUF =WriteData;// Send the byte [/FACE][/SIZE][/LINE-HEIGHT][/BGCOLOR][/SIZE][/FACE][/COLOR][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=monospace][COLOR=#3333cc] while(!(U0TCTL & TXEPT)); // TX Buffer is empty ?[/FACE][/SIZE][/LINE-HEIGHT][/BGCOLOR][/SIZE][/FACE][/COLOR][/P][P][FACE=宋体][SIZE=9pt][/FACE][/SIZE][/P][P][FACE=宋体][SIZE=9pt][/FACE][/SIZE][/P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px]while(!(U0TCTL & TXEPT)); [COLOR=#e61a94][b]程序在这句 死循环!!!!![/b][/FACE][/SIZE][/BGCOLOR][/SIZE][/COLOR][LINE-HEIGHT=22px][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][/FACE][/SIZE][P][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][/LINE-HEIGHT][/BGCOLOR][/SIZE][/P][P][/P][P][/P][P][/P][P][ALIGN=left][LINE-HEIGHT=22px][P][LINE-HEIGHT=normal][/LINE-HEIGHT][/P][P][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]这个地方U0TCTL的TXEPT位 跟踪发现,总是0,也就是说 总是有数据,在没有U0TXBUF = WriteData时候也是0[/FACE][/LINE-HEIGHT][/P][/LINE-HEIGHT][/ALIGN][/P][P][/P][P][/P][P][/P][/BGCOLOR][/SIZE][/LINE-HEIGHT][P][FACE=宋体][SIZE=9pt][/FACE][/SIZE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]
[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]个人感觉,U0TCTL的TXEPT位 应该在未发送数据前为1(空),然后U0TXBUF有值时 该位变为0,发送完毕,该位变为1;[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif]求高手指点啊,我的理解有问题么,然后没问题的话 我这会是什么问题呢?[/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][FACE=Helvetica, Arial, sans-serif]
[/FACE][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif][/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][BGCOLOR=rgb][SIZE=14px][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif][/FACE][/LINE-HEIGHT][/SIZE][/BGCOLOR][/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt][/FACE][/SIZE][/P][P][FACE=宋体][SIZE=9pt][/FACE][/SIZE][/P][P][FACE=宋体][SIZE=9pt][LINE-HEIGHT=normal][FACE=Helvetica, Arial, sans-serif][/FACE][/LINE-HEIGHT][/SIZE][/FACE][/P][P][/P] |