历史上的今天
今天是:2024年10月18日(星期五)
2021年10月18日 | 使用 SDCC 开发 STM8
2021-10-18 来源:eefocus
本文介绍如何在 EIDE 上将 STM8 标准库移植到 SDCC 工具链,并完成测试
以 STM8S105K4T6 为例,其他的库过程大都相同
1. 创建 STM8 项目
打开 EIDE, 新建项目,类型选择 C51,注意:路径里最好不要有中文空格,在编译器里会出错
切换工具链至 SDCC, 打开编译选项,设置 device 为 stm8
设置宏,本项目为:STM8S105,USE_STDPERIPH_DRIVER
新建一个目录,将复制外设库到里面,并去除掉芯片不支持的外设源文件
2. 移植过程:主要针对 stm8s.h, 其他文件基本不用动
移植的过程并不复杂,就是参照其他编译器的定义,查询 SDCC 手册,写出适合 SDCC 的定义
注:以下对比图,左图为原文件,右图为修改后的
定义编译器宏:查阅 SDCC 手册,SDCC 编译器定义的宏为: __SDCC

重定义关键字,SDCC 手册中不支持的就设置为空,编译时将会忽略这些关键字

重定义内嵌汇编指令,SDCC 格式为 __asm__(x)

重定义 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 正常闪烁
上一篇:STM8看门狗(1)
下一篇:IAR新建STM8工程
史海拾趣
|
大家好,本人新手,希望得到大家的帮助! 我想使用C51单片机连接一个74HC154译码器,进而实现对多个步进电机的控制,我想问的是这能否实现?如果不能实现,我该怎样才能做到用单片机控制多个电机呢? 非常感谢! 简单地说,怎样实现用单片机控制 ...… 查看全部问答> |
|
现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...… 查看全部问答> |
|
有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436… 查看全部问答> |
|
我用ta做pwm输出,设置如下: void init_timer_a(void) { TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许 TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE TACCR0 = 1 ...… 查看全部问答> |




