打印
[STM8]

没人用STM8吗?

[复制链接]
2668|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gangdou|  楼主 | 2009-5-26 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8, IDE, AN, ce, tv
全是STM32的贴子.

为什么我的全局变量不会被初始化为0?有人知道吗,指点一下,谢谢了。

我用STM8,C编译器为Raisonance,IDE为STVD
沙发
gangdou|  楼主 | 2009-5-26 16:10 | 只看该作者

我顶

使用特权

评论回复
板凳
gangdou|  楼主 | 2009-5-26 16:39 | 只看该作者

我再顶

使用特权

评论回复
地板
myfaith| | 2009-5-26 16:55 | 只看该作者

启动代码会自动清零啊

使用特权

评论回复
5
McuPlayer| | 2009-5-26 19:17 | 只看该作者

“全局变量不会被初始化为0”不是C编译器的义务

除非你声明的时候,同时是一个赋值为0的语句。

尽量减少对编译器增强特性的依赖,因为各家的C编译器对增强的侧重点有差异。

使用特权

评论回复
6
gangdou|  楼主 | 2009-5-26 21:44 | 只看该作者

回4楼

我知道启动代码会自动清零,正是因为启动代码没有把我的全局变量清零,所以我找不到原因啊.

使用特权

评论回复
7
香水城| | 2009-5-27 01:30 | 只看该作者

最好不要对启动代码或编译器的行为作任何假设

始终通过程序初始化程序变量,这样保证程序的可移植性和可靠性。

使用特权

评论回复
8
gangdou|  楼主 | 2009-5-27 08:13 | 只看该作者

刚用STM8,请问香水域

编译器为Raisonance是不是自动会把下面的启动程序段编译进去???不是把全局变量初始化为0?

CST7_START:
CST7_START_V:
CST7_START_Z:
CST7_START_V_Z:


; Comment out the following line if your project does not use any
; 0-initialized C global variables initialization.
; ?C?ZeroData must be called BEFORE ?C?InitData
    CALL    ?C?ZeroData                ; Initialize null global variables

; Comment out the following line if your project does not use any C global
; variables initialization. If you are unsure, just leave it as it is.
    CALL    ?C?InitData                ; Initialize global variables.

    JP      main                       ; Call the user entry point (main)
                                       ; main must NEVER return!

使用特权

评论回复
9
gangdou|  楼主 | 2009-5-27 08:21 | 只看该作者

解决了

要添加一个INITSTATICVAR编译选项

使用特权

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

本版积分规则

138

主题

167

帖子

1

粉丝