对于一开始 学习使用就靠自己通讯,设置好程序1秒发送一次定数值,在外界一个485通讯,485再转USB接口,插入电脑,打开sscom51设置好串口打开相应串口
这是sscom51界面
打开串口设置
按照程序里设置的端口数据一一对应设置,如不匹配很容易通讯乱码甚至不通讯,也可以使用sscom51定时发送在线观察单片机接受情况
如果想在程序中使用Printf()函数就必须在程序里加入如下函数
int fputc(int ch ,FILE*f)
{
USART_SendData(USART1,(u8)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
return ch;
}
还需要在打开KEIL中的Option for Target,勾选User MicroLIB然后单击OK,就可以使用Printf 函数了;
但是通讯有好几个标志位;对于发送和接受需要验证标志位是否达到发送或者接受的要求
还有就是在发送语句的时候一定要加入一小段延时程序,不然很容易乱码;
举个例子
int i;
if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==1);
{
USART_SendData(USART1,USART_ReceiveData(USART1));
for(i=0;i<500;i++);
}
//定义i
若USART1的接受数据标志位置1;
则发送USART1接收到的数据;
短暂延时保证发送;
很多标志为要看在什么情况下搭配使用