如何通过USART连接两张带LCD的STM32F4-Discovery卡

问题描述 投票:0回答:2

我目前正在学校做一个项目,我和我的团队应该制作游戏“炸弹人”并在 STM32F4-Discovery 卡(其上有基于 ARM 的处理器)上执行它。游戏显示在连接到发现卡的小型液晶触摸屏上,触摸屏也用作游戏的控制器。游戏现在可以玩,一切都正确执行,你可以单独对抗三个人工智能角色。游戏和所有硬件启动完全用 C 编写。

现在我们决定要在游戏中实现多人游戏,这意味着我们将有两种设置:STM32F4-Discovery 卡和 LCD 触摸屏。每个设置控制同一游戏地图上的一名玩家。我们应该通过 USART 连接这两个设置。

我的问题是,如何让这两张STM32F4-Discovery卡通信并显示相同的游戏地图?我尝试用谷歌搜索它但没有成功,所以我现在在 stackoverflow 上向您求助。

编辑:我根据 Unwind 提供的信息添加一个后续问题。

后续问题:

我们有很多预先编写的文件,可以用来启动我们的硬件等。其中一个文件称为 STM32F4xx-usart.c。它包含一个功能:

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct).

USART_InitStruct 看起来像这样(它是在我们得到的代码中预定义的):

typedef struct{
uint32_t USART_BaudRate;
uint16_t USART_WordLength;
uint16_t USART_StopBits;
uint16_t USART_Parity;
uint16_t USART_Mode;
uint16_t USART_HardwareFlowControl;
} USART_InitTypeDef;

我猜我将不得不使用这个结构来形成两个新的结构,以保存我的主卡和从卡的值。

我的问题是:如何编写这两个结构体以便将其传递给 init_USART() 函数? 您不需要提供任何值,只需提供语法。

我试过了

struct USART1_initStruct{
    uint32_t USART_BaudRate;
    uint16_t USART_WordLength;
    uint16_t USART_StopBits;
    uint16_t USART_Parity ;
    uint16_t USART_Mode ;
    uint16_t USART_HardwareFlowControl;
} U1IS = {9600, USART_WordLength_9b, USART_StopBits_1, USART_Parity_No, USART_Mode_Tx, USART_HardwareFlowControl_None};

然后将此结构传递给函数,但我收到错误:

error: expected expression before 'struct'
c arm lcd stm32f4discovery usart
2个回答
0
投票

将其中一块板设为主板,另一块板设为从板。

主机(或服务器)的工作是运行游戏并决定发生什么。从机(或客户端)的作用是向本地玩家显示世界视图,向主机发送输入并接收游戏对象的更新。

您还可以将其视为两个从站,连接到一个主站,该主站也恰好与其中一个从站运行在同一台物理机器上。

这不会很简单,特别是因为听起来好像你从一开始就没有为此设计,这通常会有所帮助。


0
投票
USART_InitTypeDef x;

x.BaudRate = 9600;
x.WordLength = USART_WordLength_9b;

... etc
USART_Init(USART1,&x);

查看 STM 提供的任何示例代码。

© www.soinside.com 2019 - 2024. All rights reserved.