历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2021年10月18日 | 使用 SDCC 开发 STM8

2021-10-18 来源:eefocus

本文介绍如何在 EIDE 上将 STM8 标准库移植到 SDCC 工具链,并完成测试

以 STM8S105K4T6 为例,其他的库过程大都相同


1. 创建 STM8 项目

  1. 打开 EIDE, 新建项目,类型选择 C51,注意:路径里最好不要有中文空格,在编译器里会出错

  2. 切换工具链至 SDCC, 打开编译选项,设置 device 为 stm8

  3. 设置宏,本项目为:STM8S105,USE_STDPERIPH_DRIVER

  4. 新建一个目录,将复制外设库到里面,并去除掉芯片不支持的外设源文件


2. 移植过程:主要针对 stm8s.h, 其他文件基本不用动

移植的过程并不复杂,就是参照其他编译器的定义,查询 SDCC 手册,写出适合 SDCC 的定义

注:以下对比图,左图为原文件,右图为修改后的

  1. 定义编译器宏:查阅 SDCC 手册,SDCC 编译器定义的宏为: __SDCC
    在这里插入图片描述

  2. 重定义关键字,SDCC 手册中不支持的就设置为空,编译时将会忽略这些关键字
    在这里插入图片描述

  3. 重定义内嵌汇编指令,SDCC 格式为 __asm__(x)
    在这里插入图片描述

  4. 重定义 interrupt ,trap 关键字, SDCC 格式为: __interrupt(x), __trap
    在这里插入图片描述


3. 开始项目

在 main.c 中写好闪烁LED 的示例


注意:SDCC 要求含有 main() 函数的源文件必须处于链接的第一个位置;如果你的 main() 函数不是在默认的 main.c 中,务必到编译选项中更改 “$mainFileName” 字段为 main() 实际所处的源文件名
在这里插入图片描述

开始编译,发现出现了错误,直接跳转到出错的源文件
在这里插入图片描述
发现是这个函数是用的内联汇编实现的,于是用 SDCC 也实现一下
框出的部分即为加上去的 SDCC 实现
在这里插入图片描述
再启动编译,成功
出现了两个警告,第一个提示函数没返回值,来自上一步,但注释中说可以直接忽略。第二个查看了一下也没影响
在这里插入图片描述


4. 下载到开发板

安装好 STVP, 并设置好 STVP_CmdLine.exe 的路径,连接 ST-LINK,点击下载

提示下载成功
在这里插入图片描述
板子上 LED 正常闪烁
在这里插入图片描述


推荐阅读

史海拾趣

ADI Electronics Inc公司的发展小趣事

随着全球化进程的加速,ADI也逐渐将业务拓展至全球范围。公司不仅在全球各地设立了研发中心和销售网络,还与众多国际知名企业建立了战略合作关系。这些合作不仅为ADI带来了更多的商业机会,也使其能够更好地了解全球市场的需求和趋势,为公司的长远发展奠定了坚实基础。

这五个故事展示了ADI Electronics Inc公司从创业初始到发展成为电子行业领军企业的过程。通过不断创新、并购重组和全球化拓展,ADI成功地在激烈的市场竞争中脱颖而出,成为一家备受尊敬的企业。

请注意,由于无法实时获取ADI的最新发展动态,上述故事中的部分细节可能已随时间发生变化。如需获取更详细和准确的信息,建议查阅ADI的官方网站或相关新闻报道。

Elektron公司的发展小趣事

Elektron公司一直注重技术研发和创新投入,致力于在行业中保持领先地位。公司不断推出具有创新性和领先性的产品,如高性能的电池充电器、先进的焊接和切割设备等。这些产品的推出不仅提高了公司的市场竞争力,也推动了整个行业的发展和进步。同时,Elektron还积极参与行业标准的制定和推广工作,为行业的健康发展做出了重要贡献。

EZchip Technologies Ltd公司的发展小趣事

在激烈的市场竞争中,产品质量和客户服务是企业赢得客户信任的关键。EZchip一直秉承“质量第一、客户至上”的理念,注重产品的质量控制和客户服务体验。公司采用严格的生产流程和质量控制标准,确保每一件产品都符合高标准、高质量的要求。同时,EZchip还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些措施不仅提升了产品的竞争力,也赢得了客户的广泛赞誉和信任。

BTCPower公司的发展小趣事

随着全球环保意识的提高,绿色发展成为电子行业的重要趋势。BTCPower积极响应这一趋势,将绿色发展理念融入公司的产品和服务中。公司致力于研发更环保、更节能的产品,同时还推动供应链中的合作伙伴共同实现绿色生产。这些努力使得BTCPower在行业中树立了良好的环保形象。

Hitachi Metals公司的发展小趣事

随着汽车工业向智能化、电动化方向发展,Hitachi Metals敏锐地捕捉到了这一趋势带来的商机。公司加大了对汽车电子部件的研发和生产投入,特别是在汽车活塞环材料领域取得了显著成就。其生产的钢制活塞环材料在日本市场占据领先地位,不仅为众多汽车制造商提供了高质量的产品,还通过技术创新不断提升产品的附加值。此外,公司还积极拓展汽车电子控制单元(ECU)等关键部件的市场,进一步巩固了其在汽车电子领域的地位。

Bytesonic Corporation公司的发展小趣事

随着台湾本土市场的逐渐饱和,Bytesonic Corporation开始将目光投向更广阔的大陆市场。1996年7月,公司在中国广东省东莞市石街镇成立了分公司,迈出了进军大陆市场的第一步。这一决策不仅为公司带来了更多的商机,也为其在亚洲乃至全球市场的布局打下了坚实的基础。

问答坊 | AI 解惑

如何用译码器实现对多电机的控制?

大家好,本人新手,希望得到大家的帮助! 我想使用C51单片机连接一个74HC154译码器,进而实现对多个步进电机的控制,我想问的是这能否实现?如果不能实现,我该怎样才能做到用单片机控制多个电机呢? 非常感谢! 简单地说,怎样实现用单片机控制 ...…

查看全部问答>

msp430串口收发程序

现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...…

查看全部问答>

wince下读写IC卡速度问题

在pc下测试,串口读写只要3s 在wince下测试,居然10s啊,怎么解决?? 怎么办 ?? 救命 …

查看全部问答>

有一套串口通信协议需要分析破解,寻求达人帮助

有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436…

查看全部问答>

LED显示屏一般性故障诊断常见问题解答

replyreload += \',\' + 704935;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

【原创】:关于42x0TA问题

我用ta做pwm输出,设置如下: void init_timer_a(void) { TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许 TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE TACCR0 = 1 ...…

查看全部问答>

stm32F101死机,手动复位无效,只能上电复位

stm32F101死机,手动复位无效,只能上电复位,我应该检查什么地方?…

查看全部问答>

新手求解答 AD软件中 DB9的原理图后面怎么会有两条线

AD软件中 DB9的原理图后面怎么会有两条线 如图所示正常DB9不是没有吗 怎么去掉??新手求解答…

查看全部问答>

单片机工程师如何做好硬件设计

做了几年的单片机工程师,总感觉(传感器信号采集、信号调理、AD采集)比较难做,可能自己欠缺这方面的知识。高手们给点建议或推荐一些书籍啊…

查看全部问答>