问题标签 [stm8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2846 浏览

disassembly - 单片机stm8拆解

可以反汇编十六进制stm8固件吗?

0 投票
1 回答
404 浏览

c - 具有不同#define 的 IAR 构建库

我将在 IAR Workbench 中为 STM8 构建一个简单的库(.a 文件)。在这个库中,我想同时实现硬件 SPI 和软件 SPI 供用户选择。

在我的 library.c 中,我写道:

在我的 library.h 中,我写道:

然后我认为如果用户#define HARDWARE_SPI在目标项目中定义,该库将运行硬件 SPI 部分。如果不是,则应使用软件 SPI。

但是在我构建项目并将 library.a 和 library.h 添加到测试项目中之后,由于 library.h 没有#define HARDWARE_SPI,例程仍然进入硬件 SPI 部分。我如何构建可以让用户通过写入#define头文件来选择功能的 library.a?

0 投票
1 回答
2044 浏览

c - 使用 STM8L 在 UART 上接收数据

我想知道,将UART上的数据发送到STM8L有什么办法吗?我写了一个与其他人相似的代码,我认为我的硬件还可以。我通过终端软件用PC向STM8L发送一些数据。在这里我想我应该首先发送一些数据,它检测到数据表中描述的开始。现在我该怎么办?请原谅我的语法错误。感谢您的帮助 :)

STM8L15xxx 数据表,检测 UART 中的起始位

0 投票
2 回答
3140 浏览

c - stm8 代码中的读出保护 (ROP) 设置选项字节

使用 stm8s003f3。

添加这些代码主要初始化,代码保护(ROP)正在设置,但我的应用程序代码不起作用。

如果通过 IAR 或 ST Visual Programmer 选项字节选项卡设置选项字节,则应用程序代码和代码保护 (ROP) 都正常工作。

我需要在代码中设置 ROP。

0 投票
1 回答
3476 浏览

c++ - 将变量放在绝对内存位置 (IAR C/C++)

我正在使用 IAR 编译器开发 STM8S 微控制器。

如何使用编译指示或另一种方法修复多个变量的起始位置?

当我尝试以下代码时,编译器会给出以下错误消息:

错误[Lp025]:绝对部分 .near.bss (main.o #12) ([0x000100-0x000100]) 与绝对部分 .near.bss (main.o #8) ([0x000100-0x000100]) 重叠

我在 IAR 技术说明中搜索“绝对定位变量”,但找不到任何信息。

0 投票
1 回答
573 浏览

opcode - 了解 STM8 流水线

我试图了解 STM8 流水线,以便能够预测我的代码需要多少周期。

我有这个例子,我在每个 GPIO 引脚上切换 4 个周期。IFFloop在 4 字节边界 + 3 处对齐,引脚保持活动 5 个周期(即比它应该多一个)。我想知道为什么?

更多上下文:

  • bset/bres是4字节指令,nop1字节。
  • nop//指令每个需要 1bsetbres周期。
  • jra指令需要两个周期。我认为在第一个周期中,指令缓存被下一个 32 位值填充,即在这种情况下nop只有指令。第二个周期实际上只是 CPU 在解码下一条指令时被停止。

所以在循环中:

  1. bres清除引脚
  2. jra,管道刷新,nop获取
  3. nop解码,bset获取
  4. nop执行、bset解码、下一次nop获取
  5. bset执行设置引脚
  6. nop,bres
  7. nop
  8. nop,bres解码
  9. bres执行清除引脚

据此,该引脚应在 4 个周期内保持低电平,在 4 个周期内保持高电平,但在 5 个周期内保持高电平。

在任何其他对齐情况下,引脚按预期为低/高 4 个周期。

我认为,如果 PIN 在一个额外的周期内保持高电平,那一定意味着执行管道在bset指令之后停止(nop此后的 s 提供了足够的时间来确保bres稍后可以立即执行)。但根据我的理解nop(对于 6.)已经在 4 中获取。

知道如何解释这种行为吗?我在手册中找不到任何提示。

0 投票
1 回答
194 浏览

assembly - STM 汇编指令集分别保留数据位置,如 PIC 汇编“ORG”、“RES”

我正在研究 STM8S 微控制器,我需要通过使用汇编为我的变量保留绝对数据位置。

所以,我尝试“LD”指令,但我做不到。

在 PIC 程序集中,我有一部分代码是这样的:

这就是我需要的,我想在 STM8S 组装中做到这一点。

0 投票
1 回答
318 浏览

c++ - cpputest on STM8 failed due multiple 'main'

I want to use cpputest on STM8 and installed all the required tools for it. I am able to run cpputest on my simplified code. on my main file which belongs to the hardware I have of course the main function. But in the Test environment I have a main function under AllTests.cpp as well. When I compile it i get the error:

A further issue I run into is: I compile the code for a 8bit processor and i use the library <stdint.h>, so my main file has the line uint8_t main(){ . The compiler of cpputest does not like that at all...

Does anyone has an idea how to fix this?

Files:

blinky.h:

blinky.c

test.cpp:

AllTest.cpp:

Makefile:

0 投票
1 回答
2010 浏览

makefile - SDCC 编译器的中断 STM8s 问题

我想在 SMT8S003K3 (STM8SVL-DISCOVERY) 上使用中断,当我在我的 main() 所在的其他文件上使用中断时,它无法被识别。

我做了两个测试: - 首先我将此代码修改为标准外设库:

它有效......

现在要使用 UnitTests,我将此函数放入另一个文件中:main_internal(只是一个简单的示例):

主要功能:

它什么也不做......它在STM8S003的深存储器中流动(正如我在调试器中看到的那样)。这是链接问题吗?

这是我的 Makefile:

这将是没有标准外设库的代码:

在这里,我有两个版本的 gdb 差异:

令人惊讶的是:00008034: int 0x0080d7 ;0x80d7 在 main_internal 的第二个版本中丢失了。

任何帮助,将不胜感激

0 投票
1 回答
2479 浏览

iar - 禁用读出保护 stm8s003

我开始使用stm8s003。我像这样使用 stm8s003 板:
https://www.cnx-software.com/wp-content/uploads/2015/01/One_dollar_development_board.jpg ”。
当我使用IAR并将程序下载到我的 stm8 时,会发生此错误:

“必须禁用 Flash Memory Read-out protection 选项才能进行调试。禁用此选项将首先擦除整个 Flash Memory。”

我无法调试。如何禁用读出保护?