使用休眠死机

请教 芯片是ch579m,例程是官方HID_Keyboard,使用的内部32k时钟CLK_OSC32K,开休眠?HAL_SLEEP为TRUE,修改iram1为20004000-20008000,调试时死机,重启也连不上蓝牙,将HAL_SLEEP设为FALSE就可以,请教大家哪里还需设置吗?

芯片是CH579m,引脚限制,没有焊外部32k时钟


先不要修改RAM,将程序烧录在我们的开发板上跑一下,看看是否能够正常运行。修改内部时钟和睡眠都是可以通过宏进行修改,且我们验证是没有问题的。


内存20000000-20004000休眠后数据不保存,所以改了,将HAL_SLEEP设为FALSE就可以正常运行,没有外部时钟,所以在C/C++选项中定义了CLK_OSC32K,顺便删除了DEBUG定义,是否别的设置还需改一下


image.png

例程默认使用的就是后16K RAM,sleep模式下可以数据保持,不掉电的。
睡眠模式直接开启即可。如下图

image.png

睡眠函数添加打印,如下图

image.png

运行结果如下

image.png

toms的运行机制可以参考 https://www.cnblogs.com/debugdabiaoge/p/15775521.html

预编译配置 可以参考 CH579 CH573 CH582 config.h修改预编译配置 - debugdabiaoge - 博客园 (cnblogs.com)


1662015416210192.png

1662015416195705.png

1662015416127310.png

是不是不能用内部32k时钟?定义CLK_OSC32K为1或2都不行


写入代码后运行就出现图一的情况,同样用了内部时钟的情况下如果不设置休眠就不会出现图一情况,可以正常连接手机传数据


你是不是用仿真运行的,开启睡眠后,高频时钟会停,所以仿真是用不了的。
用ISP工具下载后,直接运行即可。


程序虽然是仿真接口下载的,但程序下载后断电重启还是不能连接手机


官网下载最新的EVT程序,修改如图,其他地方不做任何修改。

image.png

下载时使用ISP工具USB方式进boot下载,注意清空DataFlash

image.png

使用我们的开发板进行验证。

如果还是有问题,请发送邮件至邮箱lpc@wch.cn,我们进一步排查问题。


只有登录才能回复,可以选择微信账号登录