打印
[技术支持]

原来是请教技术支持的,结果半天不说一句话,只好来这...

[复制链接]
4355|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pcf00|  楼主 | 2018-5-8 20:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
目前在试用HC89S003F4这颗料,用的KEIL写代码,用的是官方补丁包。
先照网上的例程简单测试,通过了;例程都是单一文件。当在项目文件里加载2个以上C文件时,且都#include"HC89S003F4.h",编译时就出现某些寄存重复定义,试着做了一些修改,也不行。不知道怎么回事。
请教技术支持,叫我“请说”,我说了,然后,没然后了。。。
本来想用STC的一个同款,只是还没出来。。。有销售商叫试用新塘,暂备用吧。
沙发
chongdongchen| | 2018-5-8 20:23 | 只看该作者
虽然。。。不过,这个问题不就是C语言的基本使用问题吗,和芯片厂商应该没关系吧

使用特权

评论回复
板凳
aozima| | 2018-5-8 20:53 | 只看该作者
2楼真理,在头文件里面定义变量的,应该重修一下C语言。

使用特权

评论回复
地板
xyz549040622| | 2018-5-8 20:59 | 只看该作者
最速度的办法,贴上你的代码和工程包。

使用特权

评论回复
5
hbzjt2011| | 2018-5-8 23:36 | 只看该作者
贴出代码,分分钟搞定的问题

使用特权

评论回复
6
雨后梧桐| | 2018-5-9 08:30 | 只看该作者
不出意外的话就是像楼上说的,这是你自己的问题,C的用法问题。你在主函数文件开头上面加一句#define        ALLOCATE_EXTERN试试,应该就没问题了

使用特权

评论回复
7
pcf00|  楼主 | 2018-5-9 13:40 | 只看该作者
H文件里定义有 #define        ALLOCATE_EXTERN

使用特权

评论回复
8
gx_huang| | 2018-5-9 14:18 | 只看该作者
我一般用以下格式避免重复定义:
#ifndef COMMON_H
#define COMMON_H

#include "stm8l15x_it.h"
#include "stm8l15x.h"

#endif

使用特权

评论回复
9
567| | 2018-5-9 17:55 | 只看该作者
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。如果定义了ALLOCATE_EXTERN这个名称,h文件中就是定义变量,如果未定义ALLOCATE_EXTERN,那么h文件中就是声明外部变量。
正常的用法是,只在一个c文件中定义ALLOCATE_EXTERN,然后包含那个h头文件。在其它c文件中只包含h头文件,不定义ALLOCATE_EXTERN。
你参考官方例程是怎么写的就行。

使用特权

评论回复
10
pcf00|  楼主 | 2018-5-9 18:12 | 只看该作者
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没打码或看不清),就把以前测试的main.c和HC89S003F4.h拿来用,就出现以上错误;实在没法,就又在KEIL程序下的INC目录重拿一个HC89S003F4.h来用,看里面没有#define        ALLOCATE_EXTERN就在里面加了一个,居然好了,郁闷。
现在遇到的问题是居然不能下载代码,如图:RST在板子上已经断开了

33.png (305.47 KB )

33.png

11.png (22.9 KB )

11.png

22.png (56.38 KB )

22.png

使用特权

评论回复
11
pcf00|  楼主 | 2018-5-9 18:14 | 只看该作者
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写

使用特权

评论回复
12
pcf00|  楼主 | 2018-5-9 18:15 | 只看该作者
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写

使用特权

评论回复
13
pcf00|  楼主 | 2018-5-9 18:15 | 只看该作者
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写

使用特权

评论回复
14
xyz549040622| | 2018-5-9 22:51 | 只看该作者
pcf00 发表于 2018-5-9 18:12
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没 ...

芯圣的片子对供电要求比较高,官方的那个文档,多看几遍就好了。

使用特权

评论回复
15
xyz549040622| | 2018-5-9 22:51 | 只看该作者
pcf00 发表于 2018-5-9 18:12
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没 ...

芯圣的片子对供电要求比较高,官方的那个文档,多看几遍就好了。

使用特权

评论回复
16
hua00001| | 2018-5-10 07:58 | 只看该作者
看一百遍也没用,我被这个问题搞了好几天,咨询技术支持也说不出个所以然来,最后发现是他那个连接线太长了。你把小板都拔掉,用杜邦线直接连到HC-LINK上,线不要太长。还有,如果用着用着烧不进去了,拔一下USB。这个芯片质量怎么样我这边还没批量用,就不作评价,但是这个开发工具,说实话,还比不上一个手工作坊的。

使用特权

评论回复
17
pcf00|  楼主 | 2018-5-10 08:43 | 只看该作者
hua00001 发表于 2018-5-10 07:58
看一百遍也没用,我被这个问题搞了好几天,咨询技术支持也说不出个所以然来,最后发现是他那个连接线太长了 ...

照这样说还真不敢正式用在产品上,一天一问题,量产的话幺蛾子多了老板要斩人了
以前用STM32的样品,代理商还把技术支持带到公司来问有什么问题要帮助的,呵呵。用和泰的MCU在网上支持也给力,先是北京的技术支持,后来有他也弄不明白的问题就转给广州那边给解决了,至少态度上还可以的。

使用特权

评论回复
18
通宵敲代码| | 2018-5-10 09:01 | 只看该作者
源文件定义,头文件声明,
外部引用请使用extern。

使用特权

评论回复
19
yss2333| | 2018-5-10 15:29 | 只看该作者
chongdongchen 发表于 2018-5-8 20:23
虽然。。。不过,这个问题不就是C语言的基本使用问题吗,和芯片厂商应该没关系吧 ...

合格的二楼

使用特权

评论回复
20
zyj9490| | 2018-5-10 15:32 | 只看该作者
变量定义与申明的好的习性,在C文档定义变量,前加数据类型及初始化(针对简单类型),在H文档,参考8楼的宏定义,中间要引用的变量加extern ,不要初始化值,这样做法,永远不会出现重复定义这个问题,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

311

帖子

2

粉丝