ch32v307 ,由于使用了一些STL中的数据结构,比如 vector,queue等等,程序运行时,少量数据还可以,数据一多就去进入HardFault_Handler。以前在stm32中也会出现类似问题,通过在stm32的ld文件中加大_Min_Heap_Size,问题得到解决。
而ch单片机的ld文件中我只看到了__stack_size,并没有找到_Heap_Size,不知道那里能设置一下Heap的大小?谢谢!
ch32v307 ,由于使用了一些STL中的数据结构,比如 vector,queue等等,程序运行时,少量数据还可以,数据一多就去进入HardFault_Handler。以前在stm32中也会出现类似问题,通过在stm32的ld文件中加大_Min_Heap_Size,问题得到解决。
而ch单片机的ld文件中我只看到了__stack_size,并没有找到_Heap_Size,不知道那里能设置一下Heap的大小?谢谢!
您好,CH32V307 ld链接脚本中,没有明确定义heap堆的大小,按照其定义,动态数据段,除了stack占用的,剩下的都可用于heap。若你数据一多就进HardFault,那可能是RAM不够用了。不过我们CH32V307的FLASH和RAM大小都是可配置的,其中最大可配置成128K,你可以将RAM配置大一些。关于RAM大小的配置,可通过WCHISPTool工具进BOOT配置,同时要注意修改ld文件中RAM和FLASH的大小,如下图。WCHISPTool工具下载链接如下。后续若有问题,可通过邮箱和我沟通(lzs@wch.cn)
WCHISPTool:https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html