中级会员
 
- 积分
- 272
- 金钱
- 272
- 注册时间
- 2019-4-28
- 在线时间
- 80 小时
|
2金钱
f103战舰串口问题,现在通过串口3向传感器发送指令,可以接收到返回的数据,但是内容偶尔正确。是因为在发送后板子也接收到了自己的数据么,如果是怎么改呢,我现在只想要传感器返回的数据,不想要自己发送的数据。程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "stdio.h"
#include "string.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "usart3.h"
#include "string.h"
/************************************************
ALIENTEK战舰STM32开发板实验4
串口实验
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
u8 duf[4]={0x55,0x09,0x1B,0xDB};
int main(void)
{
u8 t;
u16 len;
u8 key=1;
delay_init(); //延时函数初始化
LED_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usart3_init(115200); //串口初始化为115200
while(1)
{
if(key==1)
{
for(t=0;t<4;t++) //循环发送数据
{
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
USART_SendData(USART3,duf[t]);
}
for(t=0;t<4;t++) //循环发送数据
{
printf("%x ",duf[t]);
}
printf("\r\n");
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
key=0;
}
if(USART3_RX_STA&0x8000)
{
len=USART3_RX_STA&0x7fff;//得到此次接收到的数据长度
for(t=0;t<len;t++) //循环发送数据
{
printf("%x ",USART3_RX_BUF[t]);
}
printf("\r\n");//插入换行
USART3_RX_STA=0;
}
}
}
下图是串口助手显示的数据:55 9 1b db是发送的数据,正常接收的是40 40 7f,但是会有错误的03 fb 0f出现。望解答,谢谢
|
|