找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2189|回复: 7
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
最近整了个arm内核的py32f002a玩,但按照给的官方文件却在keil里报错。以前只玩过8位,没玩过32位。错误代码:


.\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.

错误是在

文件里的



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

使用道具 举报

沙发
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")));
回复

使用道具 举报

5#
ID:367862 发表于 2024-3-18 11:28 | 只看该作者
uint32_t VECT_SRAM_TAB[48]__attribute__((section(".RW_IRAM1.__at_0x20000000")));
出错代码替换成上边的代码试试,我的问题这样解决的。
回复

使用道具 举报

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

使用道具 举报

7#
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 单片机教程网

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