内容借鉴大佬:【新提醒】【新定义MCU开发板测评】实现printf调试 - - 21ic电子技术开发论坛
使用注意点以及遇到的问题:
在使用串口调试工具需要注意:RXD接板子上的RX,GND接VSS。原理图上DIO引脚对应芯片TX,板子上标注的需要接RX脚。
两种使用串口方式:
方式一:新建工程之后,添加USCI1.c驱动文件
在SC_Init()中添加:
P1CON&=0xf5;//设置P1强推挽输出
P1PH|=0x0A;
USCI1_ITConfig(DISABLE,LOW);
USCI1_UART_Init(32000000,115200,USCI1_UART_Mode_10B,USCI1_UART_RX_ENABLE);
main.c中添加:
#include<stdio.h>
char putchar(char c)//重定向
{
USCI1_UART_SendData8(c);
while(!USCI1_GetFlagStatus(USCI1_UART_FLAG_TI));
USCI1_ClearFlag(USCI1_UART_FLAG_TI);
return c;
}
此时串口配置完成。
方式二:main.c中添加以下代码。再添加置顶大佬中的xprintf.c驱动文件,即可使用串口打印
void delay(uint16_t nms)
{
uint16_t i,j;
for(i=0;i<nms;i++)
for(j=0;j<10000;j++)
;
}
void Uart1_Init(unsigned int Freq,unsigned long int baud)
{
P1CON&=0xf5;
P1PH|=0x0A;
OTCON|=0xc0;
US1CON0=0x50;
US1CON1=Freq*1000000/baud;
US1CON2=(Freq*1000000/baud)>>8;
}
void Uart1_Send(int value)
{
US1CON0=US1CON0&0xFD|0x02;
US1CON3 = (uint8_t)value;
while((US1CON0&0x02) == 0x00);
}
只不过使用该方式时遇到串口打印乱码问题, 没能力解决。