找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2255|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
最小的基于STM32F205VE的系统板,与STM32F103Vx和STM32F407Vx兼容。
板载ST-Link V2.1,它集成了调试,串行端口,USB下载和集成。
新功能:
优化的电路设计,现在所有GPIO都映射到多达1个外设,没有IO冲突
优化电路布局
添加了一组电源接头连接到外围设备
RBG灯现在使用运放驱动器(电压跟随器模式)来减少对IO输出高频的影响
添加EEPROM芯片(AT24C02 256Byte)以快速存储应用程序数据。不再需要使用内部闪存来模拟EEPROM,从而减少了内部闪存的磨损。
添加SPI-Flash以满足持久性数据存储的需求。
LCD接口已经过重新设计,保留了对市场上大多数成品模块的支持,同时提高了可扩展性。现在,它与16位和8位8080接口LCD屏幕模块兼容。
跳线可以选择EEPROM和SPI-FLASH来启用或禁用
修复了一些错误,现在更好地支持STM32F103Vx和STM32F407Vx。
增加了安装孔,以方便定位和安装。
优化的丝网印刷,提示更清晰。
MCU功能:
32位ARM Context-M3内核,频率高达120MHz
512KB ROM + 128KB SRAM
14个计时器
三个12位ADC和两个12位DAC
FSMC功能
系统板功能:
板载ST-Link V2.1
Micro-USB接口,500mA过流保护
BOOT0开关使用拨动开关,还有一个拨动开关,用于切换内置/外部ST-Link
板载4个状态指示灯LED,一个用于编程的通用RGB LED
与大多数小型显示模块兼容的接口
Micro-SD接口
USB-FS接口
3个按钮,其中一个被重置,另外两个是用户按钮
0.47F超级电容器,RTC供电
注意:您需要另一个ST-Link来刷新板上STM32F103CBT6的ST-Link Bootloader。固件在附件中。在进行下载和编程后,通过ST-Link实用程序升级固件后,您可以使用板载ST-Link。功能。


