Serial port 带HAL库的STM32F4发现(STM32F4296)上的RS232(UART)?

Serial port 带HAL库的STM32F4发现(STM32F4296)上的RS232(UART)?,serial-port,embedded,uart,stm32f4discovery,Serial Port,Embedded,Uart,Stm32f4discovery,背景 这是我的一些背景,这样你的人就可以知道我有或没有什么相关的知识。我完全是这种嵌入式系统的新手。我对电子一无所知,我是一个纯软件的人 我对嵌入式系统的唯一体验是Raspberry Pi,它与STM32F4 Discovery有很大不同 我可以通过使用Raspberry Pi上的标准Linux C库实现UART读/写编程,该库通过带有电压转换器IC的USB-to-RS232适配器连接到PC 我的设备和开发环境 带有STM32F429ZIT6单片机的STM32F429I-DISCO板 USB-

背景

这是我的一些背景,这样你的人就可以知道我有或没有什么相关的知识。我完全是这种嵌入式系统的新手。我对电子一无所知,我是一个纯软件的人

我对嵌入式系统的唯一体验是Raspberry Pi,它与STM32F4 Discovery有很大不同

我可以通过使用Raspberry Pi上的标准Linux C库实现UART读/写编程,该库通过带有电压转换器IC的USB-to-RS232适配器连接到PC

我的设备和开发环境

  • 带有STM32F429ZIT6单片机的STM32F429I-DISCO板
  • USB-to-RS232电缆和电压转换器IC在Raspberry Pi上运行良好
  • Keil uVision 5 IDE
我想实现的目标

我想在STM32F429发现板上实现一个编程,可以向PC发送/接收消息(例如,向PC发送字符串。当从PC收到字符串时,点亮板上的LED)

我现在所做的

现在我已经设置了Keil uVision IDE,并且可以编译/运行blink LED示例,我还可以编辑该示例以按照我希望的方式控制LED。(例如,按下用户按钮时LED点亮,松开按钮时LED熄灭)

LED部分基本完成了,缺少的部分是如何使用RS232电缆与STM32F4发现板通信

我的问题

Update your Cube and HAL libraries to the latest
Generate a cube project
Setup all your peripherals in the dialogs
Generate code
Compile
Add your application
Test  & Debug
Optimise
Release
  • 首先,我想知道我是否正确理解这个电路板的引脚定义。根据这一点,我应该将DB9上的TX引脚连接到PD2(UART5_RX),将DB9上的RX引脚连接到PC12(UART5_TX),将DB9上的VCC引脚连接到3.3V,将DB9上的GND连接到GND。这个连接正确吗

  • 有没有关于如何在最新版本的Keil uVision的新HAL库上使用UART的示例代码?我在网上搜索过,但大多数示例代码或正在使用一个名为
    RCC_AHB1PeriphClockCmd
    的函数,该函数似乎不存在于Keil uVision提供的新HAL库中

  • 更新

  • 我的USB到串行适配器是
    067b:2303 Prolific Technology,Inc.PL2303串行端口
    ,并连接了一个电平移位器IC。看起来像这样:

  • 当连接到Raspberry Pi时,我遵循了这一点,因此IC上的VCC/GND连接到Raspberry Pi上的3.3V/GND,我不确定是否需要

  • 所谓“HAL”库,我指的是这个
    stm32f4xx\u HAL\u usart.c
    文件,根据评论中的许可声明,它似乎来自STMicroelectronics。虽然这个文件中有一些说明,但我还是很难弄清楚如何使用这个驱动程序。例如,我无法区分
    启用USARTx接口时钟
    启用USART GPIOs的时钟
    之间的区别,我不知道如何实现这些功能。因此,如果有一个示例代码,这将是一个很大的帮助,因为我可以将其与这些指令进行比较

  • 我已将推送到以下github地址

    代码很简单,回答了这个问题,主要是由STM多维数据集生成的。.ioc文件也可供您修改

    有许多其他外围设备可以使用,但未经测试,包括

    USB VCport 
    Timers set for RC hobby servos, just change pulse width 500-1500
    ADC  in DMA mode
    SPI  for flash etc
    I2C  for port expansion or whatever
    
    我也对OP感到沮丧,因为它花了很多天、几个星期、几个月的时间在新旧图书馆中努力工作最后2016年,ST似乎有了一些曙光,我可以继续为这些伟大的董事会开发真正的应用程序

    事实上,在完成这项任务时,我必须在多维数据集正常工作之前重新安装多维数据集及其所有库。这可能会给其他人带来痛苦

    我将在这个“模板”中添加LCD和触摸屏来制作一个很棒的小“droidlet”

    我通常将蓝牙模块连接到其中一个UART上,并在那里进行调试

    < Andy Brown >对于一些STS有一些很棒的C++库。它们似乎基于stdperipherallibs,需要进行更新,以便我们可以通过Cube和HAL在新(和旧)设备上使用它们。作为一个社区,我们可以更有效地做到这一点。有什么想法和建议吗

    玩得开心


    规范解

    Update your Cube and HAL libraries to the latest
    Generate a cube project
    Setup all your peripherals in the dialogs
    Generate code
    Compile
    Add your application
    Test  & Debug
    Optimise
    Release
    
    您只需注意不同系列上的类似外围设备存在不一致,例如。 F0上的ADC不同于F1和F4。 F3可能具有16位ADC。
    除了RTFM,您可能正在正确地执行所有操作。(请阅读手册中的详细说明)

    除非您想对抗UART,否则最好实现使用标准USB电缆的虚拟Comport演示。让ST成为设备

    获取STCube的副本,在projects/peripherals目录中查找USB和virtualcomport。HAL库是相同的,也有此代码

    在任何发现板上工作时,启动STM32 Cube()的副本,并在其中创建配置。它向您展示了什么是使用的,什么是免费的,这是一个很棒的工具,它将设置USB作为奖励

    然后使用代码生成器为KEIL项目创建一个框架。编译、运行并添加应用程序代码:-)

    你可能想看看这里,他们有一个很棒的IDE,甚至更好的F429iDisco示例,或者更多的示例。这些IDE没有代码大小限制,您在使用此设备上的LCD、触摸等时会遇到这种情况


    答案的其余部分

    不幸的是,STM必须将这一发现中的大部分引脚分配给板上的LCD、触摸屏和内存芯片。剩下的异步功能非常少——他们可能认为USB可以

    Q1)-按照通常的标记方式,您需要使用c进行“交叉”