morrisk 发表于 2022-5-8 18:30

串口初始化

串口初始化的时候为什么只打开接收中断使能,而不能打开发送中断使能?
void init_uart1(void)
{
P5SEL |= 0xC0;                           // P5.6,7 = USCI_A1 TXD/RXD
UCA1CTL0 |= 0X80;                        //odd parity
UCA1CTL1 |= UCSWRST;                      // **Put state machine in reset**
UCA1CTL1 |= 0X40;                     // ACLK
UCA1BR0 = 0x03;                              // 1MHz 115200 (see User's Guide)
UCA1BR1 = 0x00;                              // 1MHz 115200
UCA1MCTL |= UCBRS_3+UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0
UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
UCA1IE |= UCRXIE;                         // Enable USCI_A1 RX interr
//__bis_SR_register(GIE);                  // 使能中断
//_EINT();
}

jiaxw 发表于 2022-5-8 18:34

中断一定要记得是能哦,而不是注释掉。

juventus9554 发表于 2022-5-12 22:19


UCA1IE |= UCRXIE;                         // Enable USCI_A1 RX interr
你的程序本身也只打开接受中断

dengdc 发表于 2022-5-12 22:21

你这个用的是RS485的还是?

heweibig 发表于 2022-5-12 22:21

一般AURT的话接收跟发送是相互独立的。

zhanghqi 发表于 2022-5-12 22:23

这个不应该的吧,该方式的基本不会出问题的。

yszong 发表于 2022-5-12 22:25

发送中断如果是‘发送buffer空中断’,则在初始化的时候不需要打开,只有在发送数据时才打开,而且在判断没有数据可发的时候还要关闭,否则会一直进中断

llljh 发表于 2022-5-12 22:27

如果是‘发送完成中断’,则在初始化的时候可以打开,需要看具体芯片的发送中断是哪种

heweibig 发表于 2022-5-12 22:29

楼主可以看看管网给出的例程

jlyuan 发表于 2022-5-12 22:31

可以printf 输出

pengf 发表于 2022-5-12 22:34

串口配置没有什么难度吧

heweibig 发表于 2022-5-12 22:36

不是不能而是不需要

wyjie 发表于 2022-5-12 22:39

没有任何规定不可以啊

jiajs 发表于 2022-5-12 22:41

发送完成中断可以打开

supernan 发表于 2022-5-12 22:43

是啊,进入中断关闭是对的,但是退出时候要再开启,要不没有法进行后面的重复工作了。

morrisk 发表于 2022-5-12 22:46

嗯,预料中的结果,多谢大家啦
页: [1]
查看完整版本: 串口初始化