硬汉嵌入式论坛

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

[技术讨论] 【求助】gd32f470什么情况下会进入ResetHandler?做了个软开关结果一按置高后直接跳复位程序里了

[复制链接]

2

主题

3

回帖

9

积分

新手上路

积分
9
发表于 2025-1-21 09:34:49 | 显示全部楼层 |阅读模式
情景:

有前面板和底板俩板子,底板通电(部分器件不启动),给前面板供电,总开关开后,软开关脚位为高,按前面板软开关,为低后,程序里gpio_bit_set再给power_on脚位打高(主板给底板没启动的硬件通电),结果现在一打高,c语言程序直接跑飞到startup里面的reset_handler了。
我直接用470i例程去控这俩脚,一样的,按了软开关,后面power_on继电器是响了,但后续就是跑到reset_handler了,请问啥情况下会进入reset_handler啊?除了芯片通电第一次,cpu的复位脚说是也没接出来按理来说也不会影响它的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115596
QQ
发表于 2025-1-21 11:39:06 | 显示全部楼层
供参考,你看下GD32的设计,STM32内部设计里面软件复位,看门狗复位等,反应到硬件上都是给硬件复位引脚上一个脉冲。

程序设计中经常会用到软件复位,软件复位反应在硬件上就是发了一个信号给硬件复位端
https://www.armbbs.cn/forum.php?mod=viewthread&tid=87648
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2025-1-21 15:07:23 | 显示全部楼层
目前试了一下,这个脚位初始是PP推挽,默认是低,按了开关后程序里给它拉高,之后进入bit set后就直接跳到汇编reset handler。
我单独改成OD开漏后,默认就是高了,现在程序正常走了(没上面从低打高继电器那一下了)但按理来说前端板子就该给后面器件供电了,硬件还是没电。
主要是前面一个问题,后面没电估计是硬件。为啥给PG3开机为低后面拉高后就直接跳汇编复位呢?是脚位链接错误了?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115596
QQ
发表于 2025-1-22 07:46:46 | 显示全部楼层
新手1234QWER 发表于 2025-1-21 15:07
目前试了一下,这个脚位初始是PP推挽,默认是低,按了开关后程序里给它拉高,之后进入bit set后就直接跳到 ...

不清楚了,帮顶
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2025-1-23 13:45:50 | 显示全部楼层

目前暂时解决了,和软件无关,主要应该是初始化这个二级开关的端口和按了一级软开关后把二级开关置高,这个过程需要时间非常短,应该是后部硬件反冲到cpu使得cpu重启了,目前解决方法就是改顺序。
之前是初始部分脚位、初始前端软开关、初始二级开关,然后检测前端软开关(while循环),直到按了软开关break后,二级开关置高,再继续初始lcd等后续脚位。
现在改成不过早初始二级开关了,把初始二级和置高放一起。
初步来看就是while等这段时间,我后来试了试哪怕减去了while等待按键响应,单独加个delayms,1、10毫秒还行,像1000毫秒就不行了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115596
QQ
发表于 2025-1-24 06:30:38 | 显示全部楼层
新手1234QWER 发表于 2025-1-23 13:45
目前暂时解决了,和软件无关,主要应该是初始化这个二级开关的端口和按了一级软开关后把二级开关置高,这 ...

谢谢告知最终原因。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 16:24 , Processed in 0.289264 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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