问题标签 [mcu]

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 回答
91 浏览

c - 在延迟函数中防止溢出

我在我的一个项目中有一个小的延迟函数,我使用我的 MCU 的定时器外设自己编写了这个函数:

静态无效延迟100Us(无效)

该计数器是一个具有 10ns 分辨率的自由运行硬件计数器,因此我编写了该函数以提供大约 100us 的延迟。我认为这原则上应该有效,但是可能存在计时器溢出小于 10000 的情况,因此 ctr2 将被分配一个超过 ctr 实际可以达到的值,因此我最终会陷入无限循环.

我需要在我的项目中使用这个计时器产生一个延迟,所以我需要以某种方式确保我总是得到相同的延迟(100us),同时保护自己不被卡在那里。

有什么办法可以做到这一点,或者这只是我无法通过的限制?

谢谢!

编辑:

0 投票
1 回答
57 浏览

html - HTTP 1.1 GET 请求太快,服务器无法响应,导致 TCP 重传

我正在 MCU 上制作带有 RTOS 的网络服务器。网络库使用 HTTP 1.0 并关闭 TCP 套接字并在每次请求后重新侦听。

我正在服务的网页有多个 .js 文件,它需要在 html 完全加载后加载。

发送 html 内容后,Web 浏览器立即发送“GET /file.js HTTP/1.1”消息。然后,在 Web 服务器最终能够处理它之前,使用 TCP Retransmission 重新传输此消息 3 或 4 次。

问题1:这种快速传输是否是由于Web浏览器仍在尝试不关闭连接的HTTP 1.1协议?来自我们服务器的内容状态回复消息是 HTTP 1.0,但是 Web 浏览器不断地使用 HTTP 1.1 请求 GET。

问题 2:有没有办法让网络浏览器放慢速度,这样它就不会因为 TCP 重传而阻塞网络?

任何建议都是有帮助的。

0 投票
1 回答
62 浏览

spi - PIC18F26Q43 SPI 从机不接收数据

我想要两个 PIC18 通过 SPI 进行通信。从机具有带有 FIFO 和独立 RX 和 TX 寄存器的新 SPI 模块。由于某种原因,我无法接收数据。我想我错误地配置了模块。我还使用 SS 中断来准备传输。在芯片选择时,我交换缓冲区并初始化计数器。这部分有效。我还在示波器上看到了主控的时钟和数据信号。但是,不会触发 TX 和 RX 的中断。

这是配置:

无效 spiInit() { spiTransferComplete=0;

}

这是中断程序:

}

0 投票
2 回答
174 浏览

stm32 - 如何通过jtag或swd连接stm32f205进行读/写?

今天是个好日子。

需要通过 jtag / swd 连接到 stm32f205。

所有引脚都焊接有一个芯片。

stm32f205 引出线

有中文st-link v2

st-link v2 来自中国

我想我需要 rst, swclk, swdio 3.3vdd

在数据表中为 7、49、46、48 针

我不确定我是否正确连接并且 stm 实用程序也看不到芯片。

我请你引导我走上正确的道路,并解释我哪里出错了,以及如何正确地做。

先感谢您。

0 投票
1 回答
95 浏览

go - Go 支持 MCU 吗?

我已经探索过,Go 是否支持微控制器单元。得到了一些关于TinyGo的信息。怀疑 TinyGo 是否等同于 Linux 中支持的 Golang。

0 投票
1 回答
30 浏览

tcp - 用于互联网连接的 LPC 1769 以太网 MAC

我正在尝试将 LPC 1769 用于 IOT 应用程序。我想在 MCU 代码中加入一个 MQTT 客户端。但是了解 MQTT 客户端需要 TCP/IP 堆栈。在阅读数据表时,我了解到 LPC 1769 仅支持以太网 MAC。我有两个查询如下

  • 由于 TCP/IP 堆栈不是建立在 MCU 上的,MCU 不能仅使用以太网 MAC 连接到互联网吗?
  • 如果不用于互联网连接,MCU 上的独立以太网 MAC 选项有什么用?
0 投票
1 回答
88 浏览

assembly - 如果我不将 8051 中的端口设置为输入或输出会怎样?

我是初学者,最近才开始,所以如果这是一个愚蠢的问题,请多多包涵。所以在 8051 单片机中我们使用 MOV P1, #00HMOV P1, #0FFH将端口分别设置为输入或输出。我的问题是,如果我没有特别提到端口是输入或输出,程序还能工作吗?我正在尝试实现一个查找表,其中 P1 将获取输入(0-9)并在 P2 中显示其正方形。

