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

c - 关于缺少原型错误的说明

我收到以下错误#error cpstm8 main.c missing prototype,但我不明白的是我收到它的原因,我在顶部声明了我的函数的原型,这个错误仍然不断发生,也许我是缺少一些东西,代码如下。

在我的代码中,我想收集来自 USB 的数据,将其保存在一个变量中以供以后处理。

我正在使用 COSMIC 作为编译器,因为我正在编程 STM8 我遵循@Eraklon 给出的解决方案 (int * UART1_ReceiveBytes(void);) 这解决了问题。

我想知道声明 void 是否只是关于编译器还是有一些特定的规则?我正在查看的大多数示例都声明了这样的原型 (int * UART1_ReceiveBytes();)

0 投票
2 回答
809 浏览

c - 用于 EEPROM 写入的 stm8flash .bin 文件

我正在尝试将值直接写入 stm8 微控制器上的 eeprom 空间。我不想编写一个程序来执行此操作,然后将其闪存到芯片上。但我想直接写给它。执行此操作的命令在 unix 中是这样的:

我搜索的高低问题是我如何制作它myfile.bin以及它会是什么样子,这只是我编写的 C 代码,它将值分配给我选择的寄存器,然后使用一些可以输出到的编译器.bin 文件?我在程序中完成了 eeprom 读/写,但从未直接写入 eeprom 空间。我想存储的唯一信息是有关产品的信息,可以查找的使用信息。我猜最大 50 字节的数据。

0 投票
1 回答
138 浏览

c - STM8L051F3 GPIO 初始配置

我正在为一个简单的应用程序编写 STM8L051F3 处理器,其中只需要控制所有 GPIO。

问题是我无法控制 GPIOC 引脚 0。

我刚刚配置了 GPIO 寄存器。是否需要其他启动?

我还尝试在 Ubuntu 上使用 stm8cubemx。我发现没用的软件,因为它生成的 ioc8 文件没有关于如何在 Ubuntu 中使用它的信息。

终端命令。

编译 sdcc -lstm8 -mstm8 --opt-code-size --std-sdcc99 --nogcse --all-callee-saves --debug --verbose --stack-auto --fverbose-asm --float-reent - -no-peep -I./ -I./STM8S_StdPeriph_Driver/inc -D STM8L051 ./main.c

Prog stm8flash -c stlinkv2 -p stm8l051f3 -s flash -w main.ihx

0 投票
2 回答
92 浏览

embedded - 有没有人知道如何通过 STM 对 STWBC-MC 模块进行编程?

文件说我们可以在这个模块上刷自定义固件,但没有说明如何。我也找不到任何构建工具链。我尝试向 STM 提出客户支持票,但他们似乎没有任何答案。有人在他们的产品中使用过这个模块吗?

0 投票
1 回答
100 浏览

assembly - 如何在STM8汇编语言中将RAM变量声明为volatile

我想知道如何在 STM8 汇编语言中将任何 RAM 变量声明为 volatile。我有一个变量,它在 ISR 和 main 函数之间共享。当软件处于自由运行模式时,它会在更新期间引起问题。

谁能告诉我如何在 STM8 程序集中将任何变量声明为 volatile。

0 投票
0 回答
113 浏览

c - 调试模式下的 C typedef 枚举“不可能”值

在 STM8S 上,使用配置文件,一方面我有(stm8s.h 文件)

并且,在我的一个函数(fonctions.c 文件)中,我有

然而,当我在调试模式下运行代码并观看分钟时,它此时显示值“3”(它应该显示 RESET 或至少“0”。我不明白为什么,因为我使用这个稍后测试的价值我不能保证结果。

此处定义的所有其他类型都会发生这种情况,但一个标志是全局变量除外。我尝试将变量声明为静态,更改 .h 包含的位置,但似乎没有用,我不知道如何解决问题。

0 投票
1 回答
292 浏览

uart - STM8 UART 轮询接收被破坏

我正在尝试使用 uart 连接到 STM8。STM 似乎可以正常传输数据,但它接收到的似乎大多是垃圾,并且通常似乎一次接收 2 个字节。这是代码:

相关的声明标题是:

我不太确定停止位,以及所有这些。这只是“常规”串行通信。

我发现如果我取消注释该行

然后 stm8 打印出连续的垃圾流。但是随着它被注释掉,单片机似乎正确地知道有一个传输。不过,它所看到的似乎没有任何模式。

0 投票
1 回答
247 浏览

uart - 读取 2 个字节长度的 UART 问题

我遇到了两个设备(计算机和 STM8S2 板)之间的 UART1 通信问题。

我在计算机中实现了将两个字节长度的数据写入 STM8 的软件

• 作为标识符的第一个字节;

•第二个字节是我想写入VLS内存的数据,

但是,在 STM8 上,只读取了第一个字节并且两次,例如,我发送了标识符 0xb7 和数据 0x90,但只有字节 0xb7 以 (0xb7, 0xb7) 的形式存储在缓冲区中。

现在我正在通过UART中断每次读取1字节长度来实现它,但我担心它会让固件更容易出现错误,在数据的情况下,标识符字节的值相同。

我相信最好的解决方案是将它作为两个字节的数据发送。但是我该如何实现它,或者为什么只有第一个字节被重复读取?

下面是STM8中接收和写入数据的函数:

UART设置:

发送到 STM8 的数据样本

在此处输入图像描述

我正在使用带有 Cosmic 编译器的 ST Visual Develop。

提前致谢

0 投票
1 回答
510 浏览

rfid - 如何使用STM8S103F3正确读取MFRC522通过SPI返回的数据?

我已经在我的 PC 上使用 Pyhton 脚本通过 UART 测试读取带有 RFID-RC522 模块的 Mifare RFID 1K 卡。现在我正在使用 STM8S103F3 通过 SPI 与相同的 RFID-RC522 (MFRC522) 接口,但是当我发送与 Python 脚本/终端相同的命令时,我遇到了无法获得 MFRC522 返回的正确值/地址的问题。这是我第一次使用 SPI,所以我怀疑自己没有正确配置 SPI 或写/读序列有问题,但我自己无法解决问题。

这是我的 main() 函数:

初始化函数如下:

我的问题出现在initMFRC522()我的main()函数中最后一个函数的调用中:

  • 当我只执行第一部分时resetHardMFRC522 ();,我会在硬复位后得到 MFRC522 的 CommandRegister 的预期复位值 0x20;
  • 但是,当我还执行第二部分函数result = writeMFRC522 ( TModeReg, 0x80 );时,在硬复位后我没有得到 MFRC522 的 CommandRegister 的预期复位值 0x20,而且我没有收到与我写的返回相同的地址到(根据 MFRC522 协议)。我无法弄清楚我的问题出在哪里?我检查了 SPI 设置,但时钟极性和相位的设置似乎是正确的。引脚输入/输出方向似乎也是正确的。我想我误用/过度使用/没有正确使用 SPI 标志,或者我在读/写时没有正确的命令序列,但我无法通过阅读数据表和查看其他人的代码来弄清楚我的错误在哪里互联网 ?
0 投票
1 回答
74 浏览

debugging - STM8S103F3 控制器中的 TIM2 模块在 1us 时没有滴答作响

我在 STM8S103F3 上创建了一个程序,使用 TIM2 模块生成微秒的延迟,但计时器没有按预期滴答作响,当我尝试使用它调用 5 秒延迟时,它给出了大约 3 秒的延迟。我使用的是 16MHz HSI 振荡器,定时器预标量设置为 16。请参阅下面的代码。请帮我弄清楚我的代码有什么问题。