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个的时候,只能接收前四位!小弟望得到大神们的帮助
展开
 我来答
逝殇曜阳
2013-01-25
知道答主
回答量:8
采纳率:0%
帮助的人:8.5万
展开全部
USART_ClearITPendingBit(USART2, USART_IT_RXNE);这胡含句应该要加进去的,但是看你用的好中卖像卖做逗是串口6,感觉32有串口6吗?不管怎样,清的中断标志要与用的一样。
karl_zhang2003
2013-01-25 · TA获得超过373个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:163万
展开全部
你用断点调试看看你进了几次中断,然后单步调试查找问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式