diff options
author | lonkaars <loek@pipeframe.xyz> | 2023-03-10 12:26:33 +0100 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2023-03-10 12:26:33 +0100 |
commit | c6563a099ce05d9291a0c27fdbab3ffd9efddc48 (patch) | |
tree | 82504aef99696e69ee425be2154e084e54e627ca | |
parent | 5253459673bb006ef1313dfd2dfeea56f6d2ebaa (diff) |
initial merge of #26
-rw-r--r-- | GameLogic/stm32/main.c | 558 | ||||
-rw-r--r-- | GameLogic/stm32/main.h | 69 | ||||
-rw-r--r-- | GameLogic/stm32/stm32f0xx_hal_conf.h | 322 | ||||
-rw-r--r-- | GameLogic/stm32/stm32f0xx_hal_msp.c | 190 | ||||
-rw-r--r-- | GameLogic/stm32/stm32f0xx_it.c | 145 | ||||
-rw-r--r-- | GameLogic/stm32/stm32f0xx_it.h | 62 | ||||
-rw-r--r-- | GameLogic/stm32/syscalls.c | 176 | ||||
-rw-r--r-- | GameLogic/stm32/sysmem.c | 79 | ||||
-rw-r--r-- | GameLogic/stm32/system_stm32f0xx.c | 247 | ||||
-rw-r--r-- | GameLogic/vhdl/cnts.xdc | 72 | ||||
-rw-r--r-- | basys3/basys3.srcs/io.xdc (renamed from GameLogic/vhdl/constraints.txt) | 0 | ||||
-rw-r--r-- | basys3/basys3.srcs/top.vhd (renamed from GameLogic/vhdl/spiSlave.vhd) | 0 | ||||
-rw-r--r-- | pinout.md (renamed from GameLogic/stm32/stm32Design.md) | 0 | ||||
-rw-r--r-- | src/ds.c | 15 | ||||
-rw-r--r-- | src/ds.mk | 3 | ||||
-rw-r--r-- | src/main.c | 247 | ||||
-rw-r--r-- | src/ppu/stm.c | 4 | ||||
-rw-r--r-- | src/stm32.mk | 30 | ||||
-rw-r--r-- | src/stm32/setup.c | 197 | ||||
-rw-r--r-- | src/stm32/setup.h | 24 | ||||
-rw-r--r-- | src/stm32/stm32f0xx_hal_conf.h | 16 |
21 files changed, 506 insertions, 1950 deletions
diff --git a/GameLogic/stm32/main.c b/GameLogic/stm32/main.c deleted file mode 100644 index 666992f..0000000 --- a/GameLogic/stm32/main.c +++ /dev/null @@ -1,558 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file : main.c
- * @brief : Main program body
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-#include <stdbool.h>
-/* USER CODE END Includes */
-
-/* Private typedef -----------------------------------------------------------*/
-/* USER CODE BEGIN PTD */
-
-/* USER CODE END PTD */
-
-/* Private define ------------------------------------------------------------*/
-/* USER CODE BEGIN PD */
-/* USER CODE END PD */
-
-/* Private macro -------------------------------------------------------------*/
-/* USER CODE BEGIN PM */
-
-/* USER CODE END PM */
-
-/* Private variables ---------------------------------------------------------*/
-SPI_HandleTypeDef hspi1;
-
-TIM_HandleTypeDef htim3;
-
-/* USER CODE BEGIN PV */
-
-static int8_t buttonDPAD[] = {0,0,0,0}; //1left 2right 3down 4up
-
-struct playerData{
- uint16_t posX;
- uint16_t posY;
- uint8_t radius;
- uint8_t rotation; //45 degrees steps 0 == right 2 == down 4 == left 6 == up
- uint8_t directionX; //direction where its looking at in case no input;
- int8_t speed; //10 default L/R MODifier
- bool inAir;
-
-};
-
-struct playerData player1;
-
-uint8_t tileMap[30][40] =
- {
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 },
- {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }
-
-
-
- };
-
-/* USER CODE END PV */
-
-/* Private function prototypes -----------------------------------------------*/
-void SystemClock_Config(void);
-static void MX_GPIO_Init(void);
-static void MX_SPI1_Init(void);
-static void MX_TIM3_Init(void);
-/* USER CODE BEGIN PFP */
-void buttonRead();
-void playerMovement();
-void sendData(uint8_t, uint16_t);
-/* USER CODE END PFP */
-
-/* Private user code ---------------------------------------------------------*/
-/* USER CODE BEGIN 0 */
-
-
-/* USER CODE END 0 */
-
-/**
- * @brief The application entry point.
- * @retval int
- */
-int main(void)
-{
- /* USER CODE BEGIN 1 */
-
- /* USER CODE END 1 */
-
- /* MCU Configuration--------------------------------------------------------*/
-
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
-
- /* USER CODE BEGIN Init */
-
- /* USER CODE END Init */
-
- /* Configure the system clock */
- SystemClock_Config();
-
- /* USER CODE BEGIN SysInit */
-
- /* USER CODE END SysInit */
-
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_SPI1_Init();
- MX_TIM3_Init();
- /* USER CODE BEGIN 2 */
- // correct byte for led control
- uint16_t pos_x; //0b0000 0001 0011 0110
- uint16_t pos_y;
-
- uint8_t left = 0;
- uint8_t right = 0;
- uint8_t up = 0;
- uint8_t down = 0;
-
-
-
- uint8_t pos_x_bit[2];
- uint8_t pos_y_bit[2];
- uint8_t data_send[3];
-
- int tileX;
- int tileY;
-// struct playerData player1;
- //int buttons[] = {GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_8}; // 1 left // 2 right // 3 up // 4 down
-
-/// init struct
- player1.posX = 31000; //0b0000 0001 0011 0110
- player1.posY = 21000;
- player1.radius = 8;
- player1.speed = 1;
- player1.directionX = 1;
- player1.rotation = 8;
- player1.inAir = false;
- /* USER CODE END 2 */
-
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
-
-
-
-
- buttonRead();
- playerMovement();
-
-
- // send data via SPI //adjust map size
- pos_x = player1.posX / 100;
- pos_y = player1.posY / 100;
-
- sendData(0b01000000,pos_x);
- sendData(0b00000000,pos_y);
-
-
- /* USER CODE END WHILE */
-
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
-}
-
-/**
- * @brief System Clock Configuration
- * @retval None
- */
-void SystemClock_Config(void)
-{
- RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
-
- /** Initializes the RCC Oscillators according to the specified parameters
- * in the RCC_OscInitTypeDef structure.
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
- RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- {
- Error_Handler();
- }
-
- /** Initializes the CPU, AHB and APB buses clocks
- */
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
- |RCC_CLOCKTYPE_PCLK1;
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
-
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
- {
- Error_Handler();
- }
-}
-
-/**
- * @brief SPI1 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_SPI1_Init(void)
-{
-
- /* USER CODE BEGIN SPI1_Init 0 */
-
- /* USER CODE END SPI1_Init 0 */
-
- /* USER CODE BEGIN SPI1_Init 1 */
-
- /* USER CODE END SPI1_Init 1 */
- /* SPI1 parameter configuration*/
- hspi1.Instance = SPI1;
- hspi1.Init.Mode = SPI_MODE_MASTER;
- hspi1.Init.Direction = SPI_DIRECTION_1LINE;
- hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
- hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
- hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
- hspi1.Init.NSS = SPI_NSS_SOFT;
- hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
- hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
- hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
- hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
- hspi1.Init.CRCPolynomial = 7;
- hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
- hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
- if (HAL_SPI_Init(&hspi1) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN SPI1_Init 2 */
-
- /* USER CODE END SPI1_Init 2 */
-
-}
-
-/**
- * @brief TIM3 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_TIM3_Init(void)
-{
-
- /* USER CODE BEGIN TIM3_Init 0 */
-
- /* USER CODE END TIM3_Init 0 */
-
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
-
- /* USER CODE BEGIN TIM3_Init 1 */
-
- /* USER CODE END TIM3_Init 1 */
- htim3.Instance = TIM3;
- htim3.Init.Prescaler = 7999;
- htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim3.Init.Period = 65535;
- htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM3_Init 2 */
-
- /* USER CODE END TIM3_Init 2 */
-
-}
-
-/**
- * @brief GPIO Initialization Function
- * @param None
- * @retval None
- */
-static void MX_GPIO_Init(void)
-{
- GPIO_InitTypeDef GPIO_InitStruct = {0};
-
- /* GPIO Ports Clock Enable */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
-
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
-
- /*Configure GPIO pin : PA9 */
- GPIO_InitStruct.Pin = GPIO_PIN_9;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- /*Configure GPIO pins : PB4 PB5 PB6 PB8 */
- GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_8;
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- GPIO_InitStruct.Pull = GPIO_PULLDOWN;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
-}
-
-/* USER CODE BEGIN 4 */
-void sendData(uint8_t address, uint16_t data)
-{
- uint8_t bitData[3];
- bitData[2] = data & 0xff;
- bitData[1] = (data >> 8);
- bitData[0] = address; // first byte is address
-
-
-
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
- HAL_SPI_Transmit(&hspi1, bitData, 3, 100); //2*8 bit data
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
-
-}
-
-
-/*
-#define GPIO_PIN_0 ((uint16_t)0x0001U) Pin 0 selected
-#define GPIO_PIN_1 ((uint16_t)0x0002U) Pin 1 selected
-#define GPIO_PIN_2 ((uint16_t)0x0004U) Pin 2 selected
-#define GPIO_PIN_3 ((uint16_t)0x0008U) Pin 3 selected
-#define GPIO_PIN_4 ((uint16_t)0x0010U) Pin 4 selected
-#define GPIO_PIN_5 ((uint16_t)0x0020U) Pin 5 selected
-#define GPIO_PIN_6 ((uint16_t)0x0040U) Pin 6 selected
-#define GPIO_PIN_7 ((uint16_t)0x0080U) Pin 7 selected
-#define GPIO_PIN_8 ((uint16_t)0x0100U) Pin 8 selected
-#define GPIO_PIN_9 ((uint16_t)0x0200U) Pin 9 selected
-#define GPIO_PIN_10 ((uint16_t)0x0400U) Pin 10 selected
-#define GPIO_PIN_11 ((uint16_t)0x0800U) Pin 11 selected
-#define GPIO_PIN_12 ((uint16_t)0x1000U) Pin 12 selected
-#define GPIO_PIN_13 ((uint16_t)0x2000U) Pin 13 selected
-#define GPIO_PIN_14 ((uint16_t)0x4000U) Pin 14 selected
-#define GPIO_PIN_15 ((uint16_t)0x8000U) Pin 15 selected
-#define GPIO_PIN_All ((uint16_t)0xFFFFU) All pins selected
-*/
-
-void buttonRead()
-{
- //int buttons[] = {GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_8}; // 1 left // 2 right // 3 down // 4 up 8-6-4-5
- uint16_t buttons[] = {0x0100U,0x0040U,0x0010U,0x0020U}; // 1 left // 2 right // 3 down // 4 up
-
- for(int i = 0; i < 4; i++)
- {
- if(HAL_GPIO_ReadPin(GPIOB, buttons[i]) == 1)
- {
- if((i+2) % 2 == 0)
- {
- buttonDPAD[i] = 1;
- }
- else
- {
- buttonDPAD[i] = -1;
- }
- }
- else
- {
- buttonDPAD[i] = 0;
- }
- }
-}
-
-void playerMovement()
-{
-
- int8_t directionX = 0; // -1 = L || 1 == R
- int8_t directionY = 0; // -1 = D || 1 == U
-
- uint8_t i,j;
- uint8_t rotation = 0; // 0-7
- //temp var for testing
-
-
-
- // direction calc
- directionX = buttonDPAD[0] + buttonDPAD[1];
- directionY = buttonDPAD[2] + buttonDPAD[3];
-
- //rotation calc
- for(i = -1; i < 2;i++)
- {
- for(j = -1; j < 2; j++)
- {
- if(directionX == i)
- {
- if(directionY == j)
- {
- if(i != 0 && j != 0) //dont update when player idle
- {
- player1.rotation = rotation;
- }
- }
- }
- rotation++;
- }
- }
- //direction calc
- if(directionX != 0) //update direction if player is not idle
- {
- player1.directionX = directionX;
- }
- //collision map x-axis
-
- //tile calc including radius and direction for background coliision
-
- uint16_t tileColX;
- uint16_t tileColY = ( player1.posY / 100) / 16; ;
-
- // remaining space between grid and exact
- uint8_t modTileX;
- uint8_t modTileY;
-
-
-
- if(player1.inAir == false && directionX != 0)
- {
- if(directionX == 1)
- {
- tileColX = ( ( player1.posX / 100) + player1.radius ) / 20;
- modTileX = ( player1.posX + ( 100 * player1.radius ) ) % 2000;
- }
- else if(directionX == -1)
- {
- tileColX = ( ( player1.posX / 100) - player1.radius ) / 20;
- modTileX = ( player1.posX - ( 100 * player1.radius ) ) % 2000;
- }
-
- if(tileMap[tileColY][tileColX + directionX] != 1)
- {
- player1.posX = player1.posX + (directionX * player1.speed); // NEW x set
- }
-
- else if(tileMap[tileColY][tileColX + directionX] == 1)
- {
- if(modTileX < player1.speed)
- {
- player1.posX = player1.posX + (directionX * modTileX); // NEW x set
- }
- else
- {
- player1.posX = player1.posX + (directionX * player1.speed); // NEW x set
- }
- }
-
- }
- else //if in air different all borders have to be checked
- {
-
- }
-
- //collision map floor (y-axis) (falling)
- // if falling no jump press (implement)
- /*
- tileColY = (( player1.posY / 100) + player1.radius) / 16; //bottom of player box
- modTileY = 1;
- if(tileMap[tileColY+1][tileColX] != 1) //rework after jumping
- {
- player1.posY = player1.posY + 5 ;// NEW y set //makew var gravity
- //playerStat = falling; //for later use of graphics/sound
- }
- */
- //else if(tileMap[])
-
-
-
-
-
-}
-/* USER CODE END 4 */
-
-/**
- * @brief This function is executed in case of error occurrence.
- * @retval None
- */
-void Error_Handler(void)
-{
- /* USER CODE BEGIN Error_Handler_Debug */
- /* User can add his own implementation to report the HAL error return state */
- __disable_irq();
- while (1)
- {
- }
- /* USER CODE END Error_Handler_Debug */
-}
-
-#ifdef USE_FULL_ASSERT
-/**
- * @brief Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval None
- */
-void assert_failed(uint8_t *file, uint32_t line)
-{
- /* USER CODE BEGIN 6 */
- /* User can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* USER CODE END 6 */
-}
-#endif /* USE_FULL_ASSERT */
diff --git a/GameLogic/stm32/main.h b/GameLogic/stm32/main.h deleted file mode 100644 index 4495405..0000000 --- a/GameLogic/stm32/main.h +++ /dev/null @@ -1,69 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file : main.h
- * @brief : Header for main.c file.
- * This file contains the common defines of the application.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __MAIN_H
-#define __MAIN_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f0xx_hal.h"
-
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-
-/* USER CODE END Includes */
-
-/* Exported types ------------------------------------------------------------*/
-/* USER CODE BEGIN ET */
-
-/* USER CODE END ET */
-
-/* Exported constants --------------------------------------------------------*/
-/* USER CODE BEGIN EC */
-
-/* USER CODE END EC */
-
-/* Exported macro ------------------------------------------------------------*/
-/* USER CODE BEGIN EM */
-
-/* USER CODE END EM */
-
-/* Exported functions prototypes ---------------------------------------------*/
-void Error_Handler(void);
-
-/* USER CODE BEGIN EFP */
-
-/* USER CODE END EFP */
-
-/* Private defines -----------------------------------------------------------*/
-
-/* USER CODE BEGIN Private defines */
-
-/* USER CODE END Private defines */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MAIN_H */
diff --git a/GameLogic/stm32/stm32f0xx_hal_conf.h b/GameLogic/stm32/stm32f0xx_hal_conf.h deleted file mode 100644 index 02785c6..0000000 --- a/GameLogic/stm32/stm32f0xx_hal_conf.h +++ /dev/null @@ -1,322 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file stm32f0xx_hal_conf.h
- * @brief HAL configuration file.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2016 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0xx_HAL_CONF_H
-#define __STM32F0xx_HAL_CONF_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/* ########################## Module Selection ############################## */
-/**
- * @brief This is the list of modules to be used in the HAL driver
- */
-#define HAL_MODULE_ENABLED
- /*#define HAL_ADC_MODULE_ENABLED */
-/*#define HAL_CRYP_MODULE_ENABLED */
-/*#define HAL_CAN_MODULE_ENABLED */
-/*#define HAL_CEC_MODULE_ENABLED */
-/*#define HAL_COMP_MODULE_ENABLED */
-/*#define HAL_CRC_MODULE_ENABLED */
-/*#define HAL_CRYP_MODULE_ENABLED */
-/*#define HAL_TSC_MODULE_ENABLED */
-/*#define HAL_DAC_MODULE_ENABLED */
-/*#define HAL_I2S_MODULE_ENABLED */
-/*#define HAL_IWDG_MODULE_ENABLED */
-/*#define HAL_LCD_MODULE_ENABLED */
-/*#define HAL_LPTIM_MODULE_ENABLED */
-/*#define HAL_RNG_MODULE_ENABLED */
-/*#define HAL_RTC_MODULE_ENABLED */
-#define HAL_SPI_MODULE_ENABLED
-#define HAL_TIM_MODULE_ENABLED
-/*#define HAL_UART_MODULE_ENABLED */
-/*#define HAL_USART_MODULE_ENABLED */
-/*#define HAL_IRDA_MODULE_ENABLED */
-/*#define HAL_SMARTCARD_MODULE_ENABLED */
-/*#define HAL_SMBUS_MODULE_ENABLED */
-/*#define HAL_WWDG_MODULE_ENABLED */
-/*#define HAL_PCD_MODULE_ENABLED */
-#define HAL_CORTEX_MODULE_ENABLED
-#define HAL_DMA_MODULE_ENABLED
-#define HAL_FLASH_MODULE_ENABLED
-#define HAL_GPIO_MODULE_ENABLED
-#define HAL_EXTI_MODULE_ENABLED
-#define HAL_PWR_MODULE_ENABLED
-#define HAL_RCC_MODULE_ENABLED
-#define HAL_I2C_MODULE_ENABLED
-
-/* ########################## HSE/HSI Values adaptation ##################### */
-/**
- * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSE is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSE_VALUE)
- #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
-#endif /* HSE_VALUE */
-
-/**
- * @brief In the following line adjust the External High Speed oscillator (HSE) Startup
- * Timeout value
- */
-#if !defined (HSE_STARTUP_TIMEOUT)
- #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */
-#endif /* HSE_STARTUP_TIMEOUT */
-
-/**
- * @brief Internal High Speed oscillator (HSI) value.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSI is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSI_VALUE)
- #define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/
-#endif /* HSI_VALUE */
-
-/**
- * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup
- * Timeout value
- */
-#if !defined (HSI_STARTUP_TIMEOUT)
- #define HSI_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for HSI start up */
-#endif /* HSI_STARTUP_TIMEOUT */
-
-/**
- * @brief Internal High Speed oscillator for ADC (HSI14) value.
- */
-#if !defined (HSI14_VALUE)
-#define HSI14_VALUE ((uint32_t)14000000) /*!< Value of the Internal High Speed oscillator for ADC in Hz.
- The real value may vary depending on the variations
- in voltage and temperature. */
-#endif /* HSI14_VALUE */
-
-/**
- * @brief Internal High Speed oscillator for USB (HSI48) value.
- */
-#if !defined (HSI48_VALUE)
- #define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal High Speed oscillator for USB in Hz.
- The real value may vary depending on the variations
- in voltage and temperature. */
-#endif /* HSI48_VALUE */
-
-/**
- * @brief Internal Low Speed oscillator (LSI) value.
- */
-#if !defined (LSI_VALUE)
- #define LSI_VALUE ((uint32_t)40000)
-#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
- The real value may vary depending on the variations
- in voltage and temperature. */
-/**
- * @brief External Low Speed oscillator (LSI) value.
- */
-#if !defined (LSE_VALUE)
- #define LSE_VALUE ((uint32_t)32768) /*!< Value of the External Low Speed oscillator in Hz */
-#endif /* LSE_VALUE */
-
-/**
- * @brief Time out for LSE start up value in ms.
- */
-#if !defined (LSE_STARTUP_TIMEOUT)
- #define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */
-#endif /* LSE_STARTUP_TIMEOUT */
-
-/* Tip: To avoid modifying this file each time you need to use different HSE,
- === you can define the HSE value in your toolchain compiler preprocessor. */
-
-/* ########################### System Configuration ######################### */
-/**
- * @brief This is the HAL system configuration section
- */
-#define VDD_VALUE ((uint32_t)3300) /*!< Value of VDD in mv */
-#define TICK_INT_PRIORITY ((uint32_t)3) /*!< tick interrupt priority (lowest by default) */
- /* Warning: Must be set to higher priority for HAL_Delay() */
- /* and HAL_GetTick() usage under interrupt context */
-#define USE_RTOS 0
-#define PREFETCH_ENABLE 1
-#define INSTRUCTION_CACHE_ENABLE 0
-#define DATA_CACHE_ENABLE 0
-#define USE_SPI_CRC 0U
-
-#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
-#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
-#define USE_HAL_COMP_REGISTER_CALLBACKS 0U /* COMP register callback disabled */
-#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
-#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
-#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */
-#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */
-#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
-#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
-#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
-#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */
-#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
-#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */
-#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
-#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */
-#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
-#define USE_HAL_TSC_REGISTER_CALLBACKS 0U /* TSC register callback disabled */
-#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */
-
-/* ########################## Assert Selection ############################## */
-/**
- * @brief Uncomment the line below to expanse the "assert_param" macro in the
- * HAL drivers code
- */
-/* #define USE_FULL_ASSERT 1U */
-
-/* Includes ------------------------------------------------------------------*/
-/**
- * @brief Include module's header file
- */
-
-#ifdef HAL_RCC_MODULE_ENABLED
- #include "stm32f0xx_hal_rcc.h"
-#endif /* HAL_RCC_MODULE_ENABLED */
-
-#ifdef HAL_GPIO_MODULE_ENABLED
- #include "stm32f0xx_hal_gpio.h"
-#endif /* HAL_GPIO_MODULE_ENABLED */
-
-#ifdef HAL_EXTI_MODULE_ENABLED
- #include "stm32f0xx_hal_exti.h"
-#endif /* HAL_EXTI_MODULE_ENABLED */
-
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32f0xx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
-#ifdef HAL_CORTEX_MODULE_ENABLED
- #include "stm32f0xx_hal_cortex.h"
-#endif /* HAL_CORTEX_MODULE_ENABLED */
-
-#ifdef HAL_ADC_MODULE_ENABLED
- #include "stm32f0xx_hal_adc.h"
-#endif /* HAL_ADC_MODULE_ENABLED */
-
-#ifdef HAL_CAN_MODULE_ENABLED
- #include "stm32f0xx_hal_can.h"
-#endif /* HAL_CAN_MODULE_ENABLED */
-
-#ifdef HAL_CEC_MODULE_ENABLED
- #include "stm32f0xx_hal_cec.h"
-#endif /* HAL_CEC_MODULE_ENABLED */
-
-#ifdef HAL_COMP_MODULE_ENABLED
- #include "stm32f0xx_hal_comp.h"
-#endif /* HAL_COMP_MODULE_ENABLED */
-
-#ifdef HAL_CRC_MODULE_ENABLED
- #include "stm32f0xx_hal_crc.h"
-#endif /* HAL_CRC_MODULE_ENABLED */
-
-#ifdef HAL_DAC_MODULE_ENABLED
- #include "stm32f0xx_hal_dac.h"
-#endif /* HAL_DAC_MODULE_ENABLED */
-
-#ifdef HAL_FLASH_MODULE_ENABLED
- #include "stm32f0xx_hal_flash.h"
-#endif /* HAL_FLASH_MODULE_ENABLED */
-
-#ifdef HAL_I2C_MODULE_ENABLED
- #include "stm32f0xx_hal_i2c.h"
-#endif /* HAL_I2C_MODULE_ENABLED */
-
-#ifdef HAL_I2S_MODULE_ENABLED
- #include "stm32f0xx_hal_i2s.h"
-#endif /* HAL_I2S_MODULE_ENABLED */
-
-#ifdef HAL_IRDA_MODULE_ENABLED
- #include "stm32f0xx_hal_irda.h"
-#endif /* HAL_IRDA_MODULE_ENABLED */
-
-#ifdef HAL_IWDG_MODULE_ENABLED
- #include "stm32f0xx_hal_iwdg.h"
-#endif /* HAL_IWDG_MODULE_ENABLED */
-
-#ifdef HAL_PCD_MODULE_ENABLED
- #include "stm32f0xx_hal_pcd.h"
-#endif /* HAL_PCD_MODULE_ENABLED */
-
-#ifdef HAL_PWR_MODULE_ENABLED
- #include "stm32f0xx_hal_pwr.h"
-#endif /* HAL_PWR_MODULE_ENABLED */
-
-#ifdef HAL_RTC_MODULE_ENABLED
- #include "stm32f0xx_hal_rtc.h"
-#endif /* HAL_RTC_MODULE_ENABLED */
-
-#ifdef HAL_SMARTCARD_MODULE_ENABLED
- #include "stm32f0xx_hal_smartcard.h"
-#endif /* HAL_SMARTCARD_MODULE_ENABLED */
-
-#ifdef HAL_SMBUS_MODULE_ENABLED
- #include "stm32f0xx_hal_smbus.h"
-#endif /* HAL_SMBUS_MODULE_ENABLED */
-
-#ifdef HAL_SPI_MODULE_ENABLED
- #include "stm32f0xx_hal_spi.h"
-#endif /* HAL_SPI_MODULE_ENABLED */
-
-#ifdef HAL_TIM_MODULE_ENABLED
- #include "stm32f0xx_hal_tim.h"
-#endif /* HAL_TIM_MODULE_ENABLED */
-
-#ifdef HAL_TSC_MODULE_ENABLED
- #include "stm32f0xx_hal_tsc.h"
-#endif /* HAL_TSC_MODULE_ENABLED */
-
-#ifdef HAL_UART_MODULE_ENABLED
- #include "stm32f0xx_hal_uart.h"
-#endif /* HAL_UART_MODULE_ENABLED */
-
-#ifdef HAL_USART_MODULE_ENABLED
- #include "stm32f0xx_hal_usart.h"
-#endif /* HAL_USART_MODULE_ENABLED */
-
-#ifdef HAL_WWDG_MODULE_ENABLED
- #include "stm32f0xx_hal_wwdg.h"
-#endif /* HAL_WWDG_MODULE_ENABLED */
-
-/* Exported macro ------------------------------------------------------------*/
-#ifdef USE_FULL_ASSERT
-/**
- * @brief The assert_param macro is used for function's parameters check.
- * @param expr If expr is false, it calls assert_failed function
- * which reports the name of the source file and the source
- * line number of the call that failed.
- * If expr is true, it returns no value.
- * @retval None
- */
- #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
-/* Exported functions ------------------------------------------------------- */
- void assert_failed(uint8_t* file, uint32_t line);
-#else
- #define assert_param(expr) ((void)0U)
-#endif /* USE_FULL_ASSERT */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0xx_HAL_CONF_H */
-
diff --git a/GameLogic/stm32/stm32f0xx_hal_msp.c b/GameLogic/stm32/stm32f0xx_hal_msp.c deleted file mode 100644 index 93bc303..0000000 --- a/GameLogic/stm32/stm32f0xx_hal_msp.c +++ /dev/null @@ -1,190 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file stm32f0xx_hal_msp.c
- * @brief This file provides code for the MSP Initialization
- * and de-Initialization codes.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-/* USER CODE BEGIN Includes */
-
-/* USER CODE END Includes */
-
-/* Private typedef -----------------------------------------------------------*/
-/* USER CODE BEGIN TD */
-
-/* USER CODE END TD */
-
-/* Private define ------------------------------------------------------------*/
-/* USER CODE BEGIN Define */
-
-/* USER CODE END Define */
-
-/* Private macro -------------------------------------------------------------*/
-/* USER CODE BEGIN Macro */
-
-/* USER CODE END Macro */
-
-/* Private variables ---------------------------------------------------------*/
-/* USER CODE BEGIN PV */
-
-/* USER CODE END PV */
-
-/* Private function prototypes -----------------------------------------------*/
-/* USER CODE BEGIN PFP */
-
-/* USER CODE END PFP */
-
-/* External functions --------------------------------------------------------*/
-/* USER CODE BEGIN ExternalFunctions */
-
-/* USER CODE END ExternalFunctions */
-
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-/**
- * Initializes the Global MSP.
- */
-void HAL_MspInit(void)
-{
- /* USER CODE BEGIN MspInit 0 */
-
- /* USER CODE END MspInit 0 */
-
- __HAL_RCC_SYSCFG_CLK_ENABLE();
- __HAL_RCC_PWR_CLK_ENABLE();
-
- /* System interrupt init*/
-
- /* USER CODE BEGIN MspInit 1 */
-
- /* USER CODE END MspInit 1 */
-}
-
-/**
-* @brief SPI MSP Initialization
-* This function configures the hardware resources used in this example
-* @param hspi: SPI handle pointer
-* @retval None
-*/
-void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
-{
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(hspi->Instance==SPI1)
- {
- /* USER CODE BEGIN SPI1_MspInit 0 */
-
- /* USER CODE END SPI1_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_SPI1_CLK_ENABLE();
-
- __HAL_RCC_GPIOA_CLK_ENABLE();
- /**SPI1 GPIO Configuration
- PA5 ------> SPI1_SCK
- PA7 ------> SPI1_MOSI
- */
- GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF0_SPI1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- /* USER CODE BEGIN SPI1_MspInit 1 */
-
- /* USER CODE END SPI1_MspInit 1 */
- }
-
-}
-
-/**
-* @brief SPI MSP De-Initialization
-* This function freeze the hardware resources used in this example
-* @param hspi: SPI handle pointer
-* @retval None
-*/
-void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
-{
- if(hspi->Instance==SPI1)
- {
- /* USER CODE BEGIN SPI1_MspDeInit 0 */
-
- /* USER CODE END SPI1_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_SPI1_CLK_DISABLE();
-
- /**SPI1 GPIO Configuration
- PA5 ------> SPI1_SCK
- PA7 ------> SPI1_MOSI
- */
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7);
-
- /* USER CODE BEGIN SPI1_MspDeInit 1 */
-
- /* USER CODE END SPI1_MspDeInit 1 */
- }
-
-}
-
-/**
-* @brief TIM_Base MSP Initialization
-* This function configures the hardware resources used in this example
-* @param htim_base: TIM_Base handle pointer
-* @retval None
-*/
-void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
-{
- if(htim_base->Instance==TIM3)
- {
- /* USER CODE BEGIN TIM3_MspInit 0 */
-
- /* USER CODE END TIM3_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_TIM3_CLK_ENABLE();
- /* USER CODE BEGIN TIM3_MspInit 1 */
-
- /* USER CODE END TIM3_MspInit 1 */
- }
-
-}
-
-/**
-* @brief TIM_Base MSP De-Initialization
-* This function freeze the hardware resources used in this example
-* @param htim_base: TIM_Base handle pointer
-* @retval None
-*/
-void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
-{
- if(htim_base->Instance==TIM3)
- {
- /* USER CODE BEGIN TIM3_MspDeInit 0 */
-
- /* USER CODE END TIM3_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_TIM3_CLK_DISABLE();
- /* USER CODE BEGIN TIM3_MspDeInit 1 */
-
- /* USER CODE END TIM3_MspDeInit 1 */
- }
-
-}
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
diff --git a/GameLogic/stm32/stm32f0xx_it.c b/GameLogic/stm32/stm32f0xx_it.c deleted file mode 100644 index ced8734..0000000 --- a/GameLogic/stm32/stm32f0xx_it.c +++ /dev/null @@ -1,145 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file stm32f0xx_it.c
- * @brief Interrupt Service Routines.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "stm32f0xx_it.h"
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-/* USER CODE END Includes */
-
-/* Private typedef -----------------------------------------------------------*/
-/* USER CODE BEGIN TD */
-
-/* USER CODE END TD */
-
-/* Private define ------------------------------------------------------------*/
-/* USER CODE BEGIN PD */
-
-/* USER CODE END PD */
-
-/* Private macro -------------------------------------------------------------*/
-/* USER CODE BEGIN PM */
-
-/* USER CODE END PM */
-
-/* Private variables ---------------------------------------------------------*/
-/* USER CODE BEGIN PV */
-
-/* USER CODE END PV */
-
-/* Private function prototypes -----------------------------------------------*/
-/* USER CODE BEGIN PFP */
-
-/* USER CODE END PFP */
-
-/* Private user code ---------------------------------------------------------*/
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-/* External variables --------------------------------------------------------*/
-
-/* USER CODE BEGIN EV */
-
-/* USER CODE END EV */
-
-/******************************************************************************/
-/* Cortex-M0 Processor Interruption and Exception Handlers */
-/******************************************************************************/
-/**
- * @brief This function handles Non maskable interrupt.
- */
-void NMI_Handler(void)
-{
- /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
-
- /* USER CODE END NonMaskableInt_IRQn 0 */
- /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
- while (1)
- {
- }
- /* USER CODE END NonMaskableInt_IRQn 1 */
-}
-
-/**
- * @brief This function handles Hard fault interrupt.
- */
-void HardFault_Handler(void)
-{
- /* USER CODE BEGIN HardFault_IRQn 0 */
-
- /* USER CODE END HardFault_IRQn 0 */
- while (1)
- {
- /* USER CODE BEGIN W1_HardFault_IRQn 0 */
- /* USER CODE END W1_HardFault_IRQn 0 */
- }
-}
-
-/**
- * @brief This function handles System service call via SWI instruction.
- */
-void SVC_Handler(void)
-{
- /* USER CODE BEGIN SVC_IRQn 0 */
-
- /* USER CODE END SVC_IRQn 0 */
- /* USER CODE BEGIN SVC_IRQn 1 */
-
- /* USER CODE END SVC_IRQn 1 */
-}
-
-/**
- * @brief This function handles Pendable request for system service.
- */
-void PendSV_Handler(void)
-{
- /* USER CODE BEGIN PendSV_IRQn 0 */
-
- /* USER CODE END PendSV_IRQn 0 */
- /* USER CODE BEGIN PendSV_IRQn 1 */
-
- /* USER CODE END PendSV_IRQn 1 */
-}
-
-/**
- * @brief This function handles System tick timer.
- */
-void SysTick_Handler(void)
-{
- /* USER CODE BEGIN SysTick_IRQn 0 */
-
- /* USER CODE END SysTick_IRQn 0 */
- HAL_IncTick();
- /* USER CODE BEGIN SysTick_IRQn 1 */
-
- /* USER CODE END SysTick_IRQn 1 */
-}
-
-/******************************************************************************/
-/* STM32F0xx Peripheral Interrupt Handlers */
-/* Add here the Interrupt Handlers for the used peripherals. */
-/* For the available peripheral interrupt handler names, */
-/* please refer to the startup file (startup_stm32f0xx.s). */
-/******************************************************************************/
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
diff --git a/GameLogic/stm32/stm32f0xx_it.h b/GameLogic/stm32/stm32f0xx_it.h deleted file mode 100644 index a3fa1b9..0000000 --- a/GameLogic/stm32/stm32f0xx_it.h +++ /dev/null @@ -1,62 +0,0 @@ -/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file stm32f0xx_it.h
- * @brief This file contains the headers of the interrupt handlers.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F0xx_IT_H
-#define __STM32F0xx_IT_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-
-/* USER CODE END Includes */
-
-/* Exported types ------------------------------------------------------------*/
-/* USER CODE BEGIN ET */
-
-/* USER CODE END ET */
-
-/* Exported constants --------------------------------------------------------*/
-/* USER CODE BEGIN EC */
-
-/* USER CODE END EC */
-
-/* Exported macro ------------------------------------------------------------*/
-/* USER CODE BEGIN EM */
-
-/* USER CODE END EM */
-
-/* Exported functions prototypes ---------------------------------------------*/
-void NMI_Handler(void);
-void HardFault_Handler(void);
-void SVC_Handler(void);
-void PendSV_Handler(void);
-void SysTick_Handler(void);
-/* USER CODE BEGIN EFP */
-
-/* USER CODE END EFP */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F0xx_IT_H */
diff --git a/GameLogic/stm32/syscalls.c b/GameLogic/stm32/syscalls.c deleted file mode 100644 index f4278b7..0000000 --- a/GameLogic/stm32/syscalls.c +++ /dev/null @@ -1,176 +0,0 @@ -/** - ****************************************************************************** - * @file syscalls.c - * @author Auto-generated by STM32CubeIDE - * @brief STM32CubeIDE Minimal System calls file - * - * For more information about which c-functions - * need which of these lowlevel functions - * please consult the Newlib libc-manual - ****************************************************************************** - * @attention - * - * Copyright (c) 2020-2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes */ -#include <sys/stat.h> -#include <stdlib.h> -#include <errno.h> -#include <stdio.h> -#include <signal.h> -#include <time.h> -#include <sys/time.h> -#include <sys/times.h> - - -/* Variables */ -extern int __io_putchar(int ch) __attribute__((weak)); -extern int __io_getchar(void) __attribute__((weak)); - - -char *__env[1] = { 0 }; -char **environ = __env; - - -/* Functions */ -void initialise_monitor_handles() -{ -} - -int _getpid(void) -{ - return 1; -} - -int _kill(int pid, int sig) -{ - (void)pid; - (void)sig; - errno = EINVAL; - return -1; -} - -void _exit (int status) -{ - _kill(status, -1); - while (1) {} /* Make sure we hang here */ -} - -__attribute__((weak)) int _read(int file, char *ptr, int len) -{ - (void)file; - int DataIdx; - - for (DataIdx = 0; DataIdx < len; DataIdx++) - { - *ptr++ = __io_getchar(); - } - - return len; -} - -__attribute__((weak)) int _write(int file, char *ptr, int len) -{ - (void)file; - int DataIdx; - - for (DataIdx = 0; DataIdx < len; DataIdx++) - { - __io_putchar(*ptr++); - } - return len; -} - -int _close(int file) -{ - (void)file; - return -1; -} - - -int _fstat(int file, struct stat *st) -{ - (void)file; - st->st_mode = S_IFCHR; - return 0; -} - -int _isatty(int file) -{ - (void)file; - return 1; -} - -int _lseek(int file, int ptr, int dir) -{ - (void)file; - (void)ptr; - (void)dir; - return 0; -} - -int _open(char *path, int flags, ...) -{ - (void)path; - (void)flags; - /* Pretend like we always fail */ - return -1; -} - -int _wait(int *status) -{ - (void)status; - errno = ECHILD; - return -1; -} - -int _unlink(char *name) -{ - (void)name; - errno = ENOENT; - return -1; -} - -int _times(struct tms *buf) -{ - (void)buf; - return -1; -} - -int _stat(char *file, struct stat *st) -{ - (void)file; - st->st_mode = S_IFCHR; - return 0; -} - -int _link(char *old, char *new) -{ - (void)old; - (void)new; - errno = EMLINK; - return -1; -} - -int _fork(void) -{ - errno = EAGAIN; - return -1; -} - -int _execve(char *name, char **argv, char **env) -{ - (void)name; - (void)argv; - (void)env; - errno = ENOMEM; - return -1; -} diff --git a/GameLogic/stm32/sysmem.c b/GameLogic/stm32/sysmem.c deleted file mode 100644 index 54081ac..0000000 --- a/GameLogic/stm32/sysmem.c +++ /dev/null @@ -1,79 +0,0 @@ -/** - ****************************************************************************** - * @file sysmem.c - * @author Generated by STM32CubeIDE - * @brief STM32CubeIDE System Memory calls file - * - * For more information about which C functions - * need which of these lowlevel functions - * please consult the newlib libc manual - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes */ -#include <errno.h> -#include <stdint.h> - -/** - * Pointer to the current high watermark of the heap usage - */ -static uint8_t *__sbrk_heap_end = NULL; - -/** - * @brief _sbrk() allocates memory to the newlib heap and is used by malloc - * and others from the C library - * - * @verbatim - * ############################################################################ - * # .data # .bss # newlib heap # MSP stack # - * # # # # Reserved by _Min_Stack_Size # - * ############################################################################ - * ^-- RAM start ^-- _end _estack, RAM end --^ - * @endverbatim - * - * This implementation starts allocating at the '_end' linker symbol - * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack - * The implementation considers '_estack' linker symbol to be RAM end - * NOTE: If the MSP stack, at any point during execution, grows larger than the - * reserved size, please increase the '_Min_Stack_Size'. - * - * @param incr Memory size - * @return Pointer to allocated memory - */ -void *_sbrk(ptrdiff_t incr) -{ - extern uint8_t _end; /* Symbol defined in the linker script */ - extern uint8_t _estack; /* Symbol defined in the linker script */ - extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ - const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - const uint8_t *max_heap = (uint8_t *)stack_limit; - uint8_t *prev_heap_end; - - /* Initialize heap end at first call */ - if (NULL == __sbrk_heap_end) - { - __sbrk_heap_end = &_end; - } - - /* Protect heap from growing into the reserved MSP stack */ - if (__sbrk_heap_end + incr > max_heap) - { - errno = ENOMEM; - return (void *)-1; - } - - prev_heap_end = __sbrk_heap_end; - __sbrk_heap_end += incr; - - return (void *)prev_heap_end; -} diff --git a/GameLogic/stm32/system_stm32f0xx.c b/GameLogic/stm32/system_stm32f0xx.c deleted file mode 100644 index 1b0fbe5..0000000 --- a/GameLogic/stm32/system_stm32f0xx.c +++ /dev/null @@ -1,247 +0,0 @@ -/**
- ******************************************************************************
- * @file system_stm32f0xx.c
- * @author MCD Application Team
- * @brief CMSIS Cortex-M0 Device Peripheral Access Layer System Source File.
- *
- * 1. This file provides two functions and one global variable to be called from
- * user application:
- * - SystemInit(): This function is called at startup just after reset and
- * before branch to main program. This call is made inside
- * the "startup_stm32f0xx.s" file.
- *
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
- * by the user application to setup the SysTick
- * timer or configure other parameters.
- *
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
- * be called whenever the core clock is changed
- * during program execution.
- *
- *
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2016 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
- */
-
-/** @addtogroup CMSIS
- * @{
- */
-
-/** @addtogroup stm32f0xx_system
- * @{
- */
-
-/** @addtogroup STM32F0xx_System_Private_Includes
- * @{
- */
-
-#include "stm32f0xx.h"
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_TypesDefinitions
- * @{
- */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_Defines
- * @{
- */
-#if !defined (HSE_VALUE)
- #define HSE_VALUE ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz.
- This value can be provided and adapted by the user application. */
-#endif /* HSE_VALUE */
-
-#if !defined (HSI_VALUE)
- #define HSI_VALUE ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz.
- This value can be provided and adapted by the user application. */
-#endif /* HSI_VALUE */
-
-#if !defined (HSI48_VALUE)
-#define HSI48_VALUE ((uint32_t)48000000) /*!< Default value of the HSI48 Internal oscillator in Hz.
- This value can be provided and adapted by the user application. */
-#endif /* HSI48_VALUE */
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_Variables
- * @{
- */
- /* This variable is updated in three ways:
- 1) by calling CMSIS function SystemCoreClockUpdate()
- 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
- 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
- Note: If you use this function to configure the system clock; then there
- is no need to call the 2 first functions listed above, since SystemCoreClock
- variable is updated automatically.
- */
-uint32_t SystemCoreClock = 8000000;
-
-const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_FunctionPrototypes
- * @{
- */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F0xx_System_Private_Functions
- * @{
- */
-
-/**
- * @brief Setup the microcontroller system
- * @param None
- * @retval None
- */
-void SystemInit(void)
-{
- /* NOTE :SystemInit(): This function is called at startup just after reset and
- before branch to main program. This call is made inside
- the "startup_stm32f0xx.s" file.
- User can setups the default system clock (System clock source, PLL Multiplier
- and Divider factors, AHB/APBx prescalers and Flash settings).
- */
-}
-
-/**
- * @brief Update SystemCoreClock variable according to Clock Register Values.
- * The SystemCoreClock variable contains the core clock (HCLK), it can
- * be used by the user application to setup the SysTick timer or configure
- * other parameters.
- *
- * @note Each time the core clock (HCLK) changes, this function must be called
- * to update SystemCoreClock variable value. Otherwise, any configuration
- * based on this variable will be incorrect.
- *
- * @note - The system frequency computed by this function is not the real
- * frequency in the chip. It is calculated based on the predefined
- * constant and the selected clock source:
- *
- * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
- *
- * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
- *
- * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.
- *
- * (*) HSI_VALUE is a constant defined in stm32f0xx_hal_conf.h file (default value
- * 8 MHz) but the real value may vary depending on the variations
- * in voltage and temperature.
- *
- * (**) HSE_VALUE is a constant defined in stm32f0xx_hal_conf.h file (its value
- * depends on the application requirements), user has to ensure that HSE_VALUE
- * is same as the real frequency of the crystal used. Otherwise, this function
- * may have wrong result.
- *
- * - The result of this function could be not correct when using fractional
- * value for HSE crystal.
- *
- * @param None
- * @retval None
- */
-void SystemCoreClockUpdate (void)
-{
- uint32_t tmp = 0, pllmull = 0, pllsource = 0, predivfactor = 0;
-
- /* Get SYSCLK source -------------------------------------------------------*/
- tmp = RCC->CFGR & RCC_CFGR_SWS;
-
- switch (tmp)
- {
- case RCC_CFGR_SWS_HSI: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- case RCC_CFGR_SWS_HSE: /* HSE used as system clock */
- SystemCoreClock = HSE_VALUE;
- break;
- case RCC_CFGR_SWS_PLL: /* PLL used as system clock */
- /* Get PLL clock source and multiplication factor ----------------------*/
- pllmull = RCC->CFGR & RCC_CFGR_PLLMUL;
- pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
- pllmull = ( pllmull >> 18) + 2;
- predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
-
- if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV)
- {
- /* HSE used as PLL clock source : SystemCoreClock = HSE/PREDIV * PLLMUL */
- SystemCoreClock = (HSE_VALUE/predivfactor) * pllmull;
- }
-#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F091xC) || defined(STM32F098xx)
- else if (pllsource == RCC_CFGR_PLLSRC_HSI48_PREDIV)
- {
- /* HSI48 used as PLL clock source : SystemCoreClock = HSI48/PREDIV * PLLMUL */
- SystemCoreClock = (HSI48_VALUE/predivfactor) * pllmull;
- }
-#endif /* STM32F042x6 || STM32F048xx || STM32F072xB || STM32F078xx || STM32F091xC || STM32F098xx */
- else
- {
-#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F070x6) \
- || defined(STM32F078xx) || defined(STM32F071xB) || defined(STM32F072xB) \
- || defined(STM32F070xB) || defined(STM32F091xC) || defined(STM32F098xx) || defined(STM32F030xC)
- /* HSI used as PLL clock source : SystemCoreClock = HSI/PREDIV * PLLMUL */
- SystemCoreClock = (HSI_VALUE/predivfactor) * pllmull;
-#else
- /* HSI used as PLL clock source : SystemCoreClock = HSI/2 * PLLMUL */
- SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
-#endif /* STM32F042x6 || STM32F048xx || STM32F070x6 ||
- STM32F071xB || STM32F072xB || STM32F078xx || STM32F070xB ||
- STM32F091xC || STM32F098xx || STM32F030xC */
- }
- break;
- default: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- }
- /* Compute HCLK clock frequency ----------------*/
- /* Get HCLK prescaler */
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
- /* HCLK clock frequency */
- SystemCoreClock >>= tmp;
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/GameLogic/vhdl/cnts.xdc b/GameLogic/vhdl/cnts.xdc deleted file mode 100644 index b8c0604..0000000 --- a/GameLogic/vhdl/cnts.xdc +++ /dev/null @@ -1,72 +0,0 @@ -set_property PACKAGE_PIN W5 [get_ports clk100]
-set_property PACKAGE_PIN P19 [get_ports hsync]
-set_property PACKAGE_PIN R19 [get_ports vsync]
-set_property PACKAGE_PIN N18 [get_ports {blue[3]}]
-set_property PACKAGE_PIN L18 [get_ports {blue[2]}]
-set_property PACKAGE_PIN K18 [get_ports {blue[1]}]
-set_property PACKAGE_PIN J18 [get_ports {blue[0]}]
-set_property PACKAGE_PIN J17 [get_ports {green[3]}]
-set_property PACKAGE_PIN H17 [get_ports {green[2]}]
-set_property PACKAGE_PIN G17 [get_ports {green[1]}]
-set_property PACKAGE_PIN D17 [get_ports {green[0]}]
-set_property PACKAGE_PIN G19 [get_ports {red[3]}]
-set_property PACKAGE_PIN H19 [get_ports {red[2]}]
-set_property PACKAGE_PIN J19 [get_ports {red[1]}]
-set_property PACKAGE_PIN N19 [get_ports {red[0]}]
-set_property IOSTANDARD LVCMOS33 [get_ports clk100]
-set_property IOSTANDARD LVCMOS33 [get_ports hsync]
-set_property IOSTANDARD LVCMOS33 [get_ports vsync]
-set_property IOSTANDARD LVCMOS33 [get_ports {blue[3]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {blue[2]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {blue[0]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {blue[1]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {green[3]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {green[2]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {green[1]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {red[3]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {red[2]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {red[1]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {red[0]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {green[0]}]
-
-set_property PACKAGE_PIN T18 [get_ports resetButton]
-set_property IOSTANDARD LVCMOS33 [get_ports resetButton]
-
-set_property PACKAGE_PIN A15 [get_ports clkSPI]
-set_property PACKAGE_PIN C15 [get_ports csSPI]
-set_property PACKAGE_PIN A17 [get_ports dataSPI]
-set_property IOSTANDARD LVCMOS33 [get_ports dataSPI]
-set_property IOSTANDARD LVCMOS33 [get_ports csSPI]
-set_property IOSTANDARD LVCMOS33 [get_ports clkSPI]
-set_property PACKAGE_PIN L1 [get_ports {led[15]}]
-set_property PACKAGE_PIN P1 [get_ports {led[14]}]
-set_property PACKAGE_PIN N3 [get_ports {led[13]}]
-set_property PACKAGE_PIN P3 [get_ports {led[12]}]
-set_property PACKAGE_PIN U3 [get_ports {led[11]}]
-set_property PACKAGE_PIN W3 [get_ports {led[10]}]
-set_property PACKAGE_PIN V3 [get_ports {led[9]}]
-set_property PACKAGE_PIN V13 [get_ports {led[8]}]
-set_property PACKAGE_PIN V14 [get_ports {led[7]}]
-set_property PACKAGE_PIN U14 [get_ports {led[6]}]
-set_property PACKAGE_PIN U15 [get_ports {led[5]}]
-set_property PACKAGE_PIN W18 [get_ports {led[4]}]
-set_property PACKAGE_PIN V19 [get_ports {led[3]}]
-set_property PACKAGE_PIN U19 [get_ports {led[2]}]
-set_property PACKAGE_PIN E19 [get_ports {led[1]}]
-set_property PACKAGE_PIN U16 [get_ports {led[0]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[8]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[9]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[10]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[11]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[12]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[13]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[14]}]
-set_property IOSTANDARD LVCMOS33 [get_ports {led[15]}]
diff --git a/GameLogic/vhdl/constraints.txt b/basys3/basys3.srcs/io.xdc index f254cdd..f254cdd 100644 --- a/GameLogic/vhdl/constraints.txt +++ b/basys3/basys3.srcs/io.xdc diff --git a/GameLogic/vhdl/spiSlave.vhd b/basys3/basys3.srcs/top.vhd index 7cf3e63..7cf3e63 100644 --- a/GameLogic/vhdl/spiSlave.vhd +++ b/basys3/basys3.srcs/top.vhd diff --git a/GameLogic/stm32/stm32Design.md b/pinout.md index f4569d2..f4569d2 100644 --- a/GameLogic/stm32/stm32Design.md +++ b/pinout.md diff --git a/src/ds.c b/src/ds.c new file mode 100644 index 0000000..d6d4357 --- /dev/null +++ b/src/ds.c @@ -0,0 +1,15 @@ +#include "main.h" +#include "ppu/ppu.h" +#include "demo.h" + +void hh_setup() { + hh_ppu_init(); + + hh_demo_setup(); +} + +void hh_exit() { + g_hh_run = false; + + hh_ppu_deinit(); +} @@ -10,5 +10,6 @@ endif DESKTOP_SRCS += ppusim/sim.c \ ppusim/mem.c \ ppusim/pixel.c \ - ppusim/work.c + ppusim/work.c \ + ds.c @@ -1,13 +1,98 @@ #include <stdlib.h> #include "main.h" -#include "ppu/ppu.h" #include "demo.h" bool g_hh_run = true; +static int8_t buttonDPAD[] = {0,0,0,0}; //1left 2right 3down 4up + +struct playerData{ + uint16_t posX; + uint16_t posY; + uint8_t radius; + uint8_t rotation; //45 degrees steps 0 == right 2 == down 4 == left 6 == up + uint8_t directionX; //direction where its looking at in case no input; + int8_t speed; //10 default L/R MODifier + bool inAir; + +}; + +struct playerData player1; + +uint8_t tileMap[30][40] = + { + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 }, + {1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 } + + + + }; + +void buttonRead(); +void playerMovement(); +void sendData(uint8_t, uint16_t); + + uint16_t pos_x; //0b0000 0001 0011 0110 + uint16_t pos_y; + + uint8_t left = 0; + uint8_t right = 0; + uint8_t up = 0; + uint8_t down = 0; + + + + uint8_t pos_x_bit[2]; + uint8_t pos_y_bit[2]; + uint8_t data_send[3]; + + int tileX; + int tileY; +// struct playerData player1; + //int buttons[] = {GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_8}; // 1 left // 2 right // 3 up // 4 down + + int main() { hh_setup(); + +/// init struct + player1.posX = 31000; //0b0000 0001 0011 0110 + player1.posY = 21000; + player1.radius = 8; + player1.speed = 1; + player1.directionX = 1; + player1.rotation = 8; + player1.inAir = false; + hh_loop(); hh_exit(); return 0; @@ -17,17 +102,163 @@ void hh_ppu_vblank_interrupt() { static unsigned long frame = 0; frame++; - hh_demo_loop(frame); + buttonRead(); + playerMovement(); + + + // send data via SPI //adjust map size + pos_x = player1.posX / 100; + pos_y = player1.posY / 100; + + sendData(0b01000000,pos_x); + sendData(0b00000000,pos_y); + + // hh_demo_loop(frame); } -void hh_setup() { - hh_ppu_init(); +void sendData(uint8_t address, uint16_t data) +{ + uint8_t bitData[3]; + bitData[2] = data & 0xff; + bitData[1] = (data >> 8); + bitData[0] = address; // first byte is address + + + + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET); + HAL_SPI_Transmit(&hspi1, bitData, 3, 100); //2*8 bit data + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET); - hh_demo_setup(); } -void hh_exit() { - g_hh_run = false; +void buttonRead() +{ + //int buttons[] = {GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_8}; // 1 left // 2 right // 3 down // 4 up 8-6-4-5 + uint16_t buttons[] = {0x0100U,0x0040U,0x0010U,0x0020U}; // 1 left // 2 right // 3 down // 4 up + + for(int i = 0; i < 4; i++) + { + if(HAL_GPIO_ReadPin(GPIOB, buttons[i]) == 1) + { + if((i+2) % 2 == 0) + { + buttonDPAD[i] = 1; + } + else + { + buttonDPAD[i] = -1; + } + } + else + { + buttonDPAD[i] = 0; + } + } +} + +void playerMovement() +{ + + int8_t directionX = 0; // -1 = L || 1 == R + int8_t directionY = 0; // -1 = D || 1 == U + + uint8_t i,j; + uint8_t rotation = 0; // 0-7 + //temp var for testing + + + + // direction calc + directionX = buttonDPAD[0] + buttonDPAD[1]; + directionY = buttonDPAD[2] + buttonDPAD[3]; + + //rotation calc + for(i = -1; i < 2;i++) + { + for(j = -1; j < 2; j++) + { + if(directionX == i) + { + if(directionY == j) + { + if(i != 0 && j != 0) //dont update when player idle + { + player1.rotation = rotation; + } + } + } + rotation++; + } + } + //direction calc + if(directionX != 0) //update direction if player is not idle + { + player1.directionX = directionX; + } + //collision map x-axis + + //tile calc including radius and direction for background coliision + + uint16_t tileColX; + uint16_t tileColY = ( player1.posY / 100) / 16; ; + + // remaining space between grid and exact + uint8_t modTileX; + uint8_t modTileY; + + + + if(player1.inAir == false && directionX != 0) + { + if(directionX == 1) + { + tileColX = ( ( player1.posX / 100) + player1.radius ) / 20; + modTileX = ( player1.posX + ( 100 * player1.radius ) ) % 2000; + } + else if(directionX == -1) + { + tileColX = ( ( player1.posX / 100) - player1.radius ) / 20; + modTileX = ( player1.posX - ( 100 * player1.radius ) ) % 2000; + } + + if(tileMap[tileColY][tileColX + directionX] != 1) + { + player1.posX = player1.posX + (directionX * player1.speed); // NEW x set + } + + else if(tileMap[tileColY][tileColX + directionX] == 1) + { + if(modTileX < player1.speed) + { + player1.posX = player1.posX + (directionX * modTileX); // NEW x set + } + else + { + player1.posX = player1.posX + (directionX * player1.speed); // NEW x set + } + } + + } + else //if in air different all borders have to be checked + { + + } + + //collision map floor (y-axis) (falling) + // if falling no jump press (implement) + /* + tileColY = (( player1.posY / 100) + player1.radius) / 16; //bottom of player box + modTileY = 1; + if(tileMap[tileColY+1][tileColX] != 1) //rework after jumping + { + player1.posY = player1.posY + 5 ;// NEW y set //makew var gravity + //playerStat = falling; //for later use of graphics/sound + } + */ + //else if(tileMap[]) + + + + - hh_ppu_deinit(); } diff --git a/src/ppu/stm.c b/src/ppu/stm.c new file mode 100644 index 0000000..fd4a18c --- /dev/null +++ b/src/ppu/stm.c @@ -0,0 +1,4 @@ +#include "ppu/ppu.h" + +void hh_ppu_init() {} +void hh_ppu_deinit() {} diff --git a/src/stm32.mk b/src/stm32.mk index 6926dea..eab34a4 100644 --- a/src/stm32.mk +++ b/src/stm32.mk @@ -43,22 +43,24 @@ STM_SRCS += lib/FreeRTOS-Kernel/croutine.c \ lib/FreeRTOS-Kernel/timers.c \ lib/FreeRTOS-Kernel/portable/GCC/ARM_CM0/port.c \ lib/FreeRTOS-Kernel/portable/MemMang/heap_4.c -STM_SRCS += lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_rcc.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_rcc_ex.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_i2c.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_i2c_ex.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_gpio.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_dma.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_cortex.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_pwr.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_pwr_ex.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_flash.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_flash_ex.c \ +STM_SRCS += lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_spi.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_spi_ex.c \ lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_tim.c \ lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_tim_ex.c \ lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_uart.c \ - lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_uart_ex.c + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_uart_ex.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_cortex.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_dma.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_flash.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_flash_ex.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_gpio.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_pwr.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_pwr_ex.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_rcc.c \ + lib/STM32-base-STM32Cube/HAL/STM32F0xx/src/stm32f0xx_hal_rcc_ex.c STM_SRCS += stm32/idle_task_static_memory.c \ - stm32/main.c + stm32/main.c \ + stm32/setup.c \ + ppu/stm.c diff --git a/src/stm32/setup.c b/src/stm32/setup.c new file mode 100644 index 0000000..2c3552b --- /dev/null +++ b/src/stm32/setup.c @@ -0,0 +1,197 @@ +#include <stm32f0xx_hal.h> +#include <stm32f0xx_hal_spi.h> +#include <stm32f0xx_hal_uart.h> +#include <stm32f0xx_hal_gpio.h> +#include <FreeRTOS.h> +#include <task.h> + +#include "main.h" +#include "setup.h" +#include "ppu/ppu.h" + +UART_HandleTypeDef huart2 = { + .Instance = USART2, + .Init.BaudRate = 115200, + .Init.WordLength = UART_WORDLENGTH_8B, + .Init.StopBits = UART_STOPBITS_1, + .Init.Parity = UART_PARITY_NONE, + .Init.Mode = UART_MODE_TX_RX, + .Init.HwFlowCtl = UART_HWCONTROL_NONE, + .Init.OverSampling = UART_OVERSAMPLING_16, + .Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE, + .AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT, +}; + +GPIO_InitTypeDef spi_gpio = { + .Pin = HH_IO_SPI_PINS, + .Mode = GPIO_MODE_AF_PP, + .Pull = GPIO_NOPULL, + .Speed = GPIO_SPEED_FREQ_HIGH, + .Alternate = GPIO_AF0_SPI1, +}; + +SPI_HandleTypeDef hspi1 = { + .Instance = SPI1, + .Init.Mode = SPI_MODE_MASTER, + .Init.Direction = SPI_DIRECTION_1LINE, + .Init.DataSize = SPI_DATASIZE_8BIT, + .Init.CLKPolarity = SPI_POLARITY_LOW, + .Init.CLKPhase = SPI_PHASE_1EDGE, + .Init.NSS = SPI_NSS_SOFT, + .Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16, + .Init.FirstBit = SPI_FIRSTBIT_MSB, + .Init.TIMode = SPI_TIMODE_DISABLE, + .Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE, + .Init.CRCPolynomial = 7, + .Init.CRCLength = SPI_CRC_LENGTH_DATASIZE, + .Init.NSSPMode = SPI_NSS_PULSE_DISABLE, +}; + +TIM_HandleTypeDef htim3 = { + .Instance = TIM3, + .Init.Prescaler = 7999, + .Init.CounterMode = TIM_COUNTERMODE_UP, + .Init.Period = 65535, + .Init.ClockDivision = TIM_CLOCKDIVISION_DIV1, + .Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE, +}; + +static void hh_io_spi_setup(); +static void hh_io_tim_setup(); +static void hh_io_usart2_setup(); +static void hh_io_gpio_setup(); +static void hh_io_clock_setup(); +static void hh_io_setup_error_handler(); + +void hh_setup() { + HAL_Init(); + + hh_io_clock_setup(); + hh_io_usart2_setup(); + hh_io_gpio_setup(); + hh_io_spi_setup(); + hh_io_tim_setup(); + + hh_ppu_init(); +} + +void hh_exit() { + hh_ppu_deinit(); + + HAL_DeInit(); +} + +void hh_io_clock_setup() { + if (HAL_OK != HAL_RCC_OscConfig(&(RCC_OscInitTypeDef){ + .OscillatorType = RCC_OSCILLATORTYPE_HSI, + .HSIState = RCC_HSI_ON, + .HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT, + .PLL.PLLState = RCC_PLL_ON, + })) return hh_io_setup_error_handler(); + + // cpu, ahb & apb clocks + if (HAL_OK != HAL_RCC_ClockConfig(&(RCC_ClkInitTypeDef){ + .ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1, + .SYSCLKSource = RCC_SYSCLKSOURCE_HSI, + .AHBCLKDivider = RCC_SYSCLK_DIV1, + .APB1CLKDivider = RCC_HCLK_DIV1, + }, FLASH_LATENCY_1)) return hh_io_setup_error_handler(); + + // usart2 clock (usb serial) + if (HAL_RCCEx_PeriphCLKConfig(&(RCC_PeriphCLKInitTypeDef){ + .PeriphClockSelection = RCC_PERIPHCLK_USART2, + .Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1, + .I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI, + }) != HAL_OK) return hh_io_setup_error_handler(); +} + +void hh_io_spi_setup() { + if (HAL_SPI_Init(&hspi1) != HAL_OK) + return hh_io_setup_error_handler(); +} + +void hh_io_usart2_setup() { + if (HAL_UART_Init(&huart2) != HAL_OK) + return hh_io_setup_error_handler(); +} + +void hh_io_tim_setup() { + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + return hh_io_setup_error_handler(); + + if (HAL_TIM_ConfigClockSource(&htim3, &(TIM_ClockConfigTypeDef) { + .ClockSource = TIM_CLOCKSOURCE_INTERNAL + }) != HAL_OK) return hh_io_setup_error_handler(); + + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &(TIM_MasterConfigTypeDef) { + .MasterOutputTrigger = TIM_TRGO_RESET, + .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE, + }) != HAL_OK) return hh_io_setup_error_handler(); +} + +void hh_io_gpio_setup() { + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET); + HAL_GPIO_Init(GPIOA, &(GPIO_InitTypeDef) { + .Pin = GPIO_PIN_9, + .Mode = GPIO_MODE_OUTPUT_PP, + .Pull = GPIO_NOPULL, + .Speed = GPIO_SPEED_FREQ_LOW, + }); + HAL_GPIO_Init(GPIOA, &(GPIO_InitTypeDef) { + .Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_8, + .Mode = GPIO_MODE_INPUT, + .Pull = GPIO_PULLDOWN, + }); +} + +void HAL_MspInit() { + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); +} + +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { + if(hspi->Instance != SPI1) return; + + __HAL_RCC_SPI1_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + HAL_GPIO_Init(HH_IO_SPI_PORT, &spi_gpio); +} + +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) { + if(hspi->Instance != SPI1) return; + + __HAL_RCC_SPI1_CLK_DISABLE(); + + HAL_GPIO_DeInit(HH_IO_SPI_PORT, HH_IO_SPI_PINS); +} + +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { + if(htim_base->Instance != TIM3) return; + + __HAL_RCC_TIM3_CLK_ENABLE(); +} + +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { + if(htim_base->Instance != TIM3) return; + + __HAL_RCC_TIM3_CLK_DISABLE(); +} + +void SysTick_Handler() { + HAL_IncTick(); + if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) + xPortSysTickHandler(); +} + +void HardFault_Handler() { + for(;;); +} + +void hh_io_setup_error_handler() { + __disable_irq(); + while (1); +} diff --git a/src/stm32/setup.h b/src/stm32/setup.h new file mode 100644 index 0000000..66d5ff3 --- /dev/null +++ b/src/stm32/setup.h @@ -0,0 +1,24 @@ +#pragma once + +#include <stm32f0xx_hal_spi.h> +#include <stm32f0xx_hal_uart.h> +#include <stm32f0xx_hal_tim.h> +#include <stm32f0xx_hal_gpio.h> + +#define HH_IO_SPI_PINS (GPIO_PIN_5 | GPIO_PIN_7) +#define HH_IO_SPI_PORT GPIOA + +extern UART_HandleTypeDef huart2; // NOLINT +extern GPIO_InitTypeDef spi_gpio; // NOLINT +extern SPI_HandleTypeDef hspi1; // NOLINT +extern TIM_HandleTypeDef htim3; // NOLINT + +// required HAL setup functions +void HAL_MspInit(); // NOLINT +void HAL_UART_MspInit(UART_HandleTypeDef *huart); // NOLINT +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi); // NOLINT +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi); // NOLINT +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base); // NOLINT +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base); // NOLINT +void HardFault_Handler(); // NOLINT +void SysTick_Handler(); // NOLINT diff --git a/src/stm32/stm32f0xx_hal_conf.h b/src/stm32/stm32f0xx_hal_conf.h index fc27221..84a3b74 100644 --- a/src/stm32/stm32f0xx_hal_conf.h +++ b/src/stm32/stm32f0xx_hal_conf.h @@ -19,16 +19,18 @@ #define DATA_CACHE_ENABLE 0U #define USE_SPI_CRC 0U -#define HAL_RCC_MODULE_ENABLED #define HAL_MODULE_ENABLED -#define HAL_I2C_MODULE_ENABLED -#define HAL_GPIO_MODULE_ENABLED -#define HAL_DMA_MODULE_ENABLED -#define HAL_CORTEX_MODULE_ENABLED -#define HAL_PWR_MODULE_ENABLED -#define HAL_FLASH_MODULE_ENABLED +#define HAL_SPI_MODULE_ENABLED #define HAL_TIM_MODULE_ENABLED #define HAL_UART_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +// #define HAL_I2C_MODULE_ENABLED #ifdef HAL_RCC_MODULE_ENABLED #include <stm32f0xx_hal_rcc.h> |