新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2019-9-6
- 在线时间
- 7 小时
|
5金钱
问题描述:串口助手给STM32f103的串口1发送5个字节,能正常接收,如果用printf可以正常输出接收数据,但是如果将接收数据再发回串口助手,只显示最后一个字节。main.c如下:
#include "stm32f10x.h"
#include "usart.h"
u8 Receive_Buff[USART_REC_LENTH];//定义接收缓存器
u16 Receive_End_Flag=0;//定义接收完成标志
u16 Data_Num=0;//数据接收计数器
int main(void)
{
u8 i=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
USART1_Init(115200);
while(1)
{
if(Receive_End_Flag==1)
{
printf("Receive number:\r\n\r\n");
for(i=0;i<USART_REC_LENTH;i++)
{
USART1->SR;
USART_SendData(USART1,Receive_Buff[i]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC!=SET));
}
printf("\r\nTransimission over\r\n");
Receive_End_Flag=0;//发送结束标志清零
Data_Num=0;
}
}
}
/**********分割线**********/
中断函数如下:
USART1_IRQHandler(void)
{
u8 Res=0;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
Res=USART_ReceiveData(USART1);
Receive_Buff[Data_Num]=Res;
Data_Num=Data_Num+1;
if(Data_Num==USART_REC_LENTH)
{
Receive_End_Flag=1;//发送结束标志
}
}
}
|
|