各位老师,你们好!我是一个MSP430的初学者,我今天学习的是串口通信,遇到好多好多问题,请你们指教!!!
1.
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
IFG2&=~UCA0TXIFG;
UART_OnTx();
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
IFG2&=~UCA0RXIFG;
UART_OnRx();
}
这两个中断服务程序的头文件header如何编写?
2.不知道这是什么原因?
Kailyn Chen:
帮你转到MCU版块,以便更快的得到 回复。
Jacky Xu:
举例来说
#pragma vector=USCIAB0TX_VECTOR__interrupt void USCI0TX_ISR(void){IFG2&=~UCA0TXIFG;UART_OnTx();}
这个中断子程序之所以这么写是因为在我们所include的头文件 msp430g2553.h中是这么定义的
在这里把这个USCIAB0TX_VECTOR对应到了.int06
然后在我们的link文件中,定义了每个.int的位置,这样你定义的这个函数的地址就会被认为是这个中断入口对应的程序首地址。
所以这些东西其实是不需要你自己去编写的,你只需要知道来龙去脉,知道怎么用他就可以了。
Mr_Shen:
回复 Jacky Xu:
您好,我的疑惑并不是这个,就是我把中断函数如何写到.h文件里!方便在主函数里调用!正常的函数写在.H文件里只需写 void USCI0TX_ISR(void);这个函数声明。并没有#pragma vector=USCIAB0TX_VECTOR __interrupt 。我该如何在.H文件里修改或者直接写void USCI0TX_ISR(void)。
第二个问题,抱歉,再次打扰您!我修改后的程序使用超级终端可以输入控制LED灯的亮灭,但是不回显,这样子就失去了人机交换的意义!我把修改好的文件放置到附件里!请您帮我解答一下!万分感谢!
gaoyang9992006:
回复 Mr_Shen:
http://wenku.baidu.com/link?url=OEmcQl_W90l5nCtOvBAR_oLG9WNR0FTcMWtg9YCNwSMj5-Av1lljglROfszgwjbccQR24SvhP3WvFoATP0-UlomLcxm2xMeAtcauCe0bsCO
这有个参考。文件名是 msp430g2553串口通信 我没有积分没法帮你下载来,你去看看。