单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "fatfs.h"
  4. #include "sdio.h"
  5. #include "gpio.h"
  6. #include "fsmc.h"

  7. /* Private includes ----------------------------------------------------------*/
  8. /* USER CODE BEGIN Includes */
  9. #include "stdlib.h"
  10. #include "ILI9225.h"
  11. #include "fonts.h"
  12. /* USER CODE END Includes */

  13. /* Private typedef -----------------------------------------------------------*/
  14. /* USER CODE BEGIN PTD */

  15. /* USER CODE END PTD */

  16. /* Private define ------------------------------------------------------------*/
  17. /* USER CODE BEGIN PD */

  18. /* USER CODE END PD */

  19. /* Private macro -------------------------------------------------------------*/
  20. /* USER CODE BEGIN PM */

  21. /* USER CODE END PM */

  22. /* Private variables ---------------------------------------------------------*/

  23. /* USER CODE BEGIN PV */

  24. FATFS fs;
  25. /* USER CODE END PV */

  26. /* Private function prototypes -----------------------------------------------*/
  27. void SystemClock_Config(void);
  28. /* USER CODE BEGIN PFP */

  29. /* USER CODE END PFP */

  30. /* Private user code ---------------------------------------------------------*/
  31. /* USER CODE BEGIN 0 */

  32. /* USER CODE END 0 */

  33. /**
  34.   * @brief  The application entry point.
  35.   * @retval int
  36.   */
  37. int main(void)
  38. {
  39.         /* USER CODE BEGIN 1 */

  40.         /* USER CODE END 1 */

  41.         /* MCU Configuration--------------------------------------------------------*/

  42.         /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  43.         HAL_Init();

  44.         /* USER CODE BEGIN Init */

  45.         /* USER CODE END Init */

  46.         /* Configure the system clock */
  47.         SystemClock_Config();

  48.         /* USER CODE BEGIN SysInit */

  49.         /* USER CODE END SysInit */

  50.         /* Initialize all configured peripherals */
  51.         MX_GPIO_Init();
  52.         MX_SDIO_SD_Init();
  53.         MX_FATFS_Init();
  54.         MX_FSMC_Init();
  55.         /* USER CODE BEGIN 2 */

  56.         ILI9225_Init();
  57.         ILI9225_FillScreen(ILI9225_BLACK);
  58.         uint16_t delay = 100; // 为了展示方便而加的延时
  59.         HAL_Delay(delay);
  60.         FRESULT rst = f_mount(&fs, "0:", 1);
  61.         if (rst == FR_OK) {
  62.                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_9, GPIO_PIN_RESET);
  63.                 ILI9225_WriteString(0, 0, "Mount drive : OK!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  64.         }
  65.         else {
  66.                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET);
  67.                 ILI9225_WriteString(0, 0, "Mount drive : Failed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  68.         }
  69.         HAL_Delay(delay);
  70.         FILINFO fileInfo;
  71.         fileInfo.lfsize = 255;
  72.         fileInfo.lfname = malloc(255);
  73.         DIR root;
  74.         uint16_t y = 0;
  75.         rst = f_opendir(&root, "0:");
  76.         if (rst == FR_OK) {
  77.                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_9, GPIO_PIN_RESET);
  78.                 ILI9225_WriteString(0, (y += 12), "Listing root files : ", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  79.                 ILI9225_WriteString(0, (y += 12), "--------------------", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  80.                 HAL_Delay(1000);
  81.                 while (1) {
  82.                         rst = f_readdir(&root, &fileInfo);
  83.                         if (rst != FR_OK || (!fileInfo.fname[0] && !fileInfo.fname[0])) {
  84.                                 break;
  85.                         }
  86.                         ILI9225_WriteString(0, (y += 12), "\\", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  87.                         if (fileInfo.lfname[0]) {
  88.                                 ILI9225_WriteString(6, (y), fileInfo.lfname, FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  89.                         }
  90.                         else {
  91.                                 ILI9225_WriteString(6, (y), fileInfo.fname, FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  92.                         }
  93.                         HAL_Delay(delay);
  94.                 }
  95.         }
  96.         else {
  97.                 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET);
  98.                 ILI9225_WriteString(0, 12, "Listing root files : Failed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  99.         }
  100.         HAL_Delay(delay);
  101.         ILI9225_WriteString(0, (y += 12), "--------------------", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);
  102.         ILI9225_WriteString(0, (y += 12), "Completed!", FONT_SONG_6X12, ILI9225_WHITE, ILI9225_BLACK);

  103.         f_closedir(&root);
  104.         /* USER CODE END 2 */

  105.         /* Infinite loop */
  106.         /* USER CODE BEGIN WHILE */
  107.         while (1) {
  108.                 /* USER CODE END WHILE */

  109.                 /* USER CODE BEGIN 3 */
  110.         }
  111.         /* USER CODE END 3 */
  112. }

  113. /**
  114.   * @brief System Clock Configuration
  115.   * @retval None
  116.   */
  117. void SystemClock_Config(void)
  118. {
  119.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  120.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  121.   /** Initializes the CPU, AHB and APB busses clocks
  122.   */
  123.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  124.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  125.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  126.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  127.   RCC_OscInitStruct.PLL.PLLM = 20;
  128.   RCC_OscInitStruct.PLL.PLLN = 192;
  129.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  130.   RCC_OscInitStruct.PLL.PLLQ = 5;
  131.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  132.   {
  133.     Error_Handler();
  134.   }
  135.   /** Initializes the CPU, AHB and APB busses clocks
  136.   */
  137.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  138.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  139.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  140.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  141.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  142.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  143.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
  144.   {
  145.     Error_Handler();
  146.   }
  147. }

  148. /* USER CODE BEGIN 4 */

  149. /* USER CODE END 4 */

  150. /**
  151.   * @brief  This function is executed in case of error occurrence.
  152.   * @retval None
  153.   */
  154. void Error_Handler(void)
  155. {
  156. ……………………

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

所有资料51hei提供下载:
程序: STM32F205VE-SDCard.7z (791.89 KB, 下载次数: 14)
bin文件: STlink.zip (9.31 KB, 下载次数: 10)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表