STM8S编译出错,如何解决?

STM8S编译出错,如何解决?,第1张

第一个回复太扯几把蛋了,答非所问,还不懂装懂。这个情况貌似是因为用了没有破解版的COSMIC或者是没有打补丁。你上网搜个免费的破解版本COSMIC就行,有些是要打补丁的。安装完之后记得在project->setting里面把路径重新选一下,还有记得把工程文件的中断程序的路径也要选对。找不到COSMIC可以给我留邮箱。

#error cpstm8 C:\Program Files\COSMIC\CXSTM8_32K\Hstm8\mods0.h:1

FlexLM System clock has been set back.

//mods0头文件第一行系统时钟延迟导致错误,第一行是该头文件的路径

如何分配变量到指定的地址

举例:

unsigned char temp_A@0x00//定义无符号变量temp_A,强制其地址为0x00

unsigned char temp_B@0x100//定义无符号变量temp_B,强制其地址为0x100

@tiny unsigned char temp_C//定义无符号变量temp_C,由编译器自动在地址小于0x100的RAM中为其分配一个地址

@near unsigned char temp_D//定义无符号变量temp_D,由编译器自动在地址大于0xFF的RAM中为其分配一个地址

另外也可以采用伪指令"pragma"将函数或者变量定义到指定的section中,例如:

#pragma section [name] // 将下面定义的未初始化变量定义到.name section中

Unsigned char data1

Unsigned int data2

……(任何需要定义在.name section中的变量)

……

#pragma section [] // 返回到正常的section.

注意:pragma伪指令可以用来定位函数,初始化变量或者未初始化变量。这三者用不同的括号区分。

(name):代码

[name] :未初始化变量

{name}:初始化变量

如何在COSMIC C文件中使用汇编语言

在COSMIC C文件中使用汇编语言常见的方法有如下两种:使用#asm …#endasm组合格式

或_asm("…")单行格式。

举例1:

unsigned char temp_A

Void func1(void)

{

...

#asm

PUSH A

LD A,(X)

LD _temp_A,A

POP A

#endasm

...

}

注:在C嵌汇编环境下使用全局变量,要在该全局变量名称前加下划线"_"。

举例2:

Void func1(void)

{

...

_asm("rim")

_asm("nop")

...

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11481224.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存