如何通过USART将两个STM32F4-Discovery卡与LCD连接

时间:2014-10-06 13:34:24

标签: c arm discovery lcd usart

我目前正在学校做一个项目,在那里我和我的团队应该制作游戏" Bomberman"并在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'

2 个答案:

答案 0 :(得分:0)

让其中一块板成为主板,另一板成为从板。

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

您还可以将其视为两个从属设备,连接到一个主设备,该主设备也恰好在与其中一个从设备相同的物理计算机上运行。

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

答案 1 :(得分:0)

USART_InitTypeDef x;

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

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

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