问题标签 [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 回答
40 浏览

c - stm8s cco 标志从未设置

我有一个发现 stm8s003k 板,当我测试一个程序的 cco 功能时,似乎 cco 永远不会稳定,程序总是保持一致:while(CLK_GetFlagStatus(CLK_FLAG_CCORDY) == FALSE); 代码和更多解释是详细的。

我用下面的代码测试了它,我什至改变了更低和更高频率的预分频器,我还用外部晶体检查它(并更改代码),但它while(CLK_GetFlagStatus(CLK_FLAG_CCORDY) == FALSE);永远存在。

当我在程序启用CCOEN位后调试代码并在调试器环境中单步执行时,输出将开始并且频率为真。但标志CCORDYCCOBSY 都保持设置(调试器中的CCOR=0x69)并且它始终保持在 while 循环中。我的代码是:

0 投票
3 回答
501 浏览

c - STM8 脉冲计数器

我正在开发直流电机的控制。该电机有一个编码器,可根据其运动产生脉冲。

我需要通过监控脉冲数来控制电机轴的转数。

我为此应用程序使用 SMT8S103F3。

这个想法是使用 Timer1 作为脉冲计数器。为此,我将定时器配置为接收外部信号,在这种情况下是编码器脉冲,并且每个脉冲都必须增加计数器。

我遵循文档 ST RM0016 第 17.4.3 章。但是该应用程序无法正常工作。计数器不递增。

遵循开发的代码。

有任何想法吗?

如果定时器不是该应用的最佳选择,那么如何实现脉冲计数器?

脉冲频率为 700kHz。

0 投票
1 回答
145 浏览

c - 将 E-Ink 显示器与 STM8S103F3P6 微控制器连接时出现问题

我正在使用 Waveshare 1.54" ePaper 模块。使用 SPI 外围设备:

  • CPU频率为16Mhz
  • SPI 预分频器除以 8
  • 最高位优先
  • CPOL=0,CPHA=1

显示器没有响应,但它正确响应 TI CC1310。SPI 的问题是在传输字节后它没有进入理想的高电平状态。

我用逻辑分析仪检查过。 在此处输入图像描述 在此处输入图像描述

SPI 是这样初始化的:

0 投票
1 回答
195 浏览

c - 将结构传递给 Cosmic 编译器和 STM8 中的函数时出现“无效的间接操作数”错误

我正在使用 Cosmic 编译器和 ST Visual Develop 为 stm8 编写固件。我使用 astruct 如下:

然后我定义并初始化一个结构数组,如下所示:

接下来我需要定义一个使用结构数组成员的函数,如下所示:

在哪里

然后在我的 main 中,我将上述函数调用如下:

但是,编译后出现以下错误:

  • #error cpstm8 ..\src\memory\flash.c:38(36+2) 无效的间接操作数
  • #error cpstm8 ..\src\memory\flash.c:38(38) 参数类型不兼容
  • #error cpstm8 ..\src\memory\flash.c:38(24+11) led_pa​​ttern undefined

这对我来说真的很困惑,我也尝试将指向结构的指针传递给函数,但我得到了同样的错误。任何帮助是极大的赞赏。我是编程新手,需要你的帮助。

先感谢您。最好的问候, Vouria

0 投票
1 回答
495 浏览

dump - 从 STM8 微控制器转储固件

我有一个600W 数字升压转换器,其 STM8S103K3T6C 损坏,另一个目前工作正常。有没有办法从工作中复制(转储)固件并将其上传到新芯片。由于我只有一个工作,我必须格外小心,不要损坏工作控制器。我确实有一些 STM32 的基本经验,但我很感激能得到任何帮助。我有一份ST-Link v2 程序员的副本。显然(如果有办法),必须通过 SWIM 完成(我对此一无所知,几天前开始阅读)。不知道什么是正确的开始方式。转换器本身在板的右侧有 UART 引脚。

提前致谢。

0 投票
1 回答
134 浏览

c - stm8 uart tx中断问题

我正在通过中断将 STM8S103F3 编程到 UART 上的 TX。我知道在“发送数据寄存器空中断”之后写入 DR 将启动另一个 TX,所以我的 ISR 中有这个。但它只有在我的主循环旋转等待中断时才有效。如果它在 nop 上旋转,则仅发送第一个字符 - 就好像在 ISR 中写入 DR 不会产生后续中断一样。

使用 SDCC 编译器。

sdcc -mstm8 -o build\uart.hex uart.c

0 投票
0 回答
119 浏览

stm8 - 如何让STM8中断正常工作

我想要一个持续运行但可以中断的主程序。我不知道如何让 UART 或 ADC 中断正常工作。只有当我的主循环等待中断(即进入低功耗模式)时,它们才会按预期运行。我知道在复位时,CCR 中的中断级别设置为低,而 ITC_SPR 寄存器中的级别设置为高,因此应该中断主循环代码。但是,如果我在没有 wfi 的情况下运行它,我只会得到第一个中断。如果我在主循环之前在主代码中调用 rim (启用中断),我不会收到中断,但这应该会强制主循环为低中断级别。我很困惑,显然遗漏了一些东西,因为这似乎是一种必须工作的正常操作模式。任何想法表示赞赏。

0 投票
1 回答
106 浏览

c - SDCC 生成不必要的除以零

我正在使用 SDCC 为 STM8 微控制器进行编译。编译以下文件会导致看似不必要的div指令——这在 STM8 上非常慢。

sdcc -mstm8 file.c在以下程序集中编译结果:

该功能似乎按预期工作,但是我不明白为什么需要前两条指令。

0 投票
1 回答
139 浏览

linker - 在代码中引用放置在 RAM 中的部分,导致链接器错误 [Lc036]

STM8,IAR 编译器。

我试图将可变中断向量表(IVT)放在 RAM(ram_ivt_sectionRAM_IVT)中,从 0x00 地址开始。

Prereq:硬件入口点(base_ivt_sectionIVT_TO_RAM块)已被替换并重定向到此 RAM 地址。

所以,我有下一个代码:

它工作正常。在陷阱上,程序陷入未处理的异常。但是,当我尝试修改或读取表格时

项目在链接器阶段停止构建并出现错误:

链接器文件:////////////////////////////////////// /////////////////

0 投票
1 回答
90 浏览

arduino - STM8 板的按钮切换问题

我是微控制器的初学者。我正在使用定制的 STM8 板并使用板载按钮来计算按下的次数。我无法让它工作,这是我的代码,如果可以,请提供帮助 - 开关连接到 PA1。代码的相关部分 -