问题标签 [stm32f0]
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 - 为什么周期性中断会有时间差异?
我正在为一种单线通信协议编写低级驱动程序。这条线连接到 STM32F0 微控制器上的 Tx 引脚和 Rx 引脚,以 8Mhz 运行内部时钟。Tx 引脚状态在定时器中断中设置,Rx 引脚在外部 GPIO 中断中读取。
为了测试,我在 416µs 时切换 Tx 引脚(自动重载值为 3333,没有预分频器),在 GPIO 中断中,我读取了 2 个连续中断之间的时序差。测量的时间大约是从“高到低”转换中断到“低到高”转换中断的 500µs 和从“低到高”转换中断到“高到低”转换中断的 300µs。为什么会有这样的差异?以及如何摆脱它?
我检查了示波器上的信号,它是一个脉冲宽度为 416µs 的完美方波。我还使用htim->Instance->CNT = 0;
和time = htim->Instance->CNT;
包装代码的不同部分以查找差异的来源,但无济于事。
这是中断句柄,测量的时间保存在tim3_value
变量中:
c - STM32F072 中没有给出 VTOR 偏移
大多数情况下,我的项目使用 STM32F1xx MCU。在该 MCU 中,给出了向量表偏移量:
如果使用位于偏移量0x00000000的引导加载程序,我需要更改这些偏移量
我的主程序位于偏移量 0x0000D800。
现在我想在 STM32F0xx 上使用为 STM32F1xx 制作的引导加载程序。一切都非常相似,但我看到 STM32F072 没有向量表偏移。
我读到它有必要引导加载程序将 VTOR 复制到 RAM 并移动它。
我不会编写 ASM 代码,有没有示例或说明如何做到这一点?还是有一种简单的方法来添加偏移地址?
timer - STM32F051 - 不同的空闲状态取决于过流输入
我有一个 STM32F051 驱动一个 H 桥(具有适当的栅极驱动器和发送回 MCU 的过流脉冲),它使用 TIM1 和互补信号(以及死区时间生成)为变压器供电。
我正在尝试根据收到的过流脉冲配置不同的“安全”状态:
- 在高侧过流时,关闭低侧场效应管,打开高侧场效应管。
- 在低端过流时,关闭高端场效应管,打开低端场效应管。
想法是提高逆变器的过流性能。
当接收到 GPIO 上的脉冲时,是否可以立即手动将定时器的输出设置为定义的状态?我尝试使用中断功能,但您只能设置一种预定义的“安全”状态。对于我的应用程序,我需要两个(现在,还有更多)。
stm32f4 - STM32F4 上的通用选项字节
我目前正在调整为 STM32F070 编写的一些代码,我们在用户选项字节上使用一个字节来保持复位之间的一些标志,使用:
仔细阅读我们新的 STM32F446 的数据表,让我觉得不再可能使用选项字节来存储一个用户字节......
1 - 我对这个断言是否正确?如果没有,我错过了什么?
2 - 是否有一些解决方法,不涉及重写闪存的扇区?
md5 - MD5 与 CRC32 验证通过蜂窝网络传输的 100kB 二进制数据的完整性
我正在尝试是否可以使用 CRC32 作为我的固件无线更新的完整性检查机制,或者我是否应该使用诸如 MD5 之类的散列算法?
我的情况:
该平台是 STM32F091RC(512KB 闪存,32KB RAM),没有 MD5 或其他散列算法的硬件/外设。它确实提供了一个 CRC32 外设。固件下载的确切长度在 100KB 范围内,并将通过蜂窝数据网络(LTE - Cat M1 和 2G)传输。我不关心故意篡改——只关心由于噪声等引起的传输错误。所有传输都将使用 TCP 作为传输协议。据我所知,蜂窝数据包和它们封装的 TCP 数据包都有自己的数据包级别 CRC。对于不大于 1500B 的数据包,TCP 数据包是 CRC16,我相信蜂窝数据包更小并且有自己的 CRC(不确定 CRC 大小)。因此,已经完成了两组 CRC 校验,并对坏包进行了必要的重传。
CRC32 将更易于实现,并且占用空间更小/无占用。我假设 MD5 将提供更高级别的完整性保证(如果这是正确的术语!),但是以复杂性和占用空间为代价(它也可能更慢,但这不是真正的问题,因为这些下载只是非常偶然)。
我已经阅读了许多文章(关于堆栈溢出和其他地方),但仍然没有清楚地了解在从 CRC32 切换到 MD5 或类似的哈希算法之前我应该应用什么传输大小限制?一篇文章有:
编辑:查看关于 CRC 和 Lott 的答案的 Wikipedia 页面,这里是我们所拥有的:小于 64 字节:8 位 CRC 小于 16K 字节:16 位 CRC 小于 512M 字节:32 位 CRC
因此,基于上述情况,我认为 CRC32 会很好,但我没有很高的舒适度,因为这是我发现的唯一一个与这些类型的数字有关的部分。
对我应该做什么的任何观点非常感兴趣 - CRC32 或 MD5/类似的哈希算法?
c - 我正在尝试在中断模式下使用 UART 通信,我应该把我的功能放在哪里?
我是 USART 通信的新手,如果我问了一个愚蠢的问题,请原谅我。
我正在使用 STM32F0discovry 板和使用 IAR EWARM 的代码。我的主要功能是这样的。我在 main 函数之后还有一个 HAL_UART_RxCpltCallback 函数。
我正在阅读一些教程,想知道是否应该将我的函数放在 USART1_IRQHandler 函数中。
还是应该将我的代码放在 HAL_UART_RxCpltCallback 函数中?我很困惑,感谢您花时间阅读本文!
stm32 - 如何使用 ATLINK/V2 UART 通信烧写程序
我在这个模块中使用 ST-LINK/V2 RoHS 模块,我们有 20 个引脚。没有 SWCLK 和 SWDIO 引脚我需要编程。[在此处输入图片描述][1]
在下面的引脚图中,我们有 RX 和 TX,我们可以使用它来刷新程序吗?让我知道
python - 将firebase数据从arduino打印到7段显示器
我正在尝试获取我的 firebase 数据并使用 Arduino 将其显示到我的 7 段,并且我正在获得 python 脚本的帮助以将数据发送到串行监视器。虽然它检测到Serial.available()
循环内部,但我不知道如何获得该特定值并将其第一个数字显示到我的 7 段
目前对于测试我只是想显示 1 如果串行监视器和 arduino 内部有数据匹配
阿德鲁伊诺:
Python脚本:
我最终得到的只是显示 0。非常感谢任何帮助或想法。谢谢。
c - ARM Keil 版本 5 [预期为 ')']
我正在使用 Keil 版本 5 工具链对 STM32F0 系列进行编程,但无法解决以下给出的错误。我确定我遗漏了一些东西,但很难找到它。
提前致谢。
这是完整的功能块: