|
@@ -4,6 +4,8 @@
|
|
|
#include "stm32g0xx_ll_gpio.h"
|
|
|
#include "stm32g0xx_ll_usart.h"
|
|
|
|
|
|
+/* private variables */
|
|
|
+
|
|
|
/* private functions */
|
|
|
static void TIM1_Init(void);
|
|
|
static void TIM3_Init(void);
|
|
@@ -11,15 +13,35 @@ static void TIM14_Init(void);
|
|
|
static void TIM16_Init(void);
|
|
|
static void TIM17_Init(void);
|
|
|
static void USART1_UART_Init(void);
|
|
|
+static void GPIO_Init(void);
|
|
|
|
|
|
/* Board perephireal Configuration */
|
|
|
void Board_Init(void)
|
|
|
{
|
|
|
+ RCC->APBENR2 |= RCC_APBENR2_SYSCFGEN;
|
|
|
+ RCC->APBENR1 |= RCC_APBENR1_PWREN;
|
|
|
+
|
|
|
+ /* Peripheral interrupt init*/
|
|
|
+ /* RCC_IRQn interrupt configuration */
|
|
|
+ NVIC_SetPriority(RCC_IRQn, 0);
|
|
|
+ NVIC_EnableIRQ(RCC_IRQn);
|
|
|
+
|
|
|
+ /* Configure the system clock */
|
|
|
+ SystemClock_Config();
|
|
|
+
|
|
|
+ /* Processor uses sleep as its low power mode */
|
|
|
+ SCB->SCR &= ~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
|
|
|
+ /* DisableSleepOnExit */
|
|
|
+ SCB->SCR &= ~((uint32_t)SCB_SCR_SLEEPONEXIT_Msk);
|
|
|
+
|
|
|
+ /* Initialize all configured peripherals */
|
|
|
+ GPIO_Init();
|
|
|
+
|
|
|
/* Start RGB & Tube Power PWM */
|
|
|
- TIM1_Init();
|
|
|
+ TIM1_Init();
|
|
|
TIM3_Init();
|
|
|
|
|
|
- //TIM14_Init();
|
|
|
+ //TIM14_Init();
|
|
|
|
|
|
//TIM16_Init();
|
|
|
//TIM17_Init();
|
|
@@ -63,14 +85,6 @@ void SystemClock_Config(void)
|
|
|
//RCC->CFGR &= RCC_CFGR_PPRE;
|
|
|
//RCC->CFGR |= 0x00000000U;
|
|
|
|
|
|
-#ifdef USES_SYSTICK
|
|
|
- /* Configure the SysTick to have interrupt in 1ms time base */
|
|
|
- SysTick->LOAD = (uint32_t)((24000000 / 1000) - 1UL); /* set reload register */
|
|
|
- SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
|
|
|
- SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
|
|
|
- SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */
|
|
|
-#endif
|
|
|
-
|
|
|
/* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */
|
|
|
SystemCoreClock = 24000000;
|
|
|
|
|
@@ -79,6 +93,70 @@ void SystemClock_Config(void)
|
|
|
RCC->CCIPR |= RCC_CCIPR_I2C1SEL_1;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * @brief GPIO Initialization Function
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+static void GPIO_Init(void)
|
|
|
+{
|
|
|
+ /* GPIO Ports Clock Enable */
|
|
|
+ RCC->IOPENR |= (RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN | RCC_IOPENR_GPIOCEN);
|
|
|
+
|
|
|
+ /* EXTI Line: falling, no pull, input */
|
|
|
+ // mode
|
|
|
+ EXTI->EMR1 &= ~(EXTI_IMR1_IM14);
|
|
|
+ EXTI->EMR1 |= EXTI_IMR1_IM14;
|
|
|
+ // TRIGGER FALLING
|
|
|
+ EXTI->FTSR1 &= ~(EXTI_IMR1_IM14);
|
|
|
+ EXTI->FTSR1 |= EXTI_IMR1_IM14;
|
|
|
+ // ?
|
|
|
+ EXTI->FTSR1 |= EXTI_IMR1_IM14;
|
|
|
+
|
|
|
+ /* EXTI interrupt init*/
|
|
|
+ NVIC_SetPriority(EXTI4_15_IRQn, 0);
|
|
|
+ NVIC_EnableIRQ(EXTI4_15_IRQn);
|
|
|
+
|
|
|
+ /* L0, L1, L2, L3 - IN-15 symbols control, PP out, high speed, pull down */
|
|
|
+ GPIO_SetPinMode(LC0_GPIO_Port, LC0_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinSpeed(LC0_GPIO_Port, LC0_Pin, GPIO_OSPEED_HI);
|
|
|
+ GPIO_SetPinPull(LC0_GPIO_Port, LC0_Pin, GPIO_PUPDR_DW);
|
|
|
+
|
|
|
+ GPIO_SetPinMode(LC1_GPIO_Port, LC1_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinSpeed(LC1_GPIO_Port, LC1_Pin, GPIO_OSPEED_HI);
|
|
|
+ GPIO_SetPinPull(LC1_GPIO_Port, LC1_Pin, GPIO_PUPDR_DW);
|
|
|
+
|
|
|
+ GPIO_SetPinMode(LC2_GPIO_Port, LC2_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinSpeed(LC2_GPIO_Port, LC2_Pin, GPIO_OSPEED_HI);
|
|
|
+ GPIO_SetPinPull(LC2_GPIO_Port, LC2_Pin, GPIO_PUPDR_DW);
|
|
|
+
|
|
|
+ GPIO_SetPinMode(LC3_GPIO_Port, LC3_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinSpeed(LC3_GPIO_Port, LC3_Pin, GPIO_OSPEED_HI);
|
|
|
+ GPIO_SetPinPull(LC3_GPIO_Port, LC3_Pin, GPIO_PUPDR_DW);
|
|
|
+
|
|
|
+ /* Pwer Shutdown: PP out, high speed, pull down */
|
|
|
+ GPIO_SetPinMode(SHDN_GPIO_Port, SHDN_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinSpeed(SHDN_GPIO_Port, SHDN_Pin, GPIO_OSPEED_HI);
|
|
|
+ GPIO_SetPinPull(SHDN_GPIO_Port, SHDN_Pin, GPIO_PUPDR_DW);
|
|
|
+
|
|
|
+ /* SPI Latch: OD out, high speed, no pull */
|
|
|
+ GPIO_SetPinMode(Latch_GPIO_Port, Latch_Pin, GPIO_MODE_OUT);
|
|
|
+ GPIO_SetPinOutputType(Latch_GPIO_Port, Latch_Pin, GPIO_OTYPE_OD);
|
|
|
+ GPIO_SetPinSpeed(Latch_GPIO_Port, Latch_Pin, GPIO_OSPEED_HI);
|
|
|
+
|
|
|
+ /* UART_Enable: PP out, low speed, no pull*/
|
|
|
+ GPIO_SetPinMode(UART_EN_GPIO_Port, UART_EN_Pin, GPIO_MODE_OUT);
|
|
|
+
|
|
|
+ /* UART_State: input, pull up */
|
|
|
+ GPIO_SetPinPull(UART_ST_GPIO_Port, UART_ST_Pin, GPIO_PUPDR_UP);
|
|
|
+
|
|
|
+ /* BTN1, BTN2, BTN3, BTN4: input, pull up */
|
|
|
+ GPIO_SetPinPull(BTN1_GPIO_Port, BTN1_Pin, GPIO_PUPDR_UP);
|
|
|
+ GPIO_SetPinPull(BTN2_GPIO_Port, BTN2_Pin, GPIO_PUPDR_UP);
|
|
|
+ GPIO_SetPinPull(BTN3_GPIO_Port, BTN3_Pin, GPIO_PUPDR_UP);
|
|
|
+ GPIO_SetPinPull(BTN4_GPIO_Port, BTN4_Pin, GPIO_PUPDR_UP);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* @brief TIM1 Initialization Function
|
|
|
* @param None
|