当前位置:   article > 正文

rom大小 stm32f205_最小的基于STM32F205VE的系统板程序与ST-Link固件

sinwealth 32f205p 80pin

/* Includes ------------------------------------------------------------------*/

#include "main.h"

#include "fatfs.h"

#include "sdio.h"

#include "gpio.h"

#include "fsmc.h"

/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include "stdlib.h"

#include "ILI9225.h"

#include "fonts.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 ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

FATFS fs;

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

/* USER CODE BEGIN PFP */

/* 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_SDIO_SD_Init();

MX_FATFS_Init();

MX_FSMC_Init();

/* USER CODE BEGIN 2 */

ILI9225_Init();

ILI9225_FillScreen(ILI9225_BLACK);

uint16_t delay = 100; // 为了展示方便而加的延时

HAL_Delay(delay);

FRESULT rst = f_mount(&fs, "0:", 1);

if (rst == FR_OK) {

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_9, GPIO_PIN_RESET);

ILI9225_WriteString(0, 0, "Mount drive : OK!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

}

else {

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET);

ILI9225_WriteString(0, 0, "Mount drive : Failed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

}

HAL_Delay(delay);

FILINFO fileInfo;

fileInfo.lfsize = 255;

fileInfo.lfname = malloc(255);

DIR root;

uint16_t y = 0;

rst = f_opendir(&root, "0:");

if (rst == FR_OK) {

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_9, GPIO_PIN_RESET);

ILI9225_WriteString(0, (y += 12), "Listing root files : ", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

ILI9225_WriteString(0, (y += 12), "--------------------", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

HAL_Delay(1000);

while (1) {

rst = f_readdir(&root, &fileInfo);

if (rst != FR_OK || (!fileInfo.fname[0] && !fileInfo.fname[0])) {

break;

}

ILI9225_WriteString(0, (y += 12), "\\", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

if (fileInfo.lfname[0]) {

ILI9225_WriteString(6, (y), fileInfo.lfname, FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

}

else {

ILI9225_WriteString(6, (y), fileInfo.fname, FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

}

HAL_Delay(delay);

}

}

else {

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET);

ILI9225_WriteString(0, 12, "Listing root files : Failed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

}

HAL_Delay(delay);

ILI9225_WriteString(0, (y += 12), "--------------------", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

ILI9225_WriteString(0, (y += 12), "Completed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

f_closedir(&root);

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1) {

/* 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 CPU, AHB and APB busses clocks

*/

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 = 20;

RCC_OscInitStruct.PLL.PLLN = 192;

RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

RCC_OscInitStruct.PLL.PLLQ = 5;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

/** Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|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;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)

{

Error_Handler();

}

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**

* @brief  This function is executed in case of error occurrence.

* @retval None

*/

void Error_Handler(void)

{

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/281384
推荐阅读
相关标签
  

闽ICP备14008679号