STM8在Linux下的开发简介 (stm8 linux)

随着技术的不断发展,物联网技术已经逐渐成为了未来发展的重要方向。作为物联网设备的核心,微控制器开始受到各行业的广泛应用。而在微控制器中,STM8由于其稳定性、性能和成功的应用案例在市场上拥有较高的知名度,成为了许多物联网设备的首选。

然而,在STM8的开发环境中,由于其软件相对较昂贵,许多开发者需要投入较大的开发成本。在这样的情况下,许多开发者开始关注开源软件的使用,并且开始在Linux系统下开展STM8的开发工作。

在本文中,我们将介绍在Linux系统下开发STM8的一般过程。

1. 准备工作

在进行STM8开发工作之前,我们需要准备一些必要的工具和软件,以支持我们进行STM8的编程和调试工作。下面是我们需要准备的工具和软件列表:

1.1 针对STM8的编译工具

在开发STM8的过程中,我们通常使用的编译工具是IAR Embedded Workbench for STM8。但是这一软件相对较昂贵,因此在Linux系统下我们可以使用开源编译器SDCC。

1.2 调试工具

针对STM8的调试工具通常是ST-Link/V2,它可以帮助我们进行编程和调试工作。在Linux系统下,可使用stlink命令行工具或者QTStlink软件。

1.3 开发板

当然,我们还需要一款STM8开发板,以进行我们的开发和测试工作。

2. 安装和配置SDCC

SDCC是一款基于开源的C语言编译器,它支持许多处理器和MCU的开发和编译工作。在开始STM8的开发工作之前,我们需要安装SDCC的开发套件,在Linux下,安装SDCC开发套件非常简单。

我们可以通过如下命令,安装SDCC开发套件:

$ sudo apt-get update

$ sudo apt-get install sdcc

安装完成后,我们需要进行SDCC的配置工作,使其支持STM8的编译工作。我们需要执行以下命令,进入SDCC的配置文件目录:

$ cd /etc/sdcc

$ sudo nano sdcc.conf

在配置文件中,我们需要添加如下代码:

mcs51:

mcs51-gcc

stm8:

mcs51-gcc -DSDCC=1 -D__SDCC_STM8__ -DSTM8103

保存并退出配置文件。现在,SDCC已经被正确配置,并支持STM8的编译工作了。

3. 使用SDCC开发STM8程序

在SDCC的开发中,我们可以使用任何文本编辑器进行程序的编写工作。在Linux系统下,我们可以使用vim、nano等文本编辑器进行开发工作。

为了编写我们的STM8程序,我们需要了解STM8芯片的数据手册并研究它的引脚布局、寄存器和中断表等内容。

下面是一个简单的STM8程序:LED 灯闪烁程序。

#include

/* 定义端口为P1.0的Led */

__it __at(0x90) LED;

void delay(void);

void mn(void)

{

/* 将P1.0设为输出 */

LED = 0;

/* 进入循环 */

while(1)

{

/* LED 变亮 */

LED=1;

/* 延迟一段时间 */

delay();

/* LED变暗 */

LED = 0;

/* 延迟一段时间 */

delay();

}

}

/* 延迟函数 */

void delay(void)

{

long int i;

/* 计数器初始值 */

i = 30000;

/* 计数器递减 */

while (i–);

}

在编写完STM8程序后,我们可以使用SDCC进行编译工作,使用以下命令可以进行编译:

$ sdcc -mstm8 -o test.hex test.c

编译完成后,我们需要使用以上介绍的调试工具对程序进行烧录和调试工作。

4. 调试STM8程序

在Linux系统下,我们可以使用图形界面工具QTStlink或者命令行工具stlink进行STM8程序的调试工作。

4.1 使用QTStlink

QTStlink是一款可视化的STM8调试工具,它可以帮助我们进行烧录和调试STM8程序。在使用QTStlink之前,我们需要确保ST-Link/V2驱动已成功安装到系统中。

使用以下命令进行QTSTlink的安装:

$ sudo apt-get install qtstlink

