问题标签 [stm32f3]
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 - 如何在 STM32 上使用 DMA 和 Sigma Delta ADC?
最近我尝试了带中断的 Sigma Delta ADC。它工作得很好。现在我想删除中断并添加 DMA。但是随后 DMA 不会将任何内容添加到数据指针数组中。
我没有改变任何东西,除了删除中断和添加 DMA。你觉得我接下来应该怎么做?
这些数组为零。我有 9 个 SDADC 用于 SDADC1。3 个 SDADC 用于 SDADC2,5 个 SDADC 用于 SDADC3。
完整代码:
c - XGZP6859D 带 Stm32f302R8 的压力传感器
我想创建一个 API 来使用电路板从XGZP6859D
压力传感器中获取价值,stm32f302r8 nucleo
这是它的数据表http://cfsensor.com/static/upload/file/20210110/XGZP6859D%20Pressure%20Sensor%20Module.pdf。
我在 API 中编写了所有寄存器,并声明了一个有助于从传感器获取压力值的函数。
有人会帮助我或提供一些提示如何编写函数吗?提前致谢。
rust - stm32f3发现usart没有发送
这是我用 Rust 编写的简单寄存器级程序。这是在阅读了许多用 C 编写的博客之后。我正在尝试像他们在 C 中为发现板所做的那样配置寄存器,但不幸的是它没有按预期工作。
我正在尝试通过 uart1 发送单个字符。在硬件方面,我按照发现书中的描述连接了我的 ftdi 模块。
发送时,ftdi rx LED 闪烁表示数据传输。Mini-com 预计会显示这些数据,但无论是在 ftdi 还是 mini-com 上都一无所获。
stm32 - STM32 I2C 只传输一次
我使用 stm32f3数据表作为寄存器级编程的参考,而不是 HAL。我很确定我正确设置了所有内容,因为我实际上能够通过 I2C 外围设备传输数据字节但是当我将从地址更改为不同的设备(从加速度计到磁力计)时它无法发送字节我得到一个 NACK和停止条件。为什么会这样?
这是我的时钟设置:
这是我的 I2C 初始化函数(也初始化从寄存器设置):
这两个函数是从 main 调用的。首先调用 ResetClockControl。
另外,定时寄存器值是由CubeMX生成的(正面我设置cubeMX与这里的时钟参数相同)
任何人都可以在这里找出问题吗?
谢谢
stm32 - STM32 SPI数据打包
我无法让我的 STM32f3 发现板(数据表)上的 SPI与陀螺仪传感器(I3G4250D)一起工作在寄存器级别。我知道我正在发送数据,因为我处于全双工状态并使用 16 位数据打包从传感器接收虚拟字节,但是当我尝试使用 8 位访问 DR 寄存器接收数据时,我从传感器得到不一致的值,有时返回一个字节 0xff其他时候返回 2 个字节 0xffff (至少我认为这是正在发生的事情),但没有来自我想要读取的传感器寄存器的实际值。我认为这与我芯片上 STM32 SPI 的自动打包有关,但我认为我正在通过使用 uint8_t* 访问 DR 寄存器来解决这个问题,但它似乎不起作用。
这是我的 SPI 初始化函数,其中包括尝试在其末尾读取字节并将字节写入传感器寄存器函数:
有什么建议么?
stm32 - 如何正确配置带有 lmt86 的 stm32?
我正在实现一个 stm32,它从 LTM86 传感器读取数据并在 CAN 总线中传输转换后的温度。我的问题与 ADC 配置有关,因为 ADC 提供的电压值与用电压表在引脚上测量的电压值不同。因此,转换后的温度将是错误的。
我尝试了这个 ADC 设置:
rust - 使用嵌入式 rust 设置寄存器
所以...我一直在关注嵌入式 rust 书...我目前正在阅读有关寄存器的内容。现在,这本书确实建议我使用STM32F303VC 发现来避免问题,但我找不到,因此我得到了Nucleo F303RE。货物的目标和材料保持不变。所以我认为不会有任何问题。
因此,我使用的 MCU 将 Led 连接到端口 A (0x48000000),其 BSRR 偏移量为 0x18。现在,我在数据表中读到,端口 A 的默认值为 0xa8000000,我不明白为什么。但是当我尝试使用没有任何反应来设置 LED 引脚
ptr::write_volatile(PORTA_BSRR as *mut u32, 1 << 5);
时。甚至我的 gdb 终端也没有反映任何变化。因此,我尝试按照原始教程的建议(0x48001018)检查portE。但即便如此,寄存器值也不会改变。我无法调试此问题。
现在,我能够运行之前的教程,并且能够检查变量和东西。我的 stm 似乎没有任何问题,因为我可以使用 stmc32cubeide 很好地控制它。
这是您想要参考的代码
编辑:所以,我阅读了@Ikolbly 的评论,并查看了 RCC_AHBENR 寄存器,我猜这就像在 arduino 中设置 pinMode(pin, HIGH) 一样,它打开了端口。
我已经修改了代码以设置该位,但似乎没有任何变化。我猜辅助代码已经为 portE 做了这件事,这就是为什么我不必为此做任何初始化......但即使更改 portE 的寄存器值也不起作用。
stm32 - HAL_UARTEx_RxEventCallback() circular DMA: What address is the data?
I'm using the HAL with an STM32F3xx, implementing UART receive with circular DMA. The data should continually be received into the huart->pRxBuffPtr
buffer, overwriting old data as new data arrives, and the HAL_UARTEx_RxEventCallback()
function gets called regularly to copy out the data before it gets overwritten. The HAL_UARTEx_RxEventCallback()
function receives a size
parameter and of course a pointer huart
, but no direct indication of where in the huart->pRxBuffPtr
the freshly arrived data was DMA'd to.
How do I know whereabouts in huart->pRxBuffPtr
the freshly arrived data starts?
rust - 使用 STM32F3 进行 ADC 和 DMA 传输时,为什么在中断回调中只写入一次内存位置?
我希望让我的 STM32F303 探索板使用 ADC 和 DMA 传输到内存位置从温度传感器连续读取,但是在中断回调期间,内存位置似乎只被写入一次并且随后从未更新. 在回调中,我还确认 ADC 的数据寄存器中的值正在发生变化。
我不知道这里的问题是什么,并且可以在正确的方向上使用一些指针。我正在为这个项目使用Knurling 应用程序模板、RTIC(实时中断驱动并发)和stm32f3xx-hal crate。
这是我当前的源代码
这是此运行的一些示例输出