问题标签 [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.

0 投票
2 回答
4378 浏览

microcontroller - 使用 STMF401RE Nucleo 计算温度传感器的正确公式?

我正在使用 STM32F401RE Nucleo 板来测量环境温度。在采样过程之后,我从 ADC_CHANNEL_TEMPERATURE 收到一个数字值,我想将此数字值转换为 C°。我在互联网上搜索了这个,我发现了两种不同的方法:

方法1:http: //www.st.com/content/ccc/resource/technical/document中的第226页

方法 2:http: //www.st.com/content/ccc/resource/technical/document中的第 251 页

它让我困惑哪一个是计算 C° 温度的正确公式。虽然方法 1 来自 STM32F401 的参考手册,但温度结果看起来并不正确。而STM32F0系列参考手册中的方法2,看起来更合理。

还是不知道在使用STM32F401RE Nucleo板时应该应用哪个公式?

0 投票
1 回答
764 浏览

timer - STM32 blocking delays not consistent with interrupts disabled

I am running on an STM32F0xx micro, and I have the following code that simply toggles a pin using blocking delays (yes I know blocking delays are bad, not point here).

I disable interrupts to make sure nothing else is going on at this point. When I scope these waveforms, I see 10 clock periods; however, the periods of these waveforms do not all match. All even waveforms (0,2,4,6,8) have the same period, and all odd waveforms (1,3,5,7,9) have the same period, but the even and odd waveforms differ by a significant amount (%12). The even waveforms correlate to the first delay toggling, and odd to the second in the for loop. I do not have any idea why these would differ in period. Anyone have any insight here?

0 投票
1 回答
3320 浏览

hal - 写入/读取 I2C EEPROM + STM32F0 发现错误

我正在努力写入或读取 AT24C256 I2C EEPROM。我正在使用 STM32F0 发现板读取/写入 EEPROM。

我正在使用 HAL 库和 CUBEMX 作为基本结构。我编写了小代码来测试读写功能。在调试时,Test 的值始终为“2”,而如果成功写入内存,则应该为“1”。这里是 :-

0 投票
1 回答
6741 浏览

stm32 - STM32F0 使用 DMA 发现 I2C 传输

我正在尝试使用 DMA 从 I2C 传感器 (BNO055) 获取数据,但无法启动 DMA 传输。我找到了很多关于 F1、F3 和 F4 STM 微控制器的示例,但对 F0 没有任何帮助。我要做的是:

  1. 我使用 poll 方法初始化传感器,它工作正常。
  2. 我使用以下代码初始化 DMA:

`

`

  1. 我使用 poll 方法设置了要读取的传感器内存的正确地址。
  2. 现在我想使用 DMA 读取 32 个字节。我必须使用I2C_TransferHandling()函数发送传感器地址吗?那么应该发送哪些其他参数呢?我在执行后的 DMA 初始化中错过了什么:

I2C_DMACmd(I2C1, I2C_DMAReq_Rx, ENABLE); DMA_Cmd(DMA1_Channel3, ENABLE);

总线上什么也没有发生(我使用逻辑分析仪检查它)。

0 投票
2 回答
1043 浏览

iot - STMicro STMTouch 驱动器 使用 5 通道单电极设计解决线性传感器问题

我正在使用一个定制板,它有 8 个通道,由三个触摸键和 1 个线性传感器组成。

有 8 个通道 IO,三个采样 IO,没有屏蔽配置。其中三个通道用于三个触摸键。其中五个通道用于线性传感器。

我使用过 STM3270B Discovery 板,它在半端电极设计 (LIN_H) 中设置了三个通道。我已经完成了这个板提供的示例,用于非中断实现。

我使用过 STM3207 评估板,它有两个通道设置为两个触摸键。

在我的定制板上,触摸键完美无缺。五通道线性传感器不完全工作。所有五个垫都确实检测到触摸,但就数据位置而言,它失败了。该示例在单个通道中包含所有 ios。我知道没有一个例子使用了 5 个通道,这些通道分布在两个 TSC 组中。它在 STMTouch 驱动程序用户手册中提到,但我将不得不再次查找代码示例。

问题是确定传感器 LINEAR_POSITION = MyLinRots[0].p_Data->Position 值的宏有两个结果。如果触摸与组 1 IO 关联的两个焊盘中的任何一个,则 DETECT 宏会正确触发,但 LINEAR_POSITION 值为 0x2。同样,如果触摸与第 2 组 IOS 关联的三个焊盘,则 DETECT 宏会正确触发,但 LINEAR_POSITION 值为 0xC。

我认为每个垫的值会在 0 到 255 之间变化 5 种方式。我查看了原始位置而不是缩放位置,但它的行为相似。

这是我在头文件和源文件中拆分的通道、银行、触摸键、线性/旋转和对象的布局。

标题:

设置定义的源文件

任何帮助表示赞赏。

0 投票
1 回答
2920 浏览

arm - 如何在STM32 MCU中每通道每n秒读取几个ADC接口?

我正在使用 STM32F0 微控制器的 ADC 通道(12 位分辨率)来读取电路板三个不同点的电压值。我要做的是每2秒读取一次值(我有2秒的时间读取三个点的值)并通过UART接口发送。为了选择我正在读取的 ADC 通道,我正在实现电压读取功能,如下所示:

这是扫描一个 ADC 通道的功能。为了读取其他两个 ADC 通道,我使用相同的程序,只需更改通道号所在n行中的值。注意在函数中声明的类型相同,但是是全局变量,是否应该在每个函数中声明为局部变量?chConfig.Channel = ADC_CHANNEL_n;nchConfigsConfigMX_ADC_Init()chConfig

我遇到的问题是该readv1函数读取一个恒定电压(我已经用电压表检查过),但是通过 UART 显示在终端中的数字变化很大,在 120 到 2400 之间。我不确定是否使用该线chConfig.Channel = ADC_CHANNEL_1;来选择频道很好,或者是否有任何其他程序要遵循。我怎样才能正确读取每个 ADC 的值?

为了每两秒扫描一次 ADC,我使用了一个 8 MHz 定时器,如下所示:

这是我初始化外围设备的主要功能:

以下是定时器和 ADC 的初始化函数:

0 投票
1 回答
2235 浏览

stm32 - STM32F030 GPIO中断

试图在 A3 上获得中断,以在 rx 字符上将 cpu 从睡眠中唤醒,但它没有触发。

是什么定义了 GPIO 引脚将触发哪个中断?我在参考手册中找不到

0 投票
1 回答
531 浏览

ide - 如何对微控制器进行编程?

我有一个微控制器STM32F051,我想对其进行编程。我寻找可以使用的 IDE,并找到了我正在使用的TRUESTUDIO 。我想知道我应该如何将我制作的程序发送到微控制器中。我需要任何特定的编程器(例如 Microchip Pics 的电子设备)吗?当我单击按钮调试时,我收到一个错误, "Error in initializing ST-Link device. Reason: Failed to connect to device. Please check power and cabling to target." 我不确定我是否误解了某些东西。我下载了软件并选择了我的特定版本的微控制器,但它似乎无法识别它......

0 投票
1 回答
1332 浏览

timer - STM32F051定时器配置

我在 STM32F051 中遇到了定时器配置问题。我正在使用 StdPeriphLibrary,我希望每 1 毫秒(频率 = 1kHz)生成一个中断。

这是定时器初始化:

这是中断例程:

此代码每 66 ms 生成一个中断 - 在示波器上检查。

应用程序中没有使用其他中断。

0 投票
3 回答
2087 浏览

c - 在 n 个 cpu 周期内添加延迟/什么都不做的最佳方法

我需要在我的 n 个 CPU 周期(~30)的代码中添加延迟。我目前的解决方案是下面的解决方案,它有效但不是很优雅。

此外,延迟必须在编译时知道。我可以使用它,但如果我可以在运行时更改延迟,那将是理想的。(如果有一些开销也没关系,但我需要 1 个周期的分辨率。)

我没有任何可以使用的外围计时器,所以它需要是一个软件解决方案。

nops.h: