硬汉嵌入式论坛

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

[技术讨论] 关于芯片降频后,过一段死机的疑惑

[复制链接]

7

主题

26

回帖

47

积分

新手上路

积分
47
发表于 2024-4-16 13:53:30 | 显示全部楼层 |阅读模式
求助各位大佬,目前我用国民技术N32G452芯片做开发,正常状态下,以72MHZ运行没有问题,为了节约功耗,将其降频至16MHz运行,同时,调用串口,给外部服务器发送和接收数据,在降频状态下,一开始还能正常运行一段时间,但过几天,机器就会莫名奇妙的死机,好几次都这样,但看调试信息,不是硬件错误Hardfault,而是在串口初始化产生问题,请问各位,这是什么问题?
3.png
1.png
2.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106718
QQ
发表于 2024-4-17 11:09:26 | 显示全部楼层
如果已经锁定是串口问题了,可以16MHz反复初始化串口,批量收发数据测试下,然后逐步优化下这部分的代码实现。
回复

使用道具 举报

7

主题

26

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-4-17 22:37:46 | 显示全部楼层
eric2013 发表于 2024-4-17 11:09
如果已经锁定是串口问题了,可以16MHz反复初始化串口,批量收发数据测试下,然后逐步优化下这部分的代码实 ...

好的,谢谢硬汉哥的指导,我试一试这个方法
回复

使用道具 举报

7

主题

26

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2024-4-20 18:24:54 | 显示全部楼层
eric2013 发表于 2024-4-17 11:09
如果已经锁定是串口问题了,可以16MHz反复初始化串口,批量收发数据测试下,然后逐步优化下这部分的代码实 ...

硬汉哥你好,经过排查,发现问题如下:
我们的程序写法是按照例程:
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
            USART_ClearITPendingBit(USART1, USART_IT_RXNE);
但是这种写法,会产生一个问题,假如我的数据是错误帧,即是不满足UART协议的,没办法进入到if里面清除串口中断标志位,导致出现程序不断在串口中断卡死,无法执行 while循环。为了克服这个问题,我们尝试读取其他串口中断标志位,方便清空中断标志,保证不会重复进入中断。但是我们当时读中断标志时,发现没有其他中断位的存在,后来我们网上查阅资料,发现芯片有以下bug,产生过载错误时,ORE会被置1,但只有当USART_IT_ERR中断使能时,才能读到ORE中断。后来我们按照文章的指引,把代码改了后,没有死机情况出现,代码如下,文章链接放到最后,供大家参读。
if (USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)//注意!不能使用if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)来判断


    {
        USART_ReceiveData(USART1);
    }
if(bRecieveOK)
    {
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
            USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        return;//processing receive data,don't receive again
    }
我们也是按照该文章进行改进的:
https://bbs.21ic.com/icview-160999-1-1.html
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106718
QQ
发表于 2024-4-21 00:31:40 | 显示全部楼层
麦克斯韦Maxwell 发表于 2024-4-20 18:24
硬汉哥你好,经过排查,发现问题如下:
我们的程序写法是按照例程:
if(USART_GetITStatus(USART1, USA ...

这个地方就显现出HAL库的优势了,他的中断里面把所有情况都整理了一遍。你可以借鉴下HAL库的实现,再完善下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 18:57 , Processed in 0.289228 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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