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

[复制链接]
1690|29
 楼主 | 2018-5-8 20:04 | 显示全部楼层 |阅读模式
目前在试用HC89S003F4这颗料,用的KEIL写代码,用的是官方补丁包。
先照网上的例程简单测试,通过了;例程都是单一文件。当在项目文件里加载2个以上C文件时,且都#include"HC89S003F4.h",编译时就出现某些寄存重复定义,试着做了一些修改,也不行。不知道怎么回事。
请教技术支持,叫我“请说”,我说了,然后,没然后了。。。
本来想用STC的一个同款,只是还没出来。。。有销售商叫试用新塘,暂备用吧。
| 2018-5-8 20:23 | 显示全部楼层
虽然。。。不过,这个问题不就是C语言的基本使用问题吗,和芯片厂商应该没关系吧
| 2018-5-8 20:53 | 显示全部楼层
2楼真理,在头文件里面定义变量的,应该重修一下C语言。
| 2018-5-8 20:59 | 显示全部楼层
最速度的办法,贴上你的代码和工程包。
| 2018-5-8 23:36 | 显示全部楼层
贴出代码,分分钟搞定的问题
| 2018-5-9 08:30 | 显示全部楼层
不出意外的话就是像楼上说的,这是你自己的问题,C的用法问题。你在主函数文件开头上面加一句#define        ALLOCATE_EXTERN试试,应该就没问题了
 楼主 | 2018-5-9 13:40 | 显示全部楼层
H文件里定义有 #define        ALLOCATE_EXTERN
| 2018-5-9 14:18 | 显示全部楼层
我一般用以下格式避免重复定义:
#ifndef COMMON_H
#define COMMON_H

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

#endif
| 2018-5-9 17:55 | 显示全部楼层
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。如果定义了ALLOCATE_EXTERN这个名称,h文件中就是定义变量,如果未定义ALLOCATE_EXTERN,那么h文件中就是声明外部变量。
正常的用法是,只在一个c文件中定义ALLOCATE_EXTERN,然后包含那个h头文件。在其它c文件中只包含h头文件,不定义ALLOCATE_EXTERN。
你参考官方例程是怎么写的就行。
 楼主 | 2018-5-9 18:12 | 显示全部楼层
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没打码或看不清),就把以前测试的main.c和HC89S003F4.h拿来用,就出现以上错误;实在没法,就又在KEIL程序下的INC目录重拿一个HC89S003F4.h来用,看里面没有#define        ALLOCATE_EXTERN就在里面加了一个,居然好了,郁闷。
现在遇到的问题是居然不能下载代码,如图:RST在板子上已经断开了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-5-9 18:14 | 显示全部楼层
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写
 楼主 | 2018-5-9 18:15 | 显示全部楼层
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写
 楼主 | 2018-5-9 18:15 | 显示全部楼层
567 发表于 2018-5-9 17:55
芯圣的这个头文件比较怪异,
有些寄存器是位于xdata内存空间,在h文件中,将这些寄存器定义或声明为变量。 ...

其实我只想用一下MCU寄存器定义的H文件,其他都是自己写
| 2018-5-9 22:51 | 显示全部楼层
pcf00 发表于 2018-5-9 18:12
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没 ...

芯圣的片子对供电要求比较高,官方的那个文档,多看几遍就好了。
| 2018-5-9 22:51 | 显示全部楼层
pcf00 发表于 2018-5-9 18:12
开始是试用官板测试了一个LED代码,通过了。就觉得问题不大,就自己做了一块板来测试(官方送了几块MCU,没 ...

芯圣的片子对供电要求比较高,官方的那个文档,多看几遍就好了。
| 2018-5-10 07:58 | 显示全部楼层
看一百遍也没用,我被这个问题搞了好几天,咨询技术支持也说不出个所以然来,最后发现是他那个连接线太长了。你把小板都拔掉,用杜邦线直接连到HC-LINK上,线不要太长。还有,如果用着用着烧不进去了,拔一下USB。这个芯片质量怎么样我这边还没批量用,就不作评价,但是这个开发工具,说实话,还比不上一个手工作坊的。
 楼主 | 2018-5-10 08:43 | 显示全部楼层
hua00001 发表于 2018-5-10 07:58
看一百遍也没用,我被这个问题搞了好几天,咨询技术支持也说不出个所以然来,最后发现是他那个连接线太长了 ...

照这样说还真不敢正式用在产品上,一天一问题,量产的话幺蛾子多了老板要斩人了
以前用STM32的样品,代理商还把技术支持带到公司来问有什么问题要帮助的,呵呵。用和泰的MCU在网上支持也给力,先是北京的技术支持,后来有他也弄不明白的问题就转给广州那边给解决了,至少态度上还可以的。
| 2018-5-10 09:01 | 显示全部楼层
源文件定义,头文件声明,
外部引用请使用extern。
| 2018-5-10 15:29 | 显示全部楼层
chongdongchen 发表于 2018-5-8 20:23
虽然。。。不过,这个问题不就是C语言的基本使用问题吗,和芯片厂商应该没关系吧 ...

合格的二楼
| 2018-5-10 15:32 | 显示全部楼层
变量定义与申明的好的习性,在C文档定义变量,前加数据类型及初始化(针对简单类型),在H文档,参考8楼的宏定义,中间要引用的变量加extern ,不要初始化值,这样做法,永远不会出现重复定义这个问题,
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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