[STVD可能有bug]向量文件中变量数值不能超过36767(即不能超过2字节)

STVD调试出错解决方法 在安装 ST Toolset 和 Cosmic 编译器之后,使用 ST 官网的 Demo 程序,在 STVP 中连接正常,可以正常烧写。但是当使用 STVD+Cosmic 开发环境进行开发时,一点 Debug 按钮,就会弹出来对话框:“** Connection error (usb://usb): gdi-error [40201]: can't access configuration database”。 立即下载

我刚接触stm8s时候,发现有两款编辑器,STVD和IAR,但两款都有些问题,不过最后我还是选择了IAR,因为STVD问题更多,而且还有些致命缺陷。

而下面说的是我发现的一个bug。但是无法解决。


STVD新建一个工程后,会有两个文件main.c和stm8_interrupt_vector.c。后者是中断向量文件。

但是,如果你在这个文件中定义函数的话……

比如下面的函数,其他工作比如添加函数到向量表中就不说了。

其中jiffies是unsigned int类型,stm8s中的int类似是16位,因此,jiffies的范围是0~65535。没有问题。

编译一下,也没有问题。

 @far @interrupt void irq_time_ovf(void)
{         
        jiffies++;
        if (jiffies >= 32767)
                jiffies = 0;
}

但是我把那个32767换一下,换成32768

 @far @interrupt void irq_time_ovf(void)
{         
        jiffies++;
        if (jiffies >= 32768)
                jiffies = 0;
}

再次编译,就会出现段重合错误

 segments .text (0x8083-0x813a) and .const (0x8000-0x8084) overlap
 segments .const (0x8000-0x8084) and .init (0x8080-0x8083) overlap

-------------------------

经过其他测试,我们以下结论可以得出。

一,在stm8_interrupt_vector.c中,函数定义里的变量不能超过2个byte。这个函数不仅仅是中断处理函数,还包括放在这个文件中的普通函数,这个变量限制对全局变量局部变量同样有效。
二, 同样,尽管我定义的类型是unsigned int,但在这个文件中的变量默认是signed类型,当变量超过32767,那编译器会隐式提升类型为signed long。就算在使用前声明为extern unsiged也不行,但是在使用中进行强制类型转换(unsigned int )或者数字后面加u是可行的。
三,不可以用long类型。仅仅定义也不可以。即不可以让变量超过2个byte。
四,但是,如果函数定义在其他地方,而该文件只是声明引用的话,没有问题。

伍,粗略看了下链接文件,该文件是链接到const区域的,也许是这个问题。但是后来我换IAR了,没有进一步研究。


相关网址http://bbs.youkuaiyun.com/topics/390988825

【银河麒麟服务器】银河麒麟V10 SP3高级服务器操作系统网卡配置完全指南:图形界面、Network、NetworkManager、IP 地址、路由与端口聚合详解 本文系统介绍了银河麒麟V10SP4服务器操作系统的网络配置方法,涵盖图形界面、NetworkManager、nmcli命令行等多种配置方式。重点讲解了IP地址设置、路由管理以及端口聚合(Bonding)的实现,包括传统配置文件、nmcli和nmtui三种Bonding配置方案。文章对比了NetworkManager与传统network服务的区别,并提供了常见网络问题的排查建议。通过多种配置方法的详细说明,帮助用户掌握银河麒麟服务器系统的网络管理技能,构建稳定可靠的网络环境。 阅读详情

相关推荐

硬件工程师必看:5种ESD保护电路设计实战解析(附电路图)

本文为硬件工程师深度解析5种实战ESD保护电路设计,涵盖TVS二极管、专用保护芯片、片上防护及高速射频场景方案。通过具体电路图,详解工作原理、选型要点及PCB布局黄金法则,重点强调ESD防护设计中的能量泄放路径管理与低阻抗实现,助力提升产品可靠性。

xk7n92h3p5m的博客 637

STM8问题汇总

更新、汇总所有遇到的STM8相关问题 1.在STVD上开发,Build提示bad struct/union operand   这是因为工程文件太大的缘故,对提示的没有使用到的头文件,源文件进行删减即可解决问题

arenascat的博客 8010

VS Code配置MinGW64编译非线性优化库NLopt

VS Code用MinGW64编译C++代码安装MSYS2软件并配置非线性优化库NLopt和测试引用库代码的完整具体步骤。:若使用非UCRT版本(如传统MinGW64),替换所有路径中的。库文件会自动安装到MSYS2的。

weixin_30777913的博客 902

STVD 调试STM8S所遇到的问题

环境为主控芯片: STM8SF103F3,编译器 COSMIC8,IDE环境为STVD。 大概代码如下: u8 ret; ret=rf_get_addr_len(); ret=rf_get_trint_level(); ret=rf_get_drssi_level(); ret=rf_get_dest_provider(); ret=rf_get_addr_le

8281

保姆级教程:用YOLOv5+ROS2 Humble搞定奥比中光Dabai DCW深度相机的3D物体定位

本教程详细介绍了如何使用YOLOv5模型和ROS2 Humble系统,结合奥比中光Dabai DCW深度相机实现3D物体定位。从环境配置、模型部署到深度数据融合,提供完整的实战指南,帮助开发者快速掌握三维坐标提取技术,适用于机器人开发和计算机视觉应用。

weixin_26765363的博客 270

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 798

第一个STM8项目的记录

说明我的第一个项目是stm8。 显示部分是点阵加数码管,通过串口控制下位机变频器的运行。虽然看起来很简单,但是项目复杂度超过我以前开发板上的所有项目,因此碰到了很多前所未有的问题。在此记录一笔。 注,这是本人第一个项目的记录,不保证科学与正确1,misplaced local declaration错误变量必须在函数的最开始处一口气全部声明或者定义掉 这其实是说明cosmic不支持c99的原因

零界 5479

Element-cascader级联选择器增加全选功能

element el-cascader

weixin_44384273的博客 3728

stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化

stm8s008空间大小是8K 使用的时候会出现空间不够用的情况,这个时候要对软件进行一些设置,从而优化程序大小。 1,修改优化等级,如下图所示,这样会优化掉无关的函数,将代码优化到最大程度 2,如果代码有多个数组,而ram实际空间不够使用的时候,修改下面的参数,最大修改为0xfff。 3,当二维数组定义完报错,无法容纳的时候,在数组前面加上NEAR可解决报错 例如

皈依 7426

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 303

20、啁啾脉冲光纤放大器:原理、设计与仿真

本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。

v4w5x6的博客 318

使用STVD+COSMIX编译STM8S工程问题汇总

1)#error cpstm8 main.c:231(10) missing prototype 解决方案:所有函数声明和定义都要带形参。 例: void SysInit(void);void SysInit(void){} 2)  warning: Toolset rootpaths have not been specified for at least one of supported

