问题标签 [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 投票
0 回答
274 浏览

c - STM8 UART Transmiission 被截断

我正在使用 stm8l151... mcu,我正在尝试通过 Uart1 将不同的字符串发送到 HTerminal。我要发送三个不同的字符串。前两个字符串完全传输,但是当第三个字符串被发送时,它被截断,它开始再次重复发送第一个和第二个字符串,但是当我一步一步地通过代码时,它工作得很好。但是如果我允许代码运行,就会出现问题。

我附上了 Hterm ( uart_com ) 的输出以便更好地理解以及我的代码的某些部分( uart transmit 和 uart_init )

只是为了更好地理解附加的输出,字符串(cmd 1、2 和 3)是at+nrbat+cfun=1at+cops=1,2,"26201"

请,任何建议将不胜感激。

字符串定义

0 投票
1 回答
1704 浏览

debugging - 无法使用 STLinkv2 调试器通过 STVD 和 STVP 调试 STM8s001J3

由于 STM8S001J3 MCU 没有 Reset 引脚,如何使用 SWIM 引脚将 MCU 连接到 ST Link v2 进行调试?

STLink V2:STM8s001j3

VDD : VDD

地线:地线

游泳:游泳

重置 : ?

我已将 STLink V2 的复位引脚留空,但无法在 STVD 和 STVP 中进入调试模式。

我得到以下错误:


STVP:

无法与设备通信!

检查 SWIM 电缆连接并检查 SWIM 连接器上所有需要的针脚连接。

如果应用程序代码使用 Swim Disable 和 Reset 引脚作为输出或已禁用 SWIM 时钟分频器:

现在尝试在 NRST 复位引脚强制为低电平时关闭和打开应用程序电源。

好的

0 投票
0 回答
384 浏览

embedded - i2c stm8 事件问题

我正在为 STM8S105C6T6 开发 i2c 驱动程序。我无法收到I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED. 请指教我哪里错了。

在此先感谢您的帮助。

0 投票
2 回答
7894 浏览

c - 像STM8一样编程STM32(寄存器级GPIO)

我对STM8 GPIO进行了编程,PD_ODR_ODR4 = 1;但stm32f10x.h没有这个功能。是否有任何.h文件具有位定义。

对不起,但我不知道如何更好地解释这个问题。

我尝试了多个 GPIO 库。

强文本

0 投票
1 回答
1008 浏览

sdcc - STM8 TIM1 (or TIM2) - one 5s tick after external interrupt event

I'm trying to implement this logic in STM8S103F3: 1) Controller wait for external interurpts on GPIOC (high by default) after initialization. 2.1) external interrupt triggered: if PIN5 of GPIOC is low, turn test led on, and start timer for 5s. 2.2) external interrupt triggered: if PIN5 of GPIOC is high, turn test led off and stop timer. 3) timer interrupt triggered: turn test led off.

My code:

External interrupt is triggered fine, but timer interrupt does not triggers.

What i'm doing wrong with timer, and how i can gix it?

0 投票
2 回答
382 浏览

c - 了解stm8s反汇编中的功能?

我正在使用 STVD IDE 对 STM8S 微控制器进行编程。它使用 COSMIC 编译器。

我发现有一个变量意外增加。调试时我发现汇编代码中有一行导致这个变量增加了它的值。这是一个名为 的函数c_lgadcADC有时在调用堆栈中没有显示相关函数时调用此装配线。

我不明白这段代码来自哪里,这是什么c_lgadc?我的 C 代码中没有名为c_lgadc

这是反汇编的屏幕截图。 在此处输入图像描述

更新:

  • 我不知道我应该检查什么 C 代码,因为每次调用此反汇编行时调用堆栈都不同。
  • 我注意到,当我跨步或进入调试器时,它会到达特定计时器 ISR 的最后一行。
  • 我还注意到带有第二个断点的行是导致我的变量添加的行。具有第一个断点的行总是被调用 5 次,然后具有第二个断点的行被调用一次,依此类推。
  • 我想知道我应该如何进一步调试它以防止意外添加到我的变量中。

更新2:

我在以下内容中找到了map file

我不确定这是否有助于澄清问题?

0 投票
1 回答
119 浏览

assembly - '.dcall' 在汇编代码中是什么意思?

我试图理解汇编代码中的程序,它应该用编译COSMIC器编译以在STM8控制器上运行。

在程序的开头,有几个,xref然后xdef是一个.dcall语句或命令。这里是:

.dcall "2,0,__checksum16"

我搜索了编译器的手册、控制器的编程手册和一般的互联网,但找不到这条线是什么意思。

有人可以解释一下这是什么意思吗?这些逗号分隔的条目是什么意思?

0 投票
2 回答
318 浏览

c - 带有 COSMIC 编译器的 stm8l 上 printf 的奇怪行为

printf 在某些情况下给了我奇怪的额外值。可能会发生什么?

我正在处理 uint8_t 数组中的值并将其打印到我的终端以验证一切是否正确。但是由于某种原因,当我打印一个 uint8_t 时,我得到了奇怪的值——我得到了预期值加上一些其他值(它总是相同的额外值),就好像我正在打印一个 uint16_t 或其他 16 位值一样。我将其全部精简为以下示例:

这是测试代码

我得到的输出是

是什么让它表现得那样?

0 投票
2 回答
326 浏览

optimization - 使用 COSMIC 编译器时如何禁用所有优化?

我在 STVD ide 中使用COSMIC 编译器,即使使用-no关闭了优化(文档说“-no:不要使用优化器”),一些代码行被删除并且不能在它们上放置断点,也不是它们可以在拆卸中找到。

我尝试设置 -oc (将已删除的指令保留为注释),这导致甚至没有将已删除的行显示为注释。

val我知道在 for 循环之前设置为 0似乎很愚蠢,但让我们假设出于某种原因这是必要的。当我没有设置优化时,我希望它不会被优化,而是val = 0;会被删除而没有任何痕迹。

我不是在寻找一种解决方法,比如声明valvolatile whitch 可以解决问题。我宁愿寻找一种方法来防止优化,或者至少了解/知道在编译时对我的代码进行了哪些更改。

0 投票
2 回答
1484 浏览

interrupt - STM8S UART TX 中断启用/禁用问题

感谢所有给出答案的人。但问题与编译器有关。我使用了 Cosmos 和 STVD,它没有绑定中断函数。当我将项目迁移到 IAR 时,问题就解决了。

我正在处理 STM8S103F3P6 IC。我尝试使用 TX 中断发送消息,但从未成功。

我已经检查了 UART 中断的示例。另外,我尝试开发相同的代码。但是,我仍然是零。我从 STM8 示例中获取了中断向量函数。我的错误在哪里?我怎么知道?

这是我的 init、main 和中断向量函数;

它什么也不发送。我没有任何逻辑分析仪,我只使用终端应用程序检查过。