【发布时间】:2016-04-28 13:18:59
【问题描述】:
背景
这是我的一些背景,以便您的人可以知道我拥有或不拥有的相关知识。我完全是这种嵌入式系统的新手。而且我对电子学一无所知,我是一个纯粹的软件人。
我唯一的嵌入式系统经验是树莓派,和STM32F4 Discovery有很大的不同。
我可以通过在 Raspberry Pi 上使用标准 Linux C 库来实现 UART 读/写编程,该库通过带有电压转换器 IC 的 USB-to-RS232 适配器连接到 PC。
我的设备和开发环境
- 带有 STM32F429ZIT6 MCU 的 STM32F429I-DISCO 板
- USB 转 RS232 电缆和电压转换器 IC,在 Raspberry Pi 上运行良好。
- Keil uVision 5 IDE。
我想要达到的目标
我想在 STM32F429 Discovery 板上实现一个可以向/从 PC 发送/接收消息的编程。 (例如,发送一个字符串到 PC。当收到来自 PC 的字符串时,点亮板上的 LED)
我现在做了什么
现在我已经设置了我的 Keil uVision IDE,并且可以编译/运行闪烁 LED 示例,我还可以编辑该示例以按照我想要的方式控制 LED。 (例如,按下用户按钮时 LED 亮,松开按钮时 LED 熄灭)
所以 LED 部分已经完成了,缺少的部分是如何使用 RS232 电缆与 STM32F4 Discovery 板通信。
我的问题
首先,我想知道我是否正确理解了此板的 PIN 定义。根据datasheet,我应该将 DB9 上的 TX 引脚连接到 PD2(UART5_RX),DB9 上的 RX 引脚连接到 PC12(UART5_TX),DB9 上的 VCC 引脚连接到 3.3V,DB9 上的 GND 连接到 GND。这种连接是否正确?
是否有任何关于如何在来自最新版本的 Keil uVision 的新 HAL 库上使用 UART 的示例代码?我在网上搜索过,但大多数示例代码或tutorial 都使用了一个名为
RCC_AHB1PeriphClockCmd的函数,该函数似乎不存在于来自 Keil uVision 的新 HAL 库中。
更新
我的 USB 转串口适配器是
067b:2303 Prolific Technology, Inc. PL2303 Serial Port,并附有电平转换器 IC。看起来像这样:连接树莓派时,我一直关注这个instruction,所以IC上的VCC / GND连接到树莓派上的3.3V / GND,我不确定是否需要这样做.
通过“HAL”库,我的意思是这个
stm32f4xx_hal_usart.c文件,根据 cmets 中的许可证声明,它似乎来自 STMicroelectronics。虽然这个文件中有一些说明,但我仍然很难弄清楚如何使用这个驱动程序。比如我分不清Enable USARTx interface clock和Enable the clock for USART GPIOs的区别,也不知道怎么实现这些功能。因此,如果有示例代码,那将是一个很大的帮助,因为我可以将其与这些说明进行比较。
【问题讨论】:
-
你可以只走裸机路线,通常就像尝试让一些库工作一样快速和容易github.com/dwelch67/stm32_samples我没有那个确切的电路板,但 stm32 外围设备在芯片上的相似之处多于不同.
-
为什么涉及5V?根本不需要,树莓派也不需要。你有什么样的 USB 电缆 RS232 电压水平会破坏这些芯片中的任何一个,你永远不能使用 RS232。或者您是否错误地使用术语 RS232 来暗示串行协议而不是电压标准。我使用基于 usb ftdi 的分线器和提供 3.3v UART 接口的电缆,只需要连接 rx 和 tx,真的想使用同一台计算机来避免浮动接地,而且你真的不需要接地。如果你觉得有需要的话,rx、tx 和接地。
-
如果您想使用他们的库,请联系 st 技术支持和/或浏览代码并弄清楚。
-
yes UART5_TX 使用 PC12,复用功能 8 和 UART5_RX 使用 PD2 复用功能 8。还有其他 uart。 uart5基地址为0x40005000 GPIOC基地址为0x40020800,GPIOD基地址为0x40020C00。需要设置 RCC_APB1ENR 位 20 以启用 uart5,RCC_AHB1ENR 位 2 和 3 启用 GPIOC 和 D 逻辑。 rcc基地址是0x40023800等等……
-
这个库是为 Keil 还是为 gnu 或其他编写的?这个问题是关于我想为 HAL 使用不同的编译器还是我不知道如何使用 HAL 的问题。
标签: serial-port embedded uart stm32f4discovery