430F1xx的UART0,UART1是否能同时启用?同时还要考虑使用TIME A,它们在使用内部时钟系统时有什么讲究?我的一个程序在初始化两个UART后,在走到TIME A 后,单步调试就走不下去了。Debug出现的错误是: Target execution stopped ,和 reset_vector:00FFFF DC8.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
430F1xx的UART0,UART1是否能同时启用?同时还要考虑使用TIME A,它们在使用内部时钟系统时有什么讲究?我的一个程序在初始化两个UART后,在走到TIME A 后,单步调试就走不下去了。Debug出现的错误是: Target execution stopped ,和 reset_vector:00FFFF DC8.
Songlin Qin,
只要你选择的msp430f1xx device支持两个UART(有两个USART模块), 那么UART0和UART1就可以同时启用。UART和TIMER_A的时钟均可选择来自ACLk, SMCLK或者外部。故UART和TIMER_A是可以同时工作的。但是如果系统中有进入LPMx的情况的话,需要考虑进入不同的LPMx,可用的系统时钟(MCLK, SMCLK, ACLK)是不同的。例如在LPM3时,只有ACLK是可用的。即若timer或者UART使用SMCLk作为时钟输入,那么在LPM3时,他们是不能正常工作的。
图1:单步调试停止时的截图。
图2:单步调试停止前的位置。
图3:连续运行时,在TIMEA中断程序中设置的断点。但好像没有进入该中断程序中。
原来的程序是一个UART,TIMRE A,ADC12,LCD12864。是别人写的,能用。现在想改为两个UART,一个TIME A,和LCD12864。
两个初始化UART:
void InitUART0(void) //修改 初始化458串口 12、11.1
{
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
ME1 |= URXE0 + UTXE0; // Enable USART0 T/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK ?
UBR00 = 0x03; // 32k/9600
UBR10 = 0x00; //
UMCTL0 = 0x4a; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0+UTXIE0; //使能接收中断 ?发送?
}
void InitUART1(void)
{
P3SEL |= 0xC0; //将P3.6,P3.7选做UART1的通信端口
ME2 |= URXE1+UTXE1; //使能USART1的TXD
UCTL1 |= CHAR; //选择8-bit字符
UTCTL1 |= SSEL0; //驱动时钟选择ACLK
UBR01 = 0x03; //波特率9600
UBR11 = 0x00;
UMCTL1 = 0x4a; //调整
UCTL1 &= ~SWRST; //初始化UART状态机
IE2|=URXIE1; //QQ12/14 }