X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=demos%2Fstm32f429_disco%2Fhw_init.c;fp=demos%2Fstm32f429_disco%2Fhw_init.c;h=0000000000000000000000000000000000000000;hb=26c97621007a91216a3067148982a416beed712e;hp=c3135aa48912e2c213d9a8c323eebb4e6d8ca9b5;hpb=d5cb40f453a0fd873dbcee924d120a0e683ffef2;p=lwext4.git diff --git a/demos/stm32f429_disco/hw_init.c b/demos/stm32f429_disco/hw_init.c deleted file mode 100644 index c3135aa..0000000 --- a/demos/stm32f429_disco/hw_init.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2013 Grzegorz Kostka (kostka.grzegorz@gmail.com) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -USBH_HandleTypeDef hUSB_Host; - -static bool msc_connected = false; -static bool enum_done = false; - -static void USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id) -{ - switch (id) { - case HOST_USER_SELECT_CONFIGURATION: - break; - - case HOST_USER_DISCONNECTION: - msc_connected = false; - enum_done = false; - break; - - case HOST_USER_CLASS_ACTIVE: - enum_done = true; - break; - - case HOST_USER_CONNECTION: - msc_connected = true; - break; - default: - break; - } -} - -#define LCD_FRAME_BUFFER_LAYER0 (LCD_FRAME_BUFFER + 0x130000) -#define LCD_FRAME_BUFFER_LAYER1 LCD_FRAME_BUFFER -#define CONVERTED_FRAME_BUFFER (LCD_FRAME_BUFFER + 0x260000) - -static void SystemClock_Config(void) -{ - RCC_ClkInitTypeDef RCC_ClkInitStruct; - RCC_OscInitTypeDef RCC_OscInitStruct; - - /* Enable Power Control clock */ - __PWR_CLK_ENABLE(); - - /* The voltage scaling allows optimizing the power consumption when the - device is - clocked below the maximum system frequency, to update the voltage - scaling value - regarding system frequency refer to product datasheet. */ - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Enable HSE Oscillator and activate PLL with HSE as source */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 8; - RCC_OscInitStruct.PLL.PLLN = 336; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - HAL_RCC_OscConfig(&RCC_OscInitStruct); - - /* Select PLL as system clock source and configure the HCLK, PCLK1 and - PCLK2 - clocks dividers */ - RCC_ClkInitStruct.ClockType = - (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | - RCC_CLOCKTYPE_PCLK2); - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); -} - -void hw_init(void) -{ - SystemInit(); - HAL_Init(); - SystemClock_Config(); - - /* Initialize the LEDs */ - BSP_LED_Init(LED3); - BSP_LED_Init(LED4); - - SysTick_Config(CFG_CCLK_FREQ / 1000); - - USBH_Init(&hUSB_Host, USBH_UserProcess, 0); - USBH_RegisterClass(&hUSB_Host, USBH_MSC_CLASS); - USBH_Start(&hUSB_Host); - - BSP_LCD_Init(); - - /* Layer2 Init */ - BSP_LCD_LayerDefaultInit(1, LCD_FRAME_BUFFER_LAYER1); - BSP_LCD_SelectLayer(1); - BSP_LCD_Clear(LCD_COLOR_WHITE); - BSP_LCD_SetColorKeying(1, LCD_COLOR_WHITE); - BSP_LCD_SetLayerVisible(1, DISABLE); - - /* Layer1 Init */ - BSP_LCD_LayerDefaultInit(0, LCD_FRAME_BUFFER_LAYER0); - BSP_LCD_SelectLayer(0); - BSP_LCD_DisplayOn(); - BSP_LCD_Clear(LCD_COLOR_BLACK); - - LCD_LOG_Init(); - LCD_LOG_SetHeader((uint8_t *)"STM32 LWEXT4 DEMO "); -} - -void hw_usb_process(void) { USBH_Process(&hUSB_Host); } - -bool hw_usb_connected(void) { return msc_connected; } - -bool hw_usb_enum_done(void) { return enum_done; } - -void hw_led_red(bool on) { on ? BSP_LED_On(LED4) : BSP_LED_Off(LED4); } - -void hw_led_green(bool on) { on ? BSP_LED_On(LED3) : BSP_LED_Off(LED3); } - -uint32_t tim_get_ms(void) { return HAL_GetTick(); } - -uint64_t tim_get_us(void) -{ - return (uint64_t)HAL_GetTick() * 1000 + - ((SysTick->LOAD - SysTick->VAL) * 1000) / SysTick->LOAD; -} - -void tim_wait_ms(uint32_t ms) -{ - volatile uint32_t t = HAL_GetTick(); - - while ((t + ms) > HAL_GetTick()) - ; -}