硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2689|回复: 10
收起左侧

F429 串口1 运行一段时间就不响应中断了

[复制链接]

21

主题

48

回帖

111

积分

初级会员

积分
111
发表于 2020-5-12 18:59:51 | 显示全部楼层 |阅读模式
版主,

我的F429串口,采用的是HAL函数库里面的

HAL_UART_Receive_IT(&Uart1Handle,(uint8_t *)Rxbuff,LengthNum);        这个函数。

中断函数

void USART1_IRQHandler(void)
{
  HAL_UART_IRQHandler(&Uart1Handle);
}



运行一段时间,发现后面就不进中断了。没有响应了。

怎么回事呢?

我在接收中断完成里面的回调函数中,放了一个计数器,UartCounter   发现运行一段时间数据就不变化了。


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
        uint32_t *Pcom;
        if(UartHandle->Instance == USART1 )
        {
                BSP_GREEN_COLOR_ON();       
           
                Pcom = osMailAlloc(mail, 0);
                *Pcom = 1;
                osMailPut(mail, Pcom);


                 UartCounter++;
                       
        }//usart1 rx
}


有什么思路吗?先感谢各位了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-5-13 09:35:36 | 显示全部楼层
先把你这些代码都注释掉测试。

BSP_GREEN_COLOR_ON();      
           
                Pcom = osMailAlloc(mail, 0);
                *Pcom = 1;
                osMailPut(mail, Pcom);


                 UartCounter++;
回复

使用道具 举报

21

主题

48

回帖

111

积分

初级会员

积分
111
 楼主| 发表于 2020-5-13 15:33:11 | 显示全部楼层
嗯嗯,注释掉了。

就留了一个UpUsart++;

运行了一段时间
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{

}
就没有响应了


中断函数
void USART1_IRQHandler(void)
{
  HAL_UART_IRQHandler(&Uart1Handle);
}

也没有响应了。


想问一下,中断函数的优先级,和任务的优先级  的关系?

是不是我的usart中断向量的优先级可以设置的更高些。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-5-13 15:40:28 | 显示全部楼层
wxqhit 发表于 2020-5-13 15:33
嗯嗯,注释掉了。

就留了一个UpUsart++;

使用我的V6-006的8串口FIFO把,试试。

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

21

主题

48

回帖

111

积分

初级会员

积分
111
 楼主| 发表于 2020-5-13 17:33:30 | 显示全部楼层
好的,谢谢@eric2013
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-8-20 11:42:36 | 显示全部楼层
您好,请问最后怎么解决的,我也遇到这个问题,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-8-20 12:10:38 | 显示全部楼层
爱上嵌入式 发表于 2020-8-20 11:42
您好,请问最后怎么解决的,我也遇到这个问题,谢谢

使用我的V6-006的8串口FIFO把,试试。

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
发表于 2021-7-8 15:00:55 | 显示全部楼层
我也发现什么都不做,就是不停的进入中断,等一会必出错
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
发表于 2021-7-8 15:02:42 | 显示全部楼层
F429 什么都不做就串口不停的中断,一段时间就不响应中断了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-7-9 09:15:49 | 显示全部楼层
tidal 发表于 2021-7-8 15:02
F429 什么都不做就串口不停的中断,一段时间就不响应中断了

示波器看下,是不是线上有杂波
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2021-7-9 13:01:43 | 显示全部楼层
tidal 发表于 2021-7-8 15:00
我也发现什么都不做,就是不停的进入中断,等一会必出错

1.HAL库的串口接收如果你的接收字节满了,
HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
也就是接收数据达到了Size字节的时候,接收中断会关闭,你可以看看函数原型。
所以你一段时间不接收了有可能接收字节满了。
2、如果你接收完一包数据,会重新开启接收,并且是在callback里面开启的,但是发送函数是在主流程,那么就有小概率,你的接收开启失败,应该主流程如果正在发送会给UART上锁。这种情况导致的话,可以在发送函数时开关中断来避免
3.还有一种情况就是进错误中断了,需要清楚下错误中断标志位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 19:54 , Processed in 0.264557 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表