主题中讨论的其他部件: ENERGYTRACE, MSP430G2553
工具/软件:Code Composer Studio
您好!
我尝试在f5529启动板上运行UART。 示例代码正常工作,直到我尝试更改它们。 我想转至LPM3或LPM4,但示例代码仅适用于LPM0。 如果我将其置于任何深度睡眠模式,它会发回错误的字符。 我缺少什么?
#include <MSP4S.h>
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD;//停止WDT
P3SEL = BIT3+BIT4;// WFP 3.4 ,5= USI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 9;// 1MHz 11.52万 (请参阅用户指南)
UCA0BR1 = 0;//
UCA0MCTL = UCBRS_1+UCBRF_0;//调制UCBRSx=1,UCBRFx=0
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0IE |= UCRXIE;//启用USI_A0 RX中断
__bis_sr_register(LPM0_bits + GIE);//输入LPM0,中断已启用
__no_operation();//用于调试器
}
//回显RXed字符,请先确认TX缓冲区已就绪
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
#否则
错误编译器不受支持!
#endif
{
Switch(__偶 数_in_range(UCA0IV,4))
{
案例0:中断;//矢量0 -无中断
案例2://矢量2 - RXIFG
同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?
UCA0TXBUF = UCA0RXBUF;// TX -> RXed字符
中断;
案例4:中断;//矢量4 - TXIFG
默认值:中断;
}
}