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.
工具/软件:Code Composer Studio
您好,
我遇到了一个简单的问题、
请帮我解决这个问题。
我希望接收多个数据、
但我无法接收它。
我还尝试了不同的数据类型。
您能解决这个问题吗?
我的计划是 :
CHAR OLD; // int old
int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器 FLL_CTL0 |= XCAP11PF; //配置负载电容 ------------------------------------------------------- P1DIR |= BIT4; // P5.1输出 CCTL0 = CCIE; //启用 CCR0中断 // CCR0 = 50000; // TACTL = tassel_2 + MC_2; // SMCLK、连续模式 工作 TACTL = tassel_1 + MC_2; //======================================== ======================================================================== lcd_init(); UART_INIT(); while (1) { LCD[0]= digit[2]; //=========================================================================== OLD = getchar(); =我的问题就在这里。我无法接收多个(100个)数据。只有一个数据('1':在开关条件下可以看到) // putchar (旧); 开关(OLD) { 情况 "1": /"100" TACTL = tassel_1 + MC_2; old1='1'; putchar ('a'); // CCR0 = 50000; //100ms CCR0 = 1638; //////// 1638=10Hz _bis_SR_register (LPM0_bits + GIE); 中断; 案例"2": TACTL = tassel_1 + MC_2; old1 ='2'; putchar ('B'); CCR0 = 8000; /////500msec //////8000 =2Hz _bis_SR_register (LPM0_bits + GIE); 中断; 案例"3": TACTL = tassel_1 + MC_2; old1 ='3'; putchar ('B'); CCR0 = 32768; /////1000msec _bis_SR_register (LPM0_bits + GIE); 中断; 案例"4": TACTL = tassel_2 + MC_2; old1 ='4'; putchar ('B'); // CCR0 = 25000; /////2000msec _bis_SR_register (LPM0_bits + GIE); 中断; 默认值: TACTL = tassel_2 + MC_0; 中断; } } //返回0; } 如果我使用单个变量..它是可以的。
我其余的工作正常(中断、UART、LCD 功能)。 我还尝试使用其他方法(尝试使用环形缓冲器) ,您能为我提供解决方案的帮助吗?
请帮帮我。
情况紧急。
此致、
Srijit
您好 Srijit、
您的帖子显示您没有通过 UART 接收多个字符。 是这样吗? 如果是、您还可以共享 UART Rx 中断处理程序的代码吗?
这是一个代码示例、可能会让您对用法有所了解: http://dev.ti.com/tirex/explore/node?node=AJJlcCxl2-X.IDr5z0pwvw__IOGqZri__LATEST
Srinivas
您好、Shivam、
非常感谢您的回复。
我正在获取 数据,也可以通过 Tx 和 Rx 发送数据。
但我有不同的问题、
1)
我正在接收数据(通过中断或使用输出中断)、
通过发送 function..it 传输数据(例如:1234)正在进行传输。 2) 但我希望接收数据( 通过中断或输出中断)、 并希望使用计时器中断传输数据。 (如果我接收 ex:1234,并使用计时器 interrupt....it 发送,则仅发送'4') 您能帮 我解决这个问题吗? (因为我的逻辑是 :接收数据...然后在计时器中断中...将有一个 counter++... 当计数器将等于接收到的数据时..... 然后输出部分将执行... 这是第二步...首先我想通过计时器中断发送完整数据。 能不能给我提供解决方案。 [ #在我的程序中:我没有使用 Rx 中断...只有 Rx 函数 希望将值存储在缓冲区中...这也不起作用 getchar ():char getchar()
{
while (!(IFG2&UCA0RXIFG));
返回 UCA0RXBUF;
}
UART:
空 UART_INIT()
{
P6SEL |= BIT5+BIT6;// P6.5、6 = USCI_A0 RXD/TXD
UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_1;//UCSSEL_2;//UCSSEL_1;// CLK = ACLK
UCA0BR0 = 3;// 32k/9600 - 3.41
UCA0BR1 = 0x00;//
UCA0MCTL = 0x06;
UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
IE2 |= UCA0RXIE;//启用 USCI_A0 RX 中断
}
putchar():
空 putchar (无符号 char 数据)
{
while (!(IFG2&UCA0TXIFG));
UCA0TXBUF =数据;
}
]
此致、 Srijit。>
old =
getchar
();
> byte0
=
getchar
(); // First byte of pair
> byte1
=
getchar
(); // Second byte of pair
> put
char
(byte0); // First byte of pair
> put
char
(byte1); // Second byte of pair