STM32串口中断接收问题
voidUSART6_IRQHandler(void){while(USART_GetITStatus(USART6,USART_IT_RXNE)!=RESET){//U...
void USART6_IRQHandler(void)
{
while(USART_GetITStatus(USART6, USART_IT_RXNE)!= RESET)
{
// USART_ClearITPendingBit(USART2, USART_IT_RXNE);
Buffer[dataLen1]=USART6->DR;
dataLen1++;
if(dataLen1>1200)
{
dataLen1=0;
}
}
GPIO_SetBits(GPIOD, GPIO_Pin_13);
Flag=1;
}
void USART6_Puts(char * str)
{
while(*str)
{
USART_SendData(USART6, *str++);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART6, USART_FLAG_TC) == RESET); /
}
}
main()
{
GPIO_Config();
USART6_Config();
USART1_Config();
DMA_Config();
NVIC_Config();
GPIO_SetBits(GPIOD, GPIO_Pin_12); //打开LED
while (1)
{ if(Flag==1)
{
USART6_Puts(Buffer);
Flag=0;
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
}
}
}
若串口发送的数据在3个以内,接收正常,显示正常,若串口发送数据大于4个的时候,只能接收前四位!小弟望得到大神们的帮助 展开
{
while(USART_GetITStatus(USART6, USART_IT_RXNE)!= RESET)
{
// USART_ClearITPendingBit(USART2, USART_IT_RXNE);
Buffer[dataLen1]=USART6->DR;
dataLen1++;
if(dataLen1>1200)
{
dataLen1=0;
}
}
GPIO_SetBits(GPIOD, GPIO_Pin_13);
Flag=1;
}
void USART6_Puts(char * str)
{
while(*str)
{
USART_SendData(USART6, *str++);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART6, USART_FLAG_TC) == RESET); /
}
}
main()
{
GPIO_Config();
USART6_Config();
USART1_Config();
DMA_Config();
NVIC_Config();
GPIO_SetBits(GPIOD, GPIO_Pin_12); //打开LED
while (1)
{ if(Flag==1)
{
USART6_Puts(Buffer);
Flag=0;
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
}
}
}
若串口发送的数据在3个以内,接收正常,显示正常,若串口发送数据大于4个的时候,只能接收前四位!小弟望得到大神们的帮助 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询