stvd如何生成hex文件中出现库函数里面的东西提示没有定义,求助

2639人阅读
如何分配变量到指定的地址
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(&…&); 单行格式。
unsigned char temp_A;
Void func1(void)
LD _temp_A,A
注:在C嵌汇编环境下使用全局变量,要在该全局变量名称前加下划线&_&。
Void func1(void)
_asm(&rim&);
_asm(&nop&);
如何观察RAM/FLASH/EEPROM的最终分配情况
在Project-&settings-&linker选项页中,将Category选为Output,再勾选Generate Map File。
点击OK按键后,再次编译链接该项目,如果成功则会在项目输出目录中(本例是在C:\STM8_NewProject1\debug 目录下)生成 .map 文件。该文件详细地列出RAM/FLASH/EEPROM的分配使用情况。
如何生成hex格式的输出文件
在Project-&settings-&PostBuild选项页中,在commands栏内加入下行命令:
chex –fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8
再次编译链接该项目,如果成功则会在项目输出目录中(本例是在C:\STM8_NewProject1\debug 目录下)生成 .hex 文件。
什么是MEMORY MODEL
STM8的C编译器支持多种存储器模式。用户可以根据应用的需要选择最适合的配置。可以根据需要选择采用2个字节的寻址方式(仅适用于64k以内的程序)或者3字节的寻址方式。也可以规定将变量默认为定义在存储器的哪一区域:zero page内,还是zero page 外。下面对几种供选择的MEMORY MODEL做简单说明。
在Project-&settings-&C Complier选项页中,将Category选为General,里面有一个Memory Models选项栏如下:
在下拉菜单中共有4种MEMORY MODEL可供选择:
程序地址空间在64K以内(即程序容量小于32K)
modsl0 程序地址哦那个键在64K以上(即程序容量大于32K)
Stack Short
短堆栈模式
Stack Long
长堆栈模式
Stack Short
短堆栈模式
Stack Long
长堆栈模式
程序地址空间
程序所用到的地址空间在64K范围内
程序所用到的地址空间超出64K范围
指针默认类型
函数指针和数据指针默认为@near (2 bytes)
函数指针默认为@far(地址为3字节);
数据指针默认为@near
全局变量默认类型
所有全局变量的地址默认为1个字节。对于地址超出1个字节的变量,必须用@near定义
所有全局变量默认为Long型。若要将变量地址定义为1个字节,必须用@tiny定义
所有全局变量的地址默认为1个字节。对于地址超出1个字节的变量,必须用@near定义
所有全局变量默认为Long型。若要将变量地址定义为1个字节,必须用@tiny定义
.lkf 文件的作用
.lkf文件在程序链接时决定如何具体分配RAM/ROM的空间。在Project Settings – Linker – Category(Input)选项页中,当&Auto&选择框被选中时,由系统自动生成.LKF文件,否则由用户指定。
当&Auto&选择框被勾选时,.lkf文件会自动生成在项目主目录下的 debug/ 和 release/ 目录中。下面以上图所示 at45DBXX Project的 lkf 文件为例,来进一步理解.lkf 。
在.lkf中,以&#&开头的行是注释行,为方便用户理解,将原注释删除,代之以中文注释如下:
# 定义(+seg)一个常量段(.const),开始(b)于0x8080,最大分配(m)0x1ff80个字节(即不超过
# 0x27FFF),为该段起名(n)为.const(和常量段的保留字同名),需要初始化的变量的初始值存
# 放于此段(-it)
+seg .const -b 0x8080 -m 0x1ff80 -n .const -it
# 定义(+seg)一个程序段(.text),紧跟(-a)在.const段后面(和.const 共同位于0x8080 –
# 0x27FFF),为该段起名(n)为. text (和程序段的保留字同名)。
+seg .text -a .const -n .text
# 定义(+seg)一个EEPROM段(.eeprom),开始(b)于0x4000,最大分配(m)0x800个字节(即不超
#过0x47FF),为该段起名(n)为. eeprom (和EEPROM段的保留字同名)。
+seg .eeprom -b 0x4000 -m 0x800 -n .eeprom
# .bsct段服务于定义在0页(地址小于0x100)以内需要初始化的全局变量(如@tiny char a = 9;)
+seg .bsct -b 0x0 -m 0x100 -n .bsct
# .ubsct段服务于定义在0页(地址小于0x100)以内不需要初始化的全局变量(如@)
+seg .ubsct -a .bsct -n .ubsct
# .bit表示位域段,定义后即可在程序中使用_Bool变量(如_Bool c = 1;),-id表示该段需要初始化。
+seg .bit -a .ubsct -n .bit -id
# 这是ST7时代(STM8是基于ST7发展而来的)由于物理堆栈小,速度慢,使用内存来模拟堆栈的变通手段。
+seg .share -a .bit -n .share -is
# .data段服务于定义在0页(地址大于0xFF)以外需要初始化的全局变量(如@near char d = 8;)
+seg .data -b 0x100 -m 0x1300 -n .data
# .bss段服务于定义在0页(地址大于0xFF)以内不需要初始化的全局变量(如@)
+seg .bss -a .data -n .bss
# 段定义结束,下面放置的库及Obj文件中的变量、常量、程序就按照上面的规定进行分配。
#初始化程序
crtsi0.sm8
Debug\main.o
# 一些必要的cosmic库
libis0.sm8
# 重定义常量段,开始于0x8000,用于放置中断向量表(STM8硬件决定此位置)
# –k 用于程序冗余代码优化,详情可参考cosmic用户手册。
+seg .const -b 0x8000 –k
# 中断向量
Debug\stm8_interrupt_vector.o
#定义了三个变量,用于系统初始化
+def __endzp=@.ubsct # end of uninitialized zpage
+def __memory=@.bss # end of bss segment
+def __stack=0x17ff # 不同的芯片__stack内容不同,由系统自动生成
如何实现位操作
Cosmic C 编译器支持位变量的操作,可以将其定义成 _Bool类型。_Bool类型的变量只包含两种值true(1)或者false(0)。若将一个表达式赋值给_Bool变量,则编译器会将表达式与0做比较,然后将布尔值赋给_Bool变量。因此,任何整型或者表达式的值都可以赋给_Bool变量。但是,布尔变量不能定义位数组,只能定义成结构体或者联合。而且,_Bool变量会被打包成字节的形式。
编译器会将所有的全局_Bool变量打包成字节形式,存放在.bit section中。局部_Bool变量也会被打包成字节形式。但是_Bool类型的参数会被扩展成一个单字节。
具体的关于位变量的定义和使用可参考如下例子:
定义位变量:
使用位变量:
in_range = (value &= 10) && (value &= 20);
p_valid = /* p_valid is true if ptr not 0 */
if (p_valid && in_
在使用位变量时,若程序编译时提示如下错误:
#error clnk Debug\example.lkf:1 no default placement for segment .bit
The command: &clnk -l&C:\Program Files\COSMIC\CXSTM8_16K_4.2.10\Lib& -o Debug\example.sm8 -mDebug\example.map -sa Debug\example.lkf & has failed, the returned value is: 1
exit code=1.
实际上是由于,在项目中没有定义.bit section。可按照如下步骤,手工添加.bit section:
打开项目链接配置窗口:Project - Settings - Linker,选择 Input 目录项
在Zero page 或者 Ram 里面定义一个.bit section.
然后重新编译一下就可以了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:68525次
积分:1300
积分:1300
排名:第16605名
原创:53篇
转载:76篇
(5)(5)(1)(1)(1)(1)(4)(3)(3)(10)(6)(16)(12)(6)(2)(10)(20)(23)??STVD+COSMIC??????????????_EEWorld电子工程世界搜索中心
搜索范围:
一周以内&&&&
搜索到约<span style="color:#项结果
我在用STVD时,写了个效大的程序,可有个子程序跳不出来,我单步看发现是下
图中的第一个for总是跳不出,主要是在 i = 5 时,在汇编0x9648处把 i 清零,这倒底是不是COSMIC编绎器的问题?
我选是的stm8s105的单片机,已把所有的优化取消了,还是跳不出来。
u8 Get_data_code(u8 *p,u16 in_data)
.cn/thread--1.html 发布时间:
stvd支持JLINK仿真吗?如果支持应该如何设置? boesdt 51781 JLINK是否支持STM8仿真下载?
NO! ashsworld 55439
不支持 shen
Segger不愿意,技术其实很简单。 wenyang
的确是不支持 syly 50212
不支持 流氓法拉利...
.cn/thread--1.html 发布时间:
请问大家使用STM8S103K3时有遇到以下问题吗?
使用STVD4.1.3+Cosmic 芯片:STM8S103K3
MCU select不管是选择STM8S103F3还是STM8S103K3都可以连接成功
但是与STM8S103F3不一样的I/O无法控制,如PD0/PB0/PB1/PB2等,其他I/O
口很正常.请问有谁知道是什么原因吗?? rissun 52265...
.cn/thread--1.html 发布时间:
编译环境:STVD4.1.2 +COSMIC Version: 4.2.8.
报错如下:
#error cpstm8 stm8s_it.h:27 can't open stm8s_lib.h
#error cpstm8 stm8s_it.c:626(9+3) bad struct/union operand
#error cpstm8 stm8s_it.c:629(23...
.cn/thread--1.html 发布时间:
hurton 54041
期待ing sb010
倒计时中、、、 xiaohei7 55259
哈哈,大家都用起来呀 fzp12 54578
我用STM8S103F的板子都回来了,就差IAR STM8了,用了下COSMIC和STVD,比较糟糕,根本不专业,错误提示看不懂,错误定位不准确,准备先当IAR STM8的小白鼠...
.cn/thread--1.html 发布时间:
。基于STM8Sxxx-TS1-EVAL演示板的软件在STVD开发平台下设计,使用COSMIC-C语言编译器,包括完整的源代码。 对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。这种情况通常要求对按键使用一个独立的MCU,以保证不被其他任务中断。为了提高系统的可靠性...
.cn/dygl//article_16687.html 发布时间:
。基于STM8Sxxx-TS1-EVAL演示板的软件在STVD开发平台下设计,使用COSMIC-C语言编译器,包括完整的源代码。 对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。这种情况通常要求对按键使用一个独立的MCU,以保证不被其他任务中断。为了提高系统的可靠性...
.cn/dygl//article_16687.html 发布时间:
Keil,STVP,STVD,IAR,COSMIC,STM32 ST-LINK Utility;
& & 2、JLink /JLink arm ob仿真器10pin,不丢固件,支持IAR EWARM 和 KEIL MDK,支持两种下载模式:SWD/JTAG,直接与电脑USB 接口连接,无需USB 线缆,可用三根线,完成高速调试、下载,提供JTAG10引脚接口...
.cn/my/space-uid-476285-blogid-218772.html 发布时间:
C语言里可以用sbit指令将端口的某一位定义成变量,不过在STVD里该指令好象不能被识别,编译也通不过。请问ST单片机该用什么指令来将端口的某一位定义成变量呢?请多指教,谢谢! aaixinjue 51502 ST单片机C语言有什么指令定义端口的某一位做变量?
_Boot&&来定义某一位 ercunique 51892
能不能麻烦你给个示例...
.cn/thread--1.html 发布时间:
把你的变量加到watch中
RIDE好像不支持运行中读取变量,STVD支持 xiaobao979 55232
把你的变量加到watch中
RIDE好像不支持运行中读取变量,STVD支持
太感谢了,请问怎样加到watch中呢?如果ride不支持这个方法,还有什么办法能达到我的目的? xingcard 55355
顺便问一下,看你的id是否你就是在...
.cn/thread--1.html 发布时间:
void delay(uint t)//延时nus
for(x=t;t&0;t--)
& & _asm(&nop&);
& & _asm(&nop&);
为什么用stvd软件仿真看的不是nus...
.cn/thread--1.html 发布时间:
STMicroelectronics provides a free software package for STM8S-Discovery. The tool is supported by IDE from ST (STVD) and C compilers from Cosmic and Raisonance.
Set-up your environment in three steps...
.cn/thread-.html 发布时间:
要用ST的触摸库,应该在什么地方指定.TSL_IO_ALCODE
请大虾指教 chunxilu STM8S103K怎么定义.TSL_IO_ALCODE
你使用了与原库指定的MCU不同型号,所以原来的默认定义设置被修改了。 打开你的STVD工程,找到项目设定对话框:
搞什么,新的21ic咋不能上传图片涅。 cqwangsf 22950...
.cn/thread--1.html 发布时间:
大家好,我刚开始接触STM8,请问如何用库函数创建LED闪烁灯工程?我用STVD。创建过程越详细越好。谢谢。 HYfrtr550 416310 stm8如何用库函数创建一个LED例程 用库函数操作很难讲啊,你得自己慢慢摸索才好,不过,在一些对程序大小和速度要求较高的地方,使用库都会对他们造成负面影响的!!!…………建议还是从寄存器开始搞吧……………… zhixiaoyuhong 282106
.cn/thread--1.html 发布时间:
在STVD+COSMIC中,OPTION字节能否直接用软件配置后,编译后直接把相关数据加到HEX文件中,使用编程器软件打开后,自动把OPTION加载进来,免了烧片工人的OPTION操作,避免出错。
这类如PIC的CONFIG,在应用程序开头直接使用关键字CONFIG定义即可。
ST有没有类似的办法?! amzip 53123 STM8中OPTION字节如何软件配置...
.cn/thread--1.html 发布时间:
新购买的10pcs STM8L Discovery无法使用在板的STLink连接调试。
操作系统试过Windows 7 专业版、Windows XP,一共5台计算机都无法调试,但有台计算机使用Windows 7家庭版可以连上调试。
在出问题的计算机上软件使用过STVD 4.2、STVP3.22都无法连上,提示无法通讯。
但使用ST Link固件升级软件是可以升级的,固件版本...
.cn/thread--1.html 发布时间:
吗?这个模拟软件有问题啊?版主看看,给个答复。
amw04 这个例子COMPILER:
RCST7 Optimizing,我用的是COSMIC的
请看看啊,这个是否是STVD软件的bug????代码如下:void&main(void){&&&&//&Set&internal&RC...
.cn/thread--1.html 发布时间:
STM8固件库如何使用?stvd comsic 建工程都需要配置固件库吗? tianhao 52458 STM8固件库如何使用?
固件库是一种辅助手段,也是初学者学习该类MCU的入门钥匙。如果熟悉了它的模式,完全可以定义适合自己使用的固件库。所以,不是每个工程非得包含固件库。
stm8固件库都有详细的说明,比如IO操作的有gpio,时钟控制的有clk等。要使用固件库,需要...
.cn/thread--1.html 发布时间:
最近再使用STM8S207RB进行开发,以下是自己使用cosmic时遇到的一些常见问题:
1.printf/sprintf入口参数必须是u16类型,否则打印结果不正确,很奇怪
2.u32位类型的判断if ((val%0x1000) == 0)此判断前必须强制转换,即
& & if ((u16)(val%0x1000) == 0),否则if每次都成立...
.cn/thread--1.html 发布时间:
各位大侠&&我用的STVD编译器&&为什么只有io相关寄存器可以设置其他寄存器都不可以设置呢??比如执行完 TIM2_CR1 = 0x01; 后 查看寄存器 TIM2_CR1 的值依然是0
& & 用的是STM8L152C6 单片机& &还有ST-LINK仿真器
谢谢各位 lin...
.cn/thread--1.html 发布时间:
相关结果约409个STM8 软件STVD使用教程_EEWorld电子工程世界搜索中心
搜索范围:
一周以内&&&&
搜索到约<span style="color:#项结果
请问STVD要怎么设置才能进行动态仿真?
就是说STM8使用ST-LINK仿真的时候,不需要停止仿真就能看到各个窗口的值的变化,还可以在窗口中直接修改寄存器的值。
请各位大侠,不吝赐教!万分感激! ygu7edy 337080 请问STM8 STVD要怎么设置? 没人知道吗?还是不能实现? ygu7edy 337080
.cn/thread--1.html 发布时间:
如何使用STM8的库函数 Qsfgvnkl 399888 stm8函数库 看看 yading_1 167297
.cn/thread--1.html 发布时间:
stm8键盘扫描程序有什么中断,之前用iar时用tim2中断能用,换了stvd的cxstm8后不能用了。
d9560 关于stm8编程 ...
.cn/thread--1.html 发布时间:
刚开始学stm8,不知道怎么设置的将STVD里面的下载器的选项字设置成了读保护,后面每次给stm8芯片烧写程序就显示Error : The device is protected,Operation aborted……怎么办才能将程序烧写进芯片。用什么工具 zx stm8问题 本问题已解决,直接在stvd里面擦出程序就行。 zx
.cn/thread--1.html 发布时间:
,呵呵,可能楼主没好好看之前的帖子吧 ryudo 54126
使用EP868烧写STM8S,可强制加密。 周新眼 55163
小弟新手,找了一下没有找到,最进才开始关注STM8 leungpokit 56001
.cn/thread--1.html 发布时间:
STVD对stm8s的仿真好不好用?怎么使用的,有没有什么资料给提供一下 刘笑笑 553950 stm8仿真求助 有心无力啊 kemasz 485095
.cn/thread--1.html 发布时间:
STM8使用外设的时候,比如UART时,怎么没有对那些复用的管脚说明切换什么的,直接就当做外设的引脚用了? 淮海的大学 420123 STM8使用外设的时候 ...
.cn/thread--1.html 发布时间:
哪位大虾有STM8的中文教程啊?
能共享一下吗?谢谢! xx_replayer 51882 STM8资料
版主应该有吧 wolf365 53748
请在ST网站下载:.cn/stonline/mcu/MCU_Pages.htm 三生石 55612
只有一部分有中文 ys1100cn...
.cn/thread--1.html 发布时间:
STM75,可惜期望越大失望越大,不知STM8的低压版有否?现在在ST的网站上是可以下载到STM8A的datasheet的,我已经有几个客户在使用这个用于Automotive在设计产品了。STM8的的开发工具IDE还是STVD7,这个在STVD7的最新版安装后在device中也是可以看到对于的支持的型号的。RIDE7也支持STM8平台的,只是很奇怪,在RIDE的inc文件夹下竟然发现有STM75...
.cn/thread--1.html 发布时间:
请教st&的STM8单片机推出后将用什么开发工具(硬件,软件)进行开发相关的中文资料什么时候能出 duguke 50637 关于STM8的问题
RLINK(硬件工具)+&ST&Visual&Develop(除C编译器以外软件)+&Cosmic(C编译器)
lnb67 我知道一个...
.cn/thread--1.html 发布时间:
stm8 编译器 软件仿真为什么不能进中断?定时器也不计数?但用Rlink连接调试时却很正常。 ydm123ydm 52307 stm8编译器软件仿真
我现在也碰到这个问题,是为什么呢? liplip 51850
STM8也有软件仿真? 94
这个可以有,呵呵。
好东西呀:
stvd_sim.JPG...
.cn/thread--1.html 发布时间:
看起来貌似确实很牛 pl
偶弄个代码来测试一下?
STM8可以玩花指令的,反汇编可能还需要加入跳转的判断(区分指令和数据)。
当然,正常使用的话,估计没有这个必要。
准备个简单的花指令看看,弄好后发上来,手动编译,有错误请提示:
xCC, 0x80, 0x05& &&&JP...
.cn/thread--1.html 发布时间:
全是STM32的贴子.为什么我的全局变量不会被初始化为0?有人知道吗,指点一下,谢谢了。我用STM8,C编译器为Raisonance,IDE为STVD moseshuilan 43405 没人用STM8吗?
zhou. 我顶
flaty 53540 我再顶
canycall 54130 启动代码会自动清零...
.cn/thread--1.html 发布时间:
请教一下&&我在使用stm8s103k3芯片的时候定义了一个数组后提示:&&&#error&clnk&Debug
adiogram.lkf:1&segment&.bss&size&overflow&(1)&&我看了一下内存我才用300字节左右,根本...
.cn/thread--1.html 发布时间:
难道你出一套IC,我就得学一种应用软件?就得为你的IC买一份单?
KEIL C现在在中国应用已经很普遍了,为什么就不给用它来编译你们IC程序?
难道因为你们的商业同盟,就让应用者都阻拦在门外?试问用不起来,用不上量,你们的损失又有多大? but_ STM8不能使用KEILC编译器吗?
IDE都是相通的 Hellenlee 44288
.cn/thread--1.html 发布时间:
,这里介绍一下STM8系列MCU的软件和硬件环境,方便想用的快速了解。
一、集成开发环境和C编译器软件
/stonline/products/support/micro/files/st7toolset.exe
这是ST官方的集成开发环境,早期叫STVD7是因为支持ST7系列MCU,后因STM8的推出,改名为STVD,当前最新的版本4.0.1...
.cn/thread--1.html 发布时间:
。站在软件的层面学习,不同的单片机只是底层区别而已。 zhaojun_xf 66265 回复 沙发季夏木槿 的帖子 请问能发我一个stm8串口中断通信的程序例程吗
我在调试中断,进步了中断 月亦无恨 548515
请问能发我一份stm8串口通信的程序例程吗,我在调试串口,进不了中断 月亦无恨 548515
不知最后是什么原因?
谢谢。 oyster 81888
.cn/thread--1.html 发布时间:
下载最新的STVD,STVD7是ST7用的
t stm8之stvd7开发环境
我的不是stvd7&&我下的是最新的&&里面芯片选择都有stm8
fsymd 11105 对不起我的错
链接文件有问题-我估计,可能链接文件指向的crtsi0.sm8,...的路径不对。可以打开STVD的目录...
.cn/thread--1.html 发布时间:
不晓得现在STM8和STM32能被破解吗?解密公司都说能破解,是真的吗?那以后该用什么芯片设计呀? shoumgz 64439 STM8和STM32能破解吗? 你是指反汇编? astwyg 272563
没有啥是不能破解的!
看你能不能接受破解的成本…… IC爬虫 351993 回复 楼主 shoumgz 的帖子 呵呵……:~o ilovemcu w的破解代价吧,定这个价...
.cn/thread--1.html 发布时间:
]这一点是关键[/font],[font=宋体]把[/font]STM8[font=宋体]库下的[/font]**\FWLib\project\STVD\Cosmic
STM8_interrupt_vetor.c[font=宋体]考到你的新工程目录下。[/font][/font]
[font=宋体]4.[font=宋体]打开库中的[/font]example[font=宋体]目录下的一个例子...
.cn/thread-.html 发布时间:
相关结果约63,456个查看: 328|回复: 0
STM8单片机开发时常见问题解决
STM8S103系列没有bootloader引导程序,别的系列都有bootloader了
为什么新的STM8 单片机在串口口下载时只能下载一次?
出场的STM8 单片机内部并不是绝对的空白,内部有bootloader 存
在,在我们进行串口下载的时候,下载软件需要先和STM8 的
bootloader 进行通信在得到bootloader 的回答的时候才可以进行下载,
也就是此时的bootloader 的状态必须是ENABLE 的,但是在单片机
内部是空的时候,单片机的bootloader 处在disable 状态,但是可以
进行一次烧写,第一次下载的程序必须要修改option byte,使得
Bootloader enable,这样以后可以一直用串口下载了。否则,就在也
没有办法进行串口下载程序了,这时需要使用ST link 对bootloader,
进行ENABLE,方可继续进行ISP 的下载。
在STVD 新建工程的时候工程的名字不要有空格有空格的话啊会有
1 有的时候进行编译打不开头文件,因此而出现的错误
答:将相应的包含文件复制到COSMIC 安装文件夹下面的Hstm8 文
件夹下面即可。编译时自动进行连接
2 怎样书写中断函数并且在主函数文件 main.c 中调用函数的中断
服务程序?
答 在stm8_interrupt_vector.c 文件里面的中断向量的映射
{0x82, NonHandledInterrupt} 的字符 “NonHandledInterrupt”改为所
要书写的中断函数的函数名
例 TIME4 的 溢出中断改写为{0x82, TIM4_UPD_OVF_IRQHandler}
然后在文件中进行函数终端服务程序的声明,形式
@far @interrupt void TIM4_UPD_OVF_IRQHandler (void);
然后在主函数中进行函数服务程序的书写形式如
@far @interrupt void TIM4_UPD_OVF_IRQHandler (void)
如何生成HEX 文件
、STVD 如何输出hex 文件
菜单栏 Project -& Setting 打开“Post_Build”标签,命令框原默认定义:
chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8
输出S19 格式的目标文件。
在其中增加或修改为:
chex -fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8
即可输出hex 格式目标文件。
生成hex 文件被输出到目录 项目“\Debug”目录下。
怎样对STM8 单片机进行位操作
_Bool 在程序中使用的位名称 @ 寄存器:位数;
_Bool FLAGB0 @FLAG:0;
_Bool&&led @PD_ODR:0;& &&&//定义led是接在PD端口的0位
STM8 单片机寄存器操作时的中断函数写法如下定时器1
@far @interrupt void TIM1_OVER_Int(void)
TIM1_SR1 = 0x00;
上面的是用CXSTM8 + STVD开发时的常见问题。
下面介绍的是STM8在用IAR for STM8开发时的问题:
位定义&&如: PD_ODR_ODR3 = 1 ;&&//让PD端口的3位输出高电平
输出HEX方法:
中断函数写的方法:
#pragma& &vector = TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
& & TIM1_SR1_UIF = 0;
& &//写的代码放这里
芯片选择:
如果项目内包含多个文件包就放入连接路径,如下图:
调试时一般用的是ST-LINK:
综上所说后,关与STM8单片机加密的问题,可以在写程序时加入指令,可以直接用STVP软件实现代码加密下图:
如果开,则就是加密启作用,如果选择OFF则就是代码不保护,就能用ST-LINK读出芯片里面的代码HEX
最后关于端口方向设定:
关于STM8的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是STM8的I/O引脚配置表:STM8 I/O 口引脚配置表Px_DDRPx_CR1Px_CR2I/O 方式引脚状态说明
000输入悬浮输入
001输入上拉输入
010输入中断悬浮输入
011输入中断上拉输入
100输出开漏输出
110输出推挽输出
1X1输出输出(最快速度为10MHZ)
Powered by}

我要回帖

更多关于 stm8开发环境 stvd 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信