2014-10-06 5 views
0

현재 나와 내 그룹이 "Bomberman"게임을 만들고 STM32F4 디스커버리 카드에서 실행하는 프로젝트를 학교에서하고 있습니다. ARM 기반 프로세서). 게임은 발견 카드에 연결된 작은 LCD 터치 스크린에 표시되며, 터치 스크린은 게임용 컨트롤러로도 사용됩니다. 게임은 현재 재생 가능하며 모든 것이 올바르게 실행되며 3 개의 AI 문자에 대해 혼자 플레이 할 수 있습니다. 게임 및 모든 하드웨어 시작은 모두 C로 작성됩니다.USART를 통해 두 개의 STM32F4 디스커버리 카드를 LCD에 연결하는 방법

이제 게임에서 멀티 플레이어를 구현하기로 결정했습니다. 즉, STM32F4 디스커버리 카드와 LCD 터치 스크린의 두 가지 설정이 있음을 의미합니다. 각 설정은 동일한 게임 맵에서 한 명의 플레이어를 제어합니다. USART를 통해 두 가지 설정을 연결해야합니다.

제 질문은이 두 STM32F4 디스커버리 카드를 어떻게 통신하고 동일한 게임 맵을 표시합니까? 난 이제 stackoverflow에서 당신에게 차례 그래서 나는 어떤 성공없이 구글하려고했습니다.

편집 : Unwind에서 제공 한 정보에 비추어 추가 질문을 추가하고 있습니다.

후속 질문 :

우리는 우리가 우리의 하드웨어 등 이러한 파일 중 하나 STM32F4xx - usart.c이라고를 시작하는 데 사용할 수있는 미리 작성된 파일을 많이 얻었다. USART_InitStruct은 다음과 같습니다

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* 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' 
+0

이 질문은 주제와 아무 관련이 없습니다. c로 struct를 초기화하는 방법을 묻는 것입니다. –

답변

0

이 보드 중 하나는 마스터, 다른 슬레이브를 확인합니다.

마스터 (또는 서버)의 임무는 게임을 실행하고 어떤 일이 일어나는지 결정하는 것입니다. 노예 (또는 클라이언트)의 역할은 월드 플레이를 로컬 플레이어에 표시하고 마스터에 입력을 보내고 게임 개체에 대한 업데이트를 수신하는 것입니다.

슬레이브 중 하나와 동일한 실제 시스템에서 실행되는 단일 마스터에 연결된 두 개의 슬레이브로 볼 수도 있습니다.

대단히 간단하지는 않습니다. 특히 처음부터 도움이되는 디자인을하지 않은 것처럼 들리므로 매우 간단합니다.

+0

빠른 응답을 보내 주셔서 감사합니다. – Flux

0
USART_InitTypeDef x; 

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

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

STM에서 제공하는 예제 코드를 살펴보십시오.

+0

친구도이 제안을했는데, 더 "깔끔한"방법이 있다고 생각했습니다. 답변 해 주셔서 감사 드리며, 저는이 방법을 고수 할 것입니다. 귀하와 언 와인드의 답변을 수락 한 것으로 표시하고 싶지만 한가지 만 선택할 수 있습니다. – Flux

+0

실제로 이것은 (C에서) 가장 깔끔한 방법입니다. "짧다"는 뜻이라면, 구조체를 덜 장황하게 초기화하는 방법이 있습니다. 그러나 이것은 자체 문서화입니다. 단어 길이가 9 비트임을 즉시 알 수 있습니다. 'x.WordLength = 9600'을 썼다면 즉시 잘못된 정보를 볼 수 있습니다. 원래 게시 할 때이를 보는 것이 훨씬 어렵습니다. –