0

我目前正在学校做一个项目,我和我的团队应该制作游戏“炸弹人”并在 STM32F4-Discovery 卡(上面有一个基于 ARM 的处理器)上执行它。游戏显示在连接到发现卡的小型 LCD 触摸屏上,触摸屏也用作游戏的控制器。游戏现在可以玩了,一切都正确执行,你可以独自对抗三个 AI 角色。游戏和所有硬件初始化完全用 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'
4

2 回答 2

0

使其中一个板为主,另一个为从。

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

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

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

于 2014-10-06T13:39:04.863 回答
0
USART_InitTypeDef x;

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

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

Look at any of the example code provided by STM.

于 2014-10-06T18:09:58.633 回答