大家好、
我的问题很奇怪、我无法处理。
我有一个定制板、它使用 CC430F6137进行了加载并对其进行了编程。 我想实施 UART 应用程序,我的代码是:
#include
#include "cc430x613x.h"
#include
#include
void terminal_write();
void UART_open();
void UART_close();
void main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//__delay_cycles (2 * 1e7);
while (1)
{
UART_open();
printf ("系统正在工作\r\n");
终端写入("at\r\n");
_DELAY_CYCLES (5000000);
//_Bis_SR_register (LPM3_BITS + GIE);
UART_CLOSE ();
}
}
void terminal_write (char *信息)
{
unsigned int i;
unsigned int len = strlen(info);
for (i=0;<len;i++))
{
UCA0TXBUF=INFO[i];
_delay_cycles (10000);
}
}
void UART_open(){
P1SEL |= BIT5 + BIT6;
//UART 设置
UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL0;// ACLK
UCA0BR0=3;//UCA0BR0=3;//32kHz / 9600–>> 3.
UCA0BR1=0;//UCA0BR1=0;//波特9600;(UCABR1 * 256)+ UCABR0 = UCABRx 请参阅"slau259e.pdf"
UCA0MCTL=6;//请参阅"slau259e.pdf"第602页//
///UCA0MCTL =| BIT7 | BIT6 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
//|--- UCBRFx --- |--UCBRSx----- |UCOS16|
//对于32kHz UCBRFx = 0、UCBRSx = 3、UCOS16 = 0时的9600波特率
//| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
// 0b00000110 = 0x06 = 6
UCA0CTL1 &=~ UCSWRST;//
UCA0CTL1 |= UCDORM;
}
void UART_close(){
P1SEL &=~(BIT5 + BIT6);
UCA0CTL1 |= UCSWRST;
UCA0CTL1 &=~ UCDORM;
}
我正在使用 FET430--UIF 调试器,它没有问题。 如果我使用调试器运行程序、而不是运行它、并且 UART 通信没有问题、但我尝试在没有调试器的情况下运行它
[我的意思是无需调试操作,我希望程序可以在没有调试器的情况下运行]使用直流电源(3.3伏)时看不到任何 UART 输出。除此之外,如果我只使用没有3.3伏电源的调试器,那么我无法正确接收输出信号。 如果我同时使用电源和调试器、我就无法正确获取信号。
感谢您的回复。
胡西印。