找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 960|回复: 7
收起左侧

关于py32f002a单片机在keil里的报错

[复制链接]
ID:1069770 发表于 2023-4-4 14:32 | 显示全部楼层 |阅读模式
最近整了个arm内核的py32f002a玩,但按照给的官方文件却在keil里报错。以前只玩过8位,没玩过32位。错误代码:
51hei截图20230404141224.jpg

.\Objects\sy32.axf: Error: L6985E: Unable to automatically place AT section system_py32f0xx.o(.ARM.__at_0x20000000) with required base address 0x20000000. Please manually place in the scatter file using the --no_autoat option.

错误是在
03.jpg
文件里的

20230404141326.jpg

uint32_t VECT_SRAM_TAB[48]__attribute__((section(".ARM.__at_0x20000000")));
这行代码出现了错误,这应该是个启动运行前的文件,跟RAM有关,具体的我也不懂,好像也查不到什么好的解决办法。
只要把这行代码的0x20000000改成0x200000500就能编译成功,调试中能操作寄存器,但函数不能正常运行。只能操作寄存器。
不知道有没同样用过的遇到这种问题的,或者知道解决办法的。
回复

使用道具 举报

ID:915384 发表于 2024-2-19 08:51 | 显示全部楼层
我刚好碰到这个问题,不过我用的是002B,我用了system_py32f002b.c替代了system_py32f0xx.c就正常了。f0xx.c可能针对的是所有型号,不同型号可能要改下参数。你可以去找个system_py32f002a.c或者就用002b.c就可以了。
回复

使用道具 举报

ID:883242 发表于 2024-2-20 19:25 | 显示全部楼层
可能缺了#define具体单片机型号这一句,也可以在项目工程文件里面define。
回复

使用道具 举报

ID:604394 发表于 2024-3-18 11:27 | 显示全部楼层
这个应该是分散加载文件中的分段对应不上。把ARM替换成RW_IRAM1就可以了。即uint32_t VECT_SRAM_TAB[48]__attribute__((section(".RW_IRAM1.__at_0x20000000")));//((section(".ARM.__at_0x20000000")));
回复

使用道具 举报

ID:367862 发表于 2024-3-18 11:28 | 显示全部楼层
uint32_t VECT_SRAM_TAB[48]__attribute__((section(".RW_IRAM1.__at_0x20000000")));
出错代码替换成上边的代码试试,我的问题这样解决的。
回复

使用道具 举报

ID:1110945 发表于 2024-3-18 21:55 | 显示全部楼层
我最近在玩XL32F001,我只用py32f002bx5.h这一个头文件,注意前面没有“system_”,
另加“core_cm”开头的三个内核头文件,其它的都是“库”开发有关的,我不玩“库”。
简简单单点个灯都要长长一大篇,我直接操作寄存器只要三五句就点亮了。
回复

使用道具 举报

ID:883242 发表于 2024-3-19 00:49 | 显示全部楼层
明日之星8 发表于 2024-3-18 21:55
我最近在玩XL32F001,我只用py32f002bx5.h这一个头文件,注意前面没有“system_”,
另加“core_cm”开头 ...

没用汇编说明你的修行还不到家。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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