问题标签 [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.
c - stm8s cco 标志从未设置
我有一个发现 stm8s003k 板,当我测试一个程序的 cco 功能时,似乎 cco 永远不会稳定,程序总是保持一致:while(CLK_GetFlagStatus(CLK_FLAG_CCORDY) == FALSE);
代码和更多解释是详细的。
我用下面的代码测试了它,我什至改变了更低和更高频率的预分频器,我还用外部晶体检查它(并更改代码),但它while(CLK_GetFlagStatus(CLK_FLAG_CCORDY) == FALSE);
永远存在。
当我在程序启用CCOEN位后调试代码并在调试器环境中单步执行时,输出将开始并且频率为真。但标志CCORDY和CCOBSY 都保持设置(调试器中的CCOR=0x69)并且它始终保持在 while 循环中。我的代码是:
c - STM8 脉冲计数器
我正在开发直流电机的控制。该电机有一个编码器,可根据其运动产生脉冲。
我需要通过监控脉冲数来控制电机轴的转数。
我为此应用程序使用 SMT8S103F3。
这个想法是使用 Timer1 作为脉冲计数器。为此,我将定时器配置为接收外部信号,在这种情况下是编码器脉冲,并且每个脉冲都必须增加计数器。
我遵循文档 ST RM0016 第 17.4.3 章。但是该应用程序无法正常工作。计数器不递增。
遵循开发的代码。
有任何想法吗?
如果定时器不是该应用的最佳选择,那么如何实现脉冲计数器?
脉冲频率为 700kHz。
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_pattern undefined
这对我来说真的很困惑,我也尝试将指向结构的指针传递给函数,但我得到了同样的错误。任何帮助是极大的赞赏。我是编程新手,需要你的帮助。
先感谢您。最好的问候, Vouria
dump - 从 STM8 微控制器转储固件
我有一个600W 数字升压转换器,其 STM8S103K3T6C 损坏,另一个目前工作正常。有没有办法从工作中复制(转储)固件并将其上传到新芯片。由于我只有一个工作,我必须格外小心,不要损坏工作控制器。我确实有一些 STM32 的基本经验,但我很感激能得到任何帮助。我有一份ST-Link v2 程序员的副本。显然(如果有办法),必须通过 SWIM 完成(我对此一无所知,几天前开始阅读)。不知道什么是正确的开始方式。转换器本身在板的右侧有 UART 引脚。
提前致谢。
c - stm8 uart tx中断问题
我正在通过中断将 STM8S103F3 编程到 UART 上的 TX。我知道在“发送数据寄存器空中断”之后写入 DR 将启动另一个 TX,所以我的 ISR 中有这个。但它只有在我的主循环旋转等待中断时才有效。如果它在 nop 上旋转,则仅发送第一个字符 - 就好像在 ISR 中写入 DR 不会产生后续中断一样。
使用 SDCC 编译器。
sdcc -mstm8 -o build\uart.hex uart.c
stm8 - 如何让STM8中断正常工作
我想要一个持续运行但可以中断的主程序。我不知道如何让 UART 或 ADC 中断正常工作。只有当我的主循环等待中断(即进入低功耗模式)时,它们才会按预期运行。我知道在复位时,CCR 中的中断级别设置为低,而 ITC_SPR 寄存器中的级别设置为高,因此应该中断主循环代码。但是,如果我在没有 wfi 的情况下运行它,我只会得到第一个中断。如果我在主循环之前在主代码中调用 rim (启用中断),我不会收到中断,但这应该会强制主循环为低中断级别。我很困惑,显然遗漏了一些东西,因为这似乎是一种必须工作的正常操作模式。任何想法表示赞赏。
c - SDCC 生成不必要的除以零
我正在使用 SDCC 为 STM8 微控制器进行编译。编译以下文件会导致看似不必要的div
指令——这在 STM8 上非常慢。
sdcc -mstm8 file.c
在以下程序集中编译结果:
该功能似乎按预期工作,但是我不明白为什么需要前两条指令。
linker - 在代码中引用放置在 RAM 中的部分,导致链接器错误 [Lc036]
STM8,IAR 编译器。
我试图将可变中断向量表(IVT)放在 RAM(ram_ivt_section
或RAM_IVT
)中,从 0x00 地址开始。
Prereq:硬件入口点(base_ivt_section
或IVT_TO_RAM
块)已被替换并重定向到此 RAM 地址。
所以,我有下一个代码:
它工作正常。在陷阱上,程序陷入未处理的异常。但是,当我尝试修改或读取表格时
项目在链接器阶段停止构建并出现错误:
链接器文件:////////////////////////////////////// /////////////////
arduino - STM8 板的按钮切换问题
我是微控制器的初学者。我正在使用定制的 STM8 板并使用板载按钮来计算按下的次数。我无法让它工作,这是我的代码,如果可以,请提供帮助 - 开关连接到 PA1。代码的相关部分 -