0 投票
0 回答
185 浏览

c - STM32 CAN 通信 Rx 期间接收随机数据字节

我正在为我的项目使用带有 CAN 通信的 STM32F103RBT6 Nucleo 板。我使用 Microchip CAN Bus Analyzer(充当节点)来传输 CAN 数据。

项目设置: CAN 消息流来自:CAN Bus Analyzer --> CAN Transceiver --> STM board。我只需要从 0x581、0x582、0x583、0x584、0x4A1、0x4A2、0X4A3、0X4A4 ID 接收消息。为了实现这一点,我已经应用了相同的过滤器。

问题: 在 Keil 的调试器模式下,我能够看到传输的 CAN 消息,并在“RxData”中正确接收。但是,当我尝试发送 4 字节长度的数据时,从 1 到 4 的 RxData 数据字节填充了与我发送的完全相同的消息,但数据字节 5 到 8 也被随机填充(在理想情况下,字节 5 到 8 应该都为零)。仅当我发送字节长度为 4 的数据时才会出现此问题。我尝试发送不同长度的数据字节(4 个除外),它工作得很好。问题仅在我尝试发送长度为 4 的数据字节时出现。我在下面附上了我的整个程序代码。并附上问题的截图。如下请见。

截图: 案例一: ID=581;DLC = 8; 在此处输入图像描述

案例2:ID = 581;DLC=6; 在此处输入图像描述

案例3: ID=581;DLC=2; 在此处输入图像描述

案例4:(问题) ID = 581;DLC=4; 在此处输入图像描述

案例5:(问题) ID= 4A1;DLC=4; 在此处输入图像描述

此问题仅与长度为 4 的数据字节有关。如果有人可以帮助我解决此问题,可能会有很大帮助!

0 投票
0 回答
110 浏览

python - Python可以做工厂方法设计模式吗?

我在C中使用函数指针数组完成了它。指针被随机访问并用于调用它们的指向函数,该函数在WS2812B LED 灯条中运行独特的动画光图案[使用ADAFruit NeoPixel 库]。但是,我想对它进行OOP [对于 1,'因为 OOP 使设计新动画变得更容易]!

我在C++中尝试过,但已经有几十年了,所以我生疏了。这让我处于一个联系点——我是重新学习C++,还是以此作为最终学习Python的动力?

这就是为什么。这是什么:

由于这在内存不足的MCU环境中运行,我希望动画例程只占用所需的内存,然后在完成后释放该内存。所以,我想避免这样的事情:实例化一堆动画对象,并将它们加载到一个数组中,以便随机索引。这将一次将所有动画对象所需的内存总和塞进堆/堆栈——这将对 MCU 中可能存在的动画数量施加更大的限制[特别是因为 RAM 通常比 ROM 供应短缺/舞会]。

不,我想用更像指向“实例化”函数的指针来填充该数组,当被调用时,实例化一个选定的动画对象。然后,当该动画完成时,“删除”/刺激析构函数/等。所以内存被完全清除[即没有内存泄漏]。

我的C++实现充满了内存泄漏 [C++ 中没有内存管理] —— 不过,比我刚开始时要少得多,所以我正在变得更好 [有点蒙蒂点头,那里]。

那么......我是继续追求恢复我的C++辉煌[我曾经是“专家”],还是放弃C++并使用Python?唯一的转折点是:PYTHON能胜任吗?

好的,另一个引爆点可能是我对运算符重载的喜爱;)

顺便说一句:我目前使用的 MCU 是SeeedStudio XIAO,它是一个快速和铁质的小虫子,所以,即使 Python 比 C++ 更慢一点[因为额外的开销],不用担心 [太多?]。

0 投票
1 回答
458 浏览

events - 事件和中断之间的区别

我知道这个话题很久以前就被争论过了(链接:interrupt and event 之间的区别),尽管我认为答案不够充分。原因是下一个:当人们谈论事件与中断时,事件一词表示硬件而不是软件。而且,根据那个解释,事件是可以预测的,不是突然发生的事情,但是在唤醒事件的情况下,这不可能是真的,因为这个事件不是“预期的”,它是自发的。例如,可以查看 stm32 数据表并注意到有一个所谓的唤醒事件启用寄存器。这个“事件”既不涉及要执行的特定代码,也不涉及与软件相关的东西。