问题标签 [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.
interrupt - 无法通过 UART 传输每个字符
我正在使用 stm32f0 MCU。
我想将从 uart 接收到的每个字节传输到 uart 之外。我正在对从 uart 接收到的每个字节启用中断。
我的代码很简单。
我的电脑将 ASCII 传输12345678
到 stm32。如果一切正常,PC 应该会收到12345678
回复。但是,PC1357
改为接收。代码有什么问题?
interrupt - 为什么在这种情况下 UART 发送中断不起作用?
我正在使用 stm32f0 MCU。
我有一个简单的 UART 回显代码,其中接收到的每个字节都将被发送出去。我测试了它是否有效。这里是;
即使它有效,我也对代码感到不舒服。首先,tx_timeout
是 0,大多数代码示例都是非零的。我不知道副作用。其次,HAL_UART_Transmit()
是阻塞调用,不建议在中断中使用阻塞调用。因此,我决定使用中断进行 uart 传输HAL_UART_Transmit_IT()
而不是阻塞调用。这是修改后的代码;
但是,它没有按预期工作。我的电脑将 ASCII 12345678 传输到 stm32。如果一切正常,PC 应该会收到 12345678 回复。但是,PC 会收到 1357。这段代码有什么问题HAL_UART_Transmit_IT()
?
arduino - stm32 中的 Arduino millis()
我正在尝试将一些 Arduino 库移植到 stm32。在 Arduino 中,millis()
返回自启动以来的毫秒数。stm32中是否有等效功能?我正在使用 stm32f0 MCU。
stm32 - 使用 HAL 驱动程序在 stm32 上进行 EEPROM 仿真
我正在尝试在 stm32f0 上模拟 EEPROM。STM 提供了一份应用说明。
在样本main.c
中,
Flash_Unlock()
是STM标准外设库中使用的函数。但是,我使用的是自动生成使用 HAL 驱动程序的代码的 CubeMX。是否Flash_Unlock()
必须先调用才能使用 EEPROM_emulation API?如果是,那么调用的 HAL 等效项是什么Flash_Unlock()
?要在 CubeMX 上进行任何特殊配置设置以使用 EEPROM 仿真吗?
microcontroller - mbed 编译器:如何在 Nucleo 评估板上以编程方式读写闪存 STM32F091RC
我需要将配置参数写入和读取回 STM32F091RC 闪存。
读写函数/方法是什么?
c++ - 为 STM32F0 LCD 编写 C++
我正在尝试使用 CoIDE 学习 C++ 中的嵌入式开发。我在分线板上有一个 STM32F0 芯片。我已经完成了一些 LED 教程等。我被困在这段代码上,该代码应该向 LCD 写入一些简单的文本字符串。我正在关注的教程是在eeherald 教程中,我已将代码改编为我的 STM32F0 芯片。我想我已经接近了,但是 LCD 只是停留在初始化模式,所有单元都亮起。屏幕永远不会清除以写入文本。这是我的代码...任何能帮助我指出正确方向的帮助都将不胜感激!
我“认为”问题可能出在数据方向代码的 initGPIO() 中,但我不确定……我尝试了很多不同的东西,但没有运气。
serial-port - 目标板上微机STM32F091RC的串行UART主要是垃圾输出
预计第一行 printf 软件串行输出到 Windows7 PC 是:
main() ************************** 软件启动项目 2016-10-30 x1
实际串行输出(在 TeraTerm 或 PuTTY);
▒▒▒▒()
j**j*j**j*j**j*j**j*j**j*j ▒▒
Ӕ▒Ҕ ▒▒▒▒▒▒▒r01v-q0-30
▒q
从 mbed 或 VisualGDB 到 NUCLEO 评估板,Serial 工作得很好。IE。:
现在,我正在使用 STM32F091RC 将 VisualGDB 运行到实际的目标板上。
IE。:
在 9600,一些字符是正确的,大多数是垃圾。我试过备用目标和电缆,同样的问题。PC 的终端程序(TeraTerm 或 PuTTY)设置为 8,n,1。在 mbed 库中查找;默认配置为 8 个数据,无奇偶校验,1 个停止。
USB/串口转换器电缆为:FTDIChip TTL-232R-RPi(通常用于树莓派)。
stm32 - STM32F0 DMA“输入溢出”
我在 STM32F0 DMA 从 UART 接收数据时遇到问题。我在非循环模式下都使用了 2 个 DMA 通道(用于 rx 和 tx),rx 通道的优先级较低。来自 UART 的数据在空闲线中断中处理,我在其中读取 DMA 接收到的字节数并处理它们。一切正常,直到包中的字节数小于或等于 DMA 缓冲区大小。否则 DMA 会奇怪地关闭,随后的空闲线中断会给我 1、0、0、... DMA 接收字节数。这是代码的一部分,我在其中检查 DMA 缓冲区是否已满,并尝试将 DMA 计数器重置为缓冲区大小:
在第一次“溢出”和 DMA 启用之后,出现 rx 寄存器中的“缓冲区大小 + 1”字节,后来接收到的字节数稳定为零。我做错了什么?
c - 在 STM32F0 上使用 TIM1 进行 PWM 时出错
我试图尽可能地隔离这一点(通过注释掉工作的 TIM3 代码进行比较)。我已经让 PWM 在 TIM3 上正常工作,但在 TIM1 上没有看到任何东西。原来,这个问题是在一些TIM_OCInitStructure的评论中指出的。电话,但我都在里面,但仍然看不到任何信号。有没有人看到代码中缺少任何其他内容?
////////////////原始问题///////////////
有人看到这段代码有问题吗?
问题在于
错误是
assert_param() 失败:文件“../system/src/stm32f0-stdperiph/stm32f0xx_tim.c”,第 811 行。查找该行是:
TIM_OC1Init() 函数似乎适用于 TIM3,但不适用于 TIM1。我在这个论坛上看到其他人将 TIM_OC1Init() 用于 TIM1,所以我不确定我的问题是什么。这不是我设置ch.1的方式吗?
c - 将全局声明的缓冲区写入 FLASH 时出现 STM32 Hardfault 异常
我正在尝试为 STM32F030x8 编写引导加载程序应用程序。我通过UART将bin文件写入控制器。当 UART RDR 寄存器上存在数据时,我将其放入全局声明的 1Kb 缓冲区中。每次缓冲区已满时,我都会尝试将其写入 FLASH。写入 FLASH 后,应用程序向 PC 软件发出确认,并准备好接受新的 1Kb 块。因此,在访问写入 FLASH 时不会写入缓冲区。当我尝试将全局缓冲区写入 FLASH 时,应用程序进入 Hardfault 处理程序。
但是当我使用 memcpy() 将缓冲区复制到本地声明的 1Kb 缓冲区中,并尝试将该缓冲区写入 FLASH 时,它没有任何问题。
为什么我不能只将全局声明的缓冲区权限写入 FLASH?为什么本地声明的buffer写入FLASH没有问题?
提前致谢!
编辑:
当此函数进入 for 循环时,似乎会发生 Hardfault。
当发生硬故障异常时,LR 寄存器为 0xFFFFFFF9,SP = 0x200011E8
奇怪的是,在 for 循环中,没有对缓冲区的任何引用,因此实际上从未访问过它。但是当缓冲区被复制到本地时它确实有效。我在这里想念什么?
编辑2:
全局声明的缓冲区:
在缓冲区收到事件: