MSP430 串口发送始终停留在串口发送缓存是否空闲的判断语句上。

MSP430 串口发送始终停留在串口发送缓存是否空闲的判断语句上。,第1张

可能是串口初始化程序不对,串口未激活

给用个初始化程序看看

void usart0_inttialization()

{

P3SEL=0xf0;

P3DIR=0X00;

U0CTL&=~SWRST;

U0CTL=CHAR; //无校验,8位数据

U0RCTL=0;

U0BR0=0X18; //波特率19200

U0BR1=0x00;

U0MCTL=0; //;不用调整

U0TCTL=SSEL1+SSEL0; //主时钟

P3DIR=RXD+TXD;

P3SEL=RXD+TXD;

ME1|=UTXE0+URXE0;

}

//发送一个字节函数

void transmit_a_bit(char sdata)

{

TXBUF0=sdata;

IFG1&=~UTXIFG0;

while(IFG1&UTXIFG0==0);

}

UTXIFG0 Bit 1

USART0 transmit interrupt flag UTXIFG0 is set when U0TXBUF is empty

0 No interrupt pending

1 Interrupt pending

URXIFG0 Bit 0

USART0 receive interrupt flag URXIFG0 is set when U0RXBUF has received a complete character

0 No interrupt pending

1 Interrupt pending

发送完成UTXIFG0被置为1

接收完成URXIFG0被置为1

启动发送只要配置好寄存器后,向TXBUF0写数据就行了

这是例子程序

#include <msp430x14xh>

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

ME1 |= USPIE0; // Enable USART0 SPI mode

UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master SWRST

UTCTL0 |= CKPH + SSEL1 + SSEL0 + STC; // SMCLK, 3-pin mode

UBR00 = 0x02; // UCLK/2

UBR10 = 0x00; // 0

UMCTL0 = 0x00; // no modulation

UCTL0 &= ~SWRST; // Initialize USART state machine

P3SEL |= 0x0E; // P31-3 SPI option select

P3DIR |= 0x01; // P30 output direction

while (1) // Loop

{

volatile unsigned int i;

for (i = 0xFFFF; i > 0; i--); // Delay

while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready

P3OUT &= ~0x01; // Latch data into 'HC165

P3OUT |= 0x01;

TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0

}

}

把浮点数分解 比如 12345 分解成12 和0345 12345/1= 12 12345%1=0345 03451000 变成整数。传送过去然后 逆向一下 就可以了

以上就是关于MSP430 串口发送始终停留在串口发送缓存是否空闲的判断语句上。全部的内容,包括:MSP430 串口发送始终停留在串口发送缓存是否空闲的判断语句上。、msp430f149 串口spi 发送和接收数据是怎么启动、高分求解答单片机msp430中怎么样用串口发送和接收float型数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9528324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存