安装完成后,我们可以通过以下命令启动QTStlink:

$ qtstlink

启动后,在QTstlink程序的窗口中,我们可以进行STM8程序的烧录和调试工作。

4.2 使用stlink命令行工具

stlink是一款命令行工具,它可以帮助我们进行STM8程序的编程和调试工作。在使用stlink之前,我们需要使用以下命令进行安装:

$ sudo apt-get install stlink-tools

安装完成后,我们可以使用以下命令进行STM8程序的编程和调试工作:

$ st-flash write test.hex 0x8000

以上命令将可使得STM8程序被成功烧录到相应的单片机中。

相关问题拓展阅读:

有谁知道:stm32是用C编程好,还是C++编程好?如果用C++编程速度会不会变慢?

目前主流还是C语言,但要多定义自己的旅厅咐

数据类型

,多用typedef 封装各种相似数据。 一定要多用

自定义

结构体类型与

枚举类型

。 你看了STM32的3.4版或3.5版固件库就知道了。C语言一伏此定要熟的,在Linux下,也是C为主。 当然,C++扩充了自定义的类型。可以用class对任意的对象封装成一个自定义的类型拆纯模板,然后用模板去建立与实物对应的对象。 建议先学习Cortex-M3内核,再用C语言写外设程序,参考固件库~

人有多大力就办多大事”,STM32的功能远比51、AVR之类的单片机要强大得多,相对来说开发的产品功能比较大,代码也会比较复杂。

首先有完整的框架是非常必须的,我个人认为这里的框架有两层,一个是在STM32上移植现有的操作贺渣系统或者一些稳定的代丛猛码框架,另外一个是自己的编程风格。

你想很方便的开发相对复杂的东西,建议你首先在STM32上移植一个小型操作系统或一种框架,然后在操作系统之上编写你自己的应用去开发产品。在没有操作系统或框架的情况下开发是非常麻烦的事情。要做到条理清晰的话,那就应该去迎合操作系统或框架的风格去编写代码,这答案并不唯一。 举个简单例子,现在比较热门的STM32F103或STM32F407开发产品,一般会移植一个ucosii或rt-thread操作系统(当然也有移植linux或android的,但我个人很少见),ucosii我没实际开发过我就不说了,像rt-thread这样的实时操作系统,它具有多任务编程,那么我们就需要迎合它的特点,比如我串口作为一个线程,LCD、LED扫描作为一个线程,数据采集作为一个线程,键盘扫描作为一个线程等等,在他们的线程中只各自做自己的事情,然后在增加一个顶层的线程专门来负责处理其他线程所产生的消息事件(或者给其他各线程发送消息事件),顶层的线程是作为一个中心处理线程来合理安排和处理其他各个线程的消息事件。

至于在这方面的提升,只能是通过实践来达到效果,这里的“实践”不是说要完全自己去摸索,你需要有东西来借鉴,因为现在一些操作系统、或框架、或编程风格都是比较成熟,你直接拿来看,看看别人是怎么写的代码,然后禅郑悄自己再去仿照着能不能写的出来,再分析里面的优缺点。你要是还在学校且资源有限,建议你可以花个几百块钱上淘宝买一个开发板,一般的开发板都有各个外设的实验,以及综合实验,或许还会有操作系统或框架的移植和使用

想要明白枣肆这个问题,其实就需要明白STM8和STM32之间有些什么差异,包括MCU基本信息、开发难度、以及应用场景等。

站在客观的角度来说,STM8比STM32学起绝困来更容易,C语并岩念言功底还不错的朋友,直接上STM32也不是问题。

从大的方向来说,当你对一种MCU掌握的比较透彻,再学其他型号、其他厂商的MCU,相对来说,上手都要容易的多。

不会慢,C++增加备亮了面象对象,C也能编程,问题是

现在的版本都是C++的了。C少,除非你知滚腊用老掉

牙搭滑的TURBO_C

用C会比较好一点吧,简单一点吧!

关于stm8 linux的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » STM8在Linux下的开发简介 (stm8 linux)