问题标签 [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.
stm32 - STM32F072RB 在从机模式下不通过 SPI 接收/发送数据
我正在使用
STM32F072RB
uC 在从模式下接收和传输数据,SPI2
配置如下:
该寄存器APB1ENR
也已正确配置。
当前程序只是检查RXNE
标志,从中读取接收到的数据DR
并将随机值写入DR
.
我接收数据时的状态寄存器具有以下值:
主机正确发送数据,我检查了从机引脚的信号(两侧的时钟相位和极性相同,NSS 信号在通过 MOSI 发送 SCK 和数据之前被清除)。
我什至将引脚配置为输入,我知道我可以读取主机可以发送的任何数字信号。在当前配置下,slave 似乎收到了一些东西,因为RXNE
在 master 发送数据时设置了它,但读取的值始终为 0x00。
我尝试了不同的配置(软件/硬件 NSS、不同的数据大小等),但我总是得到 0x00。此外,我在读取后发送的随机值DR
不会发送到输出。
这是我当前的函数,它被连续调用:
我究竟做错了什么?有什么我没有正确配置的吗?
提前致谢。问候,哈维尔
编辑:
我切换到软件 NSS 并从网上找到的 STM32CubeMX 示例中复制了寄存器值。我不能将这些库用于该项目,但我希望具有相同的行为。
新值是:
意思是
- fPCLK/256(适合通信速度的),
- SPI启用和
- SSM = 1(软件 NSS)。
意思是
- 8位数据和
RXNE
如果 FIFO 级别大于或等于 1/4(8 位),则生成事件。
意思是
- MISO、MOSI 和 SCK 交替功能 5 (SPI2)
- NSS 未配置,因为现在它处于软件模式(始终选择从站)。
我仍然得到相同的结果,并且带有这些库的评估套件可以正常使用SPI1
。因此,肯定还有另一个与寄存器值无关的问题。
可能有任何时钟问题,例如引脚需要获得一些时钟吗?
谢谢!
arm - STM32F0:EXTI1 / EXTI2 上的中断未触发,而 EXTI4 正在工作。*使困惑*
你能帮我在这里告诉我我做错了什么吗?EXTI1 和 EXTI2 不会触发,而 EXTI4 工作正常。这不是硬件。如果我切换引脚,新的 EXTI4 按钮将继续触发,而我切换它的按钮不再触发。
我已经彻底检查了所有段,但我无法弄清楚为什么 EXTI0_1_IRQHandler 不会触发,而 EXTI4_15_IRQHandler 会触发。请参阅下面我用于库的两个文件。我将 SPL 与 OpenSTM32 IDE 一起使用。“main.c”只调用
所以真的没有其他事情发生。
和...
c - 使用 STM32F0 ADC 单独读取不同的输入
STM32F072CBU 微控制器。
我有多个 ADC 输入,并想分别单独读取它们。STMcubeMX 生成样板代码,假设我希望按顺序读取所有输入,但我无法弄清楚如何纠正这个问题。
这篇博文表达了我遇到的同样问题,但给出的解决方案似乎不起作用。每次转换打开和关闭 ADC 都与返回值中的错误相关。只有当我在 STMcubeMX 中配置单个 ADC 输入,然后在不取消初始化 ADC 的情况下进行轮询时,才会返回准确的读数。
cubeMX 的 adc_init 函数:
主程序
我现在关闭 ADC 并重新初始化以更改通道的过程:
在这一点上,我不太确定是否有办法完成我想要的,STM32 似乎死定在有源 ADC 线路上,处于常规组中并按顺序转换。
c - ST32 HAL SPI 从机中断中的溢出
我对 ST32F030 和 Slave SPI 有疑问
我试图让它响应一个 spi 命令:-
主机发送 0x05,从机以 7 字节数组响应。它第一次工作,但随后失去同步,并设置 OVR 位。我不知道为什么。
继承人的代码: -
任何建议都感激不尽
timer - 使用 NUCLEO-F072RB 读取正交编码器输出
我将NUCLEO-F072RB板与X2C结合使用来读取直流电机编码器的输出,以测量其速度。根据数据表,使用定时器 TIM2 和 TIM3 可以执行此读取操作。为此,我按照这个和这个来源编写了以下代码:
在这里,我对两个输入都使用了备用函数 1,根据数据表,它对应于 TIM3。据我了解,通过该设置,每次 T1(在本例中为 GPIO A6)上出现上升沿时,TIM3 计数器都会增加 1,而当 T2(A7)上出现上升沿时,计数器会减少一个。
出于调试目的,我为我可以监控的变量设置了一个值。如果计数器为 1 或更大,则设置该值INT16_MAX
,否则0
设置。
在使用实际编码器之前,我尝试使用开关手动生成上升沿和来自另一个 GPIO 的 PWM 输出来馈送输入(GPIO 的 A6 和 A7)。这样,我希望 TIM3 计数器开始向上/向下计数,但没有任何反应。我注意到当我将信号连接到 A6 或 A7 时,它会退化,这可以解释为什么没有检测到上升沿。用直流万用表测量这些输入上的电阻,我得到大约 40 欧姆,这对于输入端口来说非常低。
如何正确设置定时器和 GPIO 才能读取编码器信号并让 TIM3 计数器开始计数?
c - 设置引脚后触发外部中断
我试图让外部中断在 Nucleo-F030R8上运行 并撞墙。
一切都已配置并在步进模式下运行良好,但是当我使用简单的跳线将我的板连接到另一个测试板并运行相同的代码时,即使该测试板(第二个 Nucleo-F302R8,它应该只产生一个我想用第一个测量的信号峰值)没有打开。
我正在混合使用来自 STM 的 HAL 库和我自己的一些代码。
有人最终遇到了类似的问题吗?我正在使用 STM32 的系统工作台。
ISR的一部分,中断处理程序被切掉
在将引脚设置为低电平和变化上升之间,中断触发。
更新:
会不会是通过重置引脚BSRR
或BRR
产生中断?我正在逐步检查我的代码,每次重置引脚时都会生成中断。
embedded - OpenOCD read_bank 命令要求更多参数
我们正在尝试使用 OpenOCD 读取我们的 STM32F0x 微控制器的部分内容,我们也使用 OpenOCD 对其进行编程。但是,该flash read_bank
命令不像记录的那样工作。无论我们输入什么,错误都是:
例如,我们通过以下方式调用它:
其他闪存操作按预期工作,例如:
或者
该命令flash read_bank
似乎很少使用。至少,这是我的谷歌搜索说的。有人知道如何使用这个命令吗?
interrupt - 在stm32f030的端口B上使用外部中断
我正在使用 STM32F0308 探索板。我想在 PORTB 的 PIN11 上使用外部中断。问题是我无法调用 PORTB。单片机依然使用PORTA的PIN11。我知道端口的引脚被组合在一起,但我指定 PORTB 仍然是 micro 正在使用 PORTA。我认为此代码行存在一些问题
这是代码
spi - 无法在 Fatfs 中使用 f_read() 和 f_lseek()
我正在尝试通过 SPI 连接到带有 stm32f091cctx MCU 的 2GB sd 卡类 6。使用 fatFs 库版本。R0.13a 我能够安装驱动器并使用 f_mount 和 f_open 函数打开文件。但是当涉及到从文件中读取时,它只是冻结在 f_read 函数的某个地方。此外,当我尝试使用 f_lseek 更改指针的位置时,它再次冻结。f_lseek 仅在我将其编写为 f_lseek(&MyFile, 0) 时才有效。我的这部分代码如下:
runtime-error - 错误:闪存驱动程序功能执行错误程序下载失败?
我正在使用 stm32 板。在调试时,我收到此错误,可能错误是在 rasing flash
C:\CooCox\CoIDE>"C:/CooCox/CoIDE/bin\coflash.exe" 程序 STM32F051R8 "D:/Programs/STM/blinker/blinkLeds/Debug/bin/blinkLeds.elf" --adapter-name=ST -Link --port=SWD --adapter-clk=1000000 --erase=affected --reset=SYSRESETREQ --driver="C:/CooCox/CoIDE/flash/STM32F05xx_64.elf" Erase: Failed Error: Flash driver function执行错误程序下载失败!