我用MSP430F169通过SPI控制OLED,我用 while (!(IFG1 & UTXIFG0)); 无法判断数据是否发送完成。要在后面加一段延时OLED才正常工作。
下面是程序:
配置程序
ME1 |= USPIE0; // Enable USART0 SPI mode
UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master **SWRST**
UTCTL0 |= 0X80 + SSEL1 + 0x02; // SMCLK, 3-pin mode
U0BR0 = 0x03; // UCLK/2
U0BR1 = 0x00; // 0
UMCTL0 = 0x00; // no modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
P3SEL |=0x0e; // P3.1-3 SPI option select
P3DIR |=0x01; // P3.0 output direction
发送数据,oled正常工作
while (!(IFG1 & UTXIFG0));
TXBUF0=dat;
a=9;
while(a--);
发送数据。OLED不正常工作
while (!(IFG1 & UTXIFG0));
TXBUF0=dat;
// a=9;
// while(a--);
感觉while (!(IFG1 & UTXIFG0));这句话没有起作用啊,网上及官方例程都是这样写的,但是我的却不能真长工作。