|
|
|
@ -63,13 +63,11 @@ typedef struct {
|
|
|
|
|
|
|
|
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
|
I2C_HandleTypeDef hi2c1;
|
|
|
|
I2C_HandleTypeDef hi2c1;
|
|
|
|
DMA_HandleTypeDef hdma_i2c1_tx;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TIM_HandleTypeDef htim2;
|
|
|
|
TIM_HandleTypeDef htim2;
|
|
|
|
TIM_HandleTypeDef htim3;
|
|
|
|
TIM_HandleTypeDef htim3;
|
|
|
|
|
|
|
|
|
|
|
|
UART_HandleTypeDef huart1;
|
|
|
|
UART_HandleTypeDef huart1;
|
|
|
|
DMA_HandleTypeDef hdma_usart1_tx;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* USER CODE BEGIN PV */
|
|
|
|
/* USER CODE BEGIN PV */
|
|
|
|
|
|
|
|
|
|
|
|
@ -125,7 +123,6 @@ extern uint32_t super_mario_len;
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
void SystemClock_Config(void);
|
|
|
|
void SystemClock_Config(void);
|
|
|
|
static void MX_GPIO_Init(void);
|
|
|
|
static void MX_GPIO_Init(void);
|
|
|
|
static void MX_DMA_Init(void);
|
|
|
|
|
|
|
|
static void MX_I2C1_Init(void);
|
|
|
|
static void MX_I2C1_Init(void);
|
|
|
|
static void MX_TIM2_Init(void);
|
|
|
|
static void MX_TIM2_Init(void);
|
|
|
|
static void MX_TIM3_Init(void);
|
|
|
|
static void MX_TIM3_Init(void);
|
|
|
|
@ -168,13 +165,11 @@ int main(void)
|
|
|
|
|
|
|
|
|
|
|
|
/* Initialize all configured peripherals */
|
|
|
|
/* Initialize all configured peripherals */
|
|
|
|
MX_GPIO_Init();
|
|
|
|
MX_GPIO_Init();
|
|
|
|
MX_DMA_Init();
|
|
|
|
|
|
|
|
MX_I2C1_Init();
|
|
|
|
MX_I2C1_Init();
|
|
|
|
MX_TIM2_Init();
|
|
|
|
MX_TIM2_Init();
|
|
|
|
MX_TIM3_Init();
|
|
|
|
MX_TIM3_Init();
|
|
|
|
MX_USART1_UART_Init();
|
|
|
|
MX_USART1_UART_Init();
|
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
|
// LCD_Init(&hlcd);
|
|
|
|
|
|
|
|
InitGameEngine();
|
|
|
|
InitGameEngine();
|
|
|
|
|
|
|
|
|
|
|
|
xTaskCreate(vTaskPlayerSetup, "Player", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
|
|
|
|
xTaskCreate(vTaskPlayerSetup, "Player", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
|
|
|
|
@ -395,24 +390,6 @@ static void MX_USART1_UART_Init(void)
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Enable DMA controller clock
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
static void MX_DMA_Init(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* DMA controller clock enable */
|
|
|
|
|
|
|
|
__HAL_RCC_DMA1_CLK_ENABLE();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* DMA interrupt init */
|
|
|
|
|
|
|
|
/* DMA1_Channel4_IRQn interrupt configuration */
|
|
|
|
|
|
|
|
HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
|
|
|
|
|
|
|
|
HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
|
|
|
|
|
|
|
|
/* DMA1_Channel6_IRQn interrupt configuration */
|
|
|
|
|
|
|
|
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0);
|
|
|
|
|
|
|
|
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @brief GPIO Initialization Function
|
|
|
|
* @brief GPIO Initialization Function
|
|
|
|
* @param None
|
|
|
|
* @param None
|
|
|
|
@ -477,6 +454,7 @@ static void MX_GPIO_Init(void)
|
|
|
|
|
|
|
|
|
|
|
|
void vTaskPlayerSetup(void *parameter)
|
|
|
|
void vTaskPlayerSetup(void *parameter)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
//LCD_Init(&hlcd);
|
|
|
|
while (1)
|
|
|
|
while (1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (plusButton->pressed)
|
|
|
|
if (plusButton->pressed)
|
|
|
|
@ -630,14 +608,15 @@ void vTaskButtonPoll(void *parameter) {
|
|
|
|
for(int i = 0; i<BUTTON_COUNT; i++)
|
|
|
|
for(int i = 0; i<BUTTON_COUNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool state = HAL_GPIO_ReadPin(buttons[i].port, buttons[i].pin);
|
|
|
|
bool state = HAL_GPIO_ReadPin(buttons[i].port, buttons[i].pin);
|
|
|
|
|
|
|
|
vTaskDelay(1);
|
|
|
|
if (state && !buttons[i].temp)
|
|
|
|
if (state && !buttons[i].temp)
|
|
|
|
buttons[i].temp = true;
|
|
|
|
buttons[i].temp = true;
|
|
|
|
else if (state && buttons[i].temp)
|
|
|
|
else if (state && buttons[i].temp)
|
|
|
|
buttons[i].pressed = true;
|
|
|
|
buttons[i].pressed = true;
|
|
|
|
else if (!state && buttons[i].pressed)
|
|
|
|
|
|
|
|
buttons[i].temp = false;
|
|
|
|
|
|
|
|
else if (!state && !buttons[i].temp)
|
|
|
|
else if (!state && !buttons[i].temp)
|
|
|
|
buttons[i].pressed = false;
|
|
|
|
buttons[i].pressed = false;
|
|
|
|
|
|
|
|
else if (!state && buttons[i].pressed)
|
|
|
|
|
|
|
|
buttons[i].temp = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vTaskDelay(50);
|
|
|
|
vTaskDelay(50);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|