zzz1014440164的博客 3645

jeecg-boot getDictItemsByTable接口存在SQL注入漏洞CVE-2024-48307

微信公众号搜索:南风漏洞复现文库该文章 南风漏洞复现文库 公众号首发JeecgBoot 是一款开源的的低代码开发平台。

nnn2188185的博客 330

stm8编程tips(stvd)

编译完成时显示程序占用的flash和ram大小 将附件压缩包中的mapinfo.exe解压到stvd的安装路径\stvd中 在工程上点右键选settings 右侧的选项卡选择Linker,将category的下拉框选成output,然后在Generate Map file前打勾 再将选项卡上选择到Post-Build,在下方文本框中新粘贴一行内容mapinfo $(OutputPath...

weixin_30457065的博客 582

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Kylin中Segments overlap的解决办法

Kylin中Segments overlap的解决办法 (1)尝试refresh 如果显示失败请看下面解决方案 (2)disable掉当前cube(如果失败,可以重启kylin服务) (3)delete Segement 删掉影响build的segement模块 (4)重新build 指定日期区间

Jim-杨的博客 642

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

STM8S提示错误信息的原因及解决办法

把产品样板连上  STM8S-DISCOVERY 开始全速运行,发现先后弹出两个错误提示框: 第一个:Error:swim error [30004]: comm timeout 点击确定后,继续全速运行,弹出第二个错误。 第二个错误:Error: gdi-error [40127]: flash memory not accessible w

zhangyunshengblog的专栏 9264

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM8S103编译出错 bad struct/union operand

STM8s103P 编译出现以下结果 是由于未宏定义芯片类型 解决方法一 在project setting里面 C Compiler 更改  Preprocessor Definitions  方法二 更改stm8s.h 将下面的 更改为 同时更改 注销stmflash.h 里面的 芯片falsh的大小 两个方法不能同时

天空中的太阳和月 4835

使用 stvd 编译STM8S 时能看到使用RAM ROM大小的方法

刚刚安装的STVD编译器,编译时候不显示用了多少RAM和ROM?对于此问题。有两个方法:一是看.map文件 还有一种是 添加一个补丁,详细操作例如以下,能够在我的资源里下载对应的文件。 http://download.csdn.net/detail/chuangwu2009/7350127 网上找到的: 1. 将附件压缩包中的mapinfo.exe解压到stvd的\安装路径\ST...

weixin_34313182的博客 295

stm8使用总结--segment .ubsct size overflow

导致COSMIC报告segment .ubsct overflow错误的根本原因是内存溢出, 相关原因分析如下:     例如,如果使用的是STM8S105系列MCU,MCU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct

spdian的博客 6375

stvd+stm8s单片机程序编译报错

编译stm8s程序过程报如下错误: Compiling stm8s_stdperiph_driver\src\stm8s_adc2.c... cxstm8 +mods0 +debug -pxp -no -pp -l -istm8s_stdperiph_driver\inc -i"C:\Program Files (x86)\COSMIC\CXSTM8\Hstm8"...

Embedded engineer 1487

kylin发生Segments overlap的解决办法

对http://blog.csdn.net/zhangzhaokun/article/details/78419846?locationnum=6&fps=1做补充。1、遇到kylin发生Segments overlap,但按上面的连接处理时发生hbase连接失败,kylin的org.apache.kylin.common.persistence.ResourceTool.copy( 方法...

hua_ed的专栏 3127

怎么写stm8的IAP升级的bootloader和app

因为之前写个stm32的IAP升级程序,所以我总结了做IAP升级的三个主要的难点: 1、如何设置中断向量,也就是说中断向量的重定向 2、如何配置程序的起始地址 3、如何从IAP跳转到APP程序 4、使用库函数要注意的地方(防止被坑) 说文章的时候我已经完成了一个最简单的IAP升级程序,可以通过串口接收bin文件写入到flash里面,然后再运行。 1、如何设置中断向量,也就是说中断向量的

面朝大海春暖花开 1万+
上一篇: IAR for stm8使用标准固件库的方法以及注意事项
下一篇: [蜂鸣器不简单]单片机中蜂鸣器的多种运用(长响,短响,多次响)
ZeroSkyrim
博客等级 码龄16年 34粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值