问题标签 [hal]
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.
stm32 - HAL SPI DMA check how many bytes received during operation
I am transferring 10 bytes from master to slave over SPI+DMA with HAL. How can I check whether how many bytes the receiver has at that moment and if all the 10 byte has not been received then stops the process again. Because the master after sending 10 bytes should get an answer from slave but if the slave has not received full byte it waits and system go in indifinite.......
Any idea??
c - 如何在 STM32F1 上使用 HAL 库永久启用 uart RX 中断
我看到 HAL 提供了以下函数来接收带有中断的串行数据:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
它基本上设置了 rx 中断和返回。
HAL_UART_RxCpltCallback()
一旦接收到的字节数达到Size
.
HAL 在执行此回调之前禁用 rx 中断
问题:
传入字节的数量将是可变的(从 1 到 ~100),我需要将它们放入环形缓冲区。
所以我设置Size
为 1 并HAL_UART_Receive_IT()
在回调中再次调用以重新启用中断,如果板子不时发送 1 或 2 个字节,它会很好地工作,但超出的字节会丢失
我的猜测是它们被错过了,因为它们在中断禁用之间到达 - 启用
有没有办法让中断永远运行而不会覆盖 HAL Cube 生成的代码?
如果不是,那么覆盖所涉及功能的干净方法是什么?
有什么我遗漏的东西可以避免需要找到这个解决方案吗?
sd-card - 使用 Hal 驱动在 STM32f103 上传输 SD 卡通信序列
我正在编写一个 SD 卡低级驱动程序,以在带有 STM32f103rb 处理器的 Olimex MOD-MP3-X 板上实现 Chan 的 FATFS 系统。我对这个话题很陌生,而且我不是以英语为母语的人,但我希望我能指出我的问题。首先,我想编写一个函数来通过 SPI 发送 cmd 命令。所以我得到了这个函数使用的原型:
...
HAL_SPI_Transmit_IT(&hspi2, &buffer, 5);gcc - HAL_GetTick() 崩溃单片机
我使用 STCubeMX 为我的 nucleo-f446ZE(STM32F446ZET6) 创建了一个简单的项目。
该项目应该是一个 USB 设备 HID,但它无法启动。在搞乱调试器后,我发现 MCU PC 寄存器转到 0x00000000 或 0xFFFFFFFF 或有时是随机无效值。
我没有修改任何代码。我用 MDK-ARM(修改后的 GCC,Vision IDE)和 GCC(openSTM32)编译了代码,同样的事情发生了。
调用栈:
- 主要的
- SystemClock_Config
- HAL_RCC_ClockConfig (632)
- Hal_GetTick
Ps:RAM 在 0x080149A 之后损坏,这就是为什么程序会做一些奇怪的事情 Image
解决方案
CubeMX 没有很好地设置时钟。这是我用来使USB工作的设置。
c - 执行从不跳转到 stm32f4105x 中的 DMA IRQHandler
我正在尝试使用 DMA 事务从 STM32f401c-disco 的 STM32f4105VC 的 ADC1 获取 1000 个样本的序列。我希望 DMA 在传输完成时产生一个中断并停在那里,这样就不会覆盖任何数据。这是代码:
当我在一段时间后调试程序时,DMA停止并且标志TCIF0
并HTIF0
设置在寄存器DMA_LISR
中,尽管DMA2_Stream0_IRQHandler
函数中的断点仅被激活一次。为什么?
stm32 - STM32 HAL CAN TX 邮箱
我正在开发一个使用 STM32 HAL 驱动程序的项目,特别是中断模式下的 CAN 驱动程序。
据我了解,STM32F407xx 微控制器有三个 CAN 传输邮箱,允许用户一次“排队”三个消息进行传输。
然而,在第二次调用 HAL_CAN_Transmit_IT() 时,HAL CAN 驱动程序似乎返回 HAL_BUSY;查看源代码,该函数在将句柄状态设置为 BUSY_TX 之前似乎没有检查任何其他邮箱是否为空(即使另一个邮箱可以用于以下消息),从而防止添加后续调用到另一个邮箱的消息。
我是否错过了有关此驱动程序工作方式的某些信息?过去有人遇到过这种情况吗?
java - 具有 hal 响应的 Spring Boot 始终定义的结构
我有一个使用 PagedResources 和 HAL 返回资源集合的 Spring Boot 应用程序。
这是一个常见响应的示例:
否则,如果要返回的集合为空(可能为空),则响应将是:
我想要一个总是返回一个 JSON 的响应,其中包括 _embedded 节点及其所有字段(显然是空的),例如:
我的选择是始终让客户看到我的 JSON 的整个结构(也许这不是最佳实践?)。
这是代码片段:
任何建议表示赞赏!
在此先感谢,安德里亚。
java - 带有 Traverson 的 Android spring HATEOAS REST API 客户端支持
我正在尝试为带有 HAL 格式响应的超媒体 API 实现 spring android 客户端。Spring HATEOAS - 参考文档描述了受 Traverson JavaScript 库启发的客户端服务遍历的实现。我这样做:
但是我在创建一个新的 Traverson 对象时遇到了以下错误:
有人知道如何解决吗?
是否有其他/更好的方法来支持 android 中的 HAL 响应?
c# - (Cosmos) 这行代码不起作用:[assembly: Rings(System.Rings)]
为什么这不起作用?它应该按照教程进行。错误是无法识别 Rings。
c++ - 设计模式:C++ 抽象层
我正在尝试编写一个抽象层来让我的代码在不同的平台上运行。让我举一个我最终想在高级代码中使用的两个类的例子:
我的问题是:我可以使用什么设计模式让低级代码填充实现?以下是我的想法以及为什么我认为它们不是一个好的解决方案:
理论上,上面的定义
highLevel/thread.h
和平台特定的实现都没有问题lowLevel/platformA/thread.cpp
。这是在链接时解决的低开销解决方案。唯一的问题是低级实现不能向其添加任何成员变量或成员函数。这使得某些事情无法实施。一种出路是将其添加到定义中(基本上是 Pimpl-Idiom):
现在低级代码可以有它自己的结构或对象存储在 void 指针中。这里的问题是它很难阅读并且编程很痛苦。
我可以
class Thread
通过继承来制作纯虚拟并实现低级功能。高级代码可以通过调用工厂函数来访问低级实现,如下所示:这已经足够整洁了,但是对于静态类却失败了。我的抽象层将用于硬件和 IO 事物,我真的希望能够拥有
Display::drawText(...)
而不是携带指向单个Display
类的指针。另一种选择是只使用可以像这样在链接时解析的 C 样式函数
extern "C" handle_t createThread()
。这对于访问仅存在一次的低级硬件(如显示器)非常简单且非常有用。但是对于任何可能多次出现的东西(锁、线程、内存管理),我必须在我的高级代码中携带句柄,这很难看,或者有一个隐藏句柄的高级包装类。无论哪种方式,我都必须将句柄与高级和低级端的相应功能相关联。我最后的想法是混合结构。
extern "C"
用于仅存在一次的低级内容的纯 C 风格函数。可以多次出现的东西的工厂函数(参见 3.)。但我担心混合的东西会导致不一致、不可读的代码。
对于适合我要求的设计模式的提示,我将不胜感激。