找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3085|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

最小的基于STM32F205VE的系統(tǒng)板程序與ST-Link固件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最小的基于STM32F205VE的系統(tǒng)板,與STM32F103Vx和STM32F407Vx兼容。
板載ST-Link V2.1,它集成了調(diào)試,串行端口,USB下載和集成。
新功能:
優(yōu)化的電路設(shè)計(jì),現(xiàn)在所有GPIO都映射到多達(dá)1個(gè)外設(shè),沒有IO沖突
優(yōu)化電路布局
添加了一組電源接頭連接到外圍設(shè)備
RBG燈現(xiàn)在使用運(yùn)放驅(qū)動(dòng)器(電壓跟隨器模式)來(lái)減少對(duì)IO輸出高頻的影響
添加EEPROM芯片(AT24C02 256Byte)以快速存儲(chǔ)應(yīng)用程序數(shù)據(jù)。不再需要使用內(nèi)部閃存來(lái)模擬EEPROM,從而減少了內(nèi)部閃存的磨損。
添加SPI-Flash以滿足持久性數(shù)據(jù)存儲(chǔ)的需求。
LCD接口已經(jīng)過重新設(shè)計(jì),保留了對(duì)市場(chǎng)上大多數(shù)成品模塊的支持,同時(shí)提高了可擴(kuò)展性,F(xiàn)在,它與16位和8位8080接口LCD屏幕模塊兼容。
跳線可以選擇EEPROM和SPI-FLASH來(lái)啟用或禁用
修復(fù)了一些錯(cuò)誤,現(xiàn)在更好地支持STM32F103Vx和STM32F407Vx。
增加了安裝孔,以方便定位和安裝。
優(yōu)化的絲網(wǎng)印刷,提示更清晰。
MCU功能:
32位ARM Context-M3內(nèi)核,頻率高達(dá)120MHz
512KB ROM + 128KB SRAM
14個(gè)計(jì)時(shí)器
三個(gè)12位ADC和兩個(gè)12位DAC
FSMC功能
系統(tǒng)板功能:
板載ST-Link V2.1
Micro-USB接口,500mA過流保護(hù)
BOOT0開關(guān)使用撥動(dòng)開關(guān),還有一個(gè)撥動(dòng)開關(guān),用于切換內(nèi)置/外部ST-Link
板載4個(gè)狀態(tài)指示燈LED,一個(gè)用于編程的通用RGB LED
與大多數(shù)小型顯示模塊兼容的接口
Micro-SD接口
USB-FS接口
3個(gè)按鈕,其中一個(gè)被重置,另外兩個(gè)是用戶按鈕
0.47F超級(jí)電容器,RTC供電
注意:您需要另一個(gè)ST-Link來(lái)刷新板上STM32F103CBT6的ST-Link Bootloader。固件在附件中。在進(jìn)行下載和編程后,通過ST-Link實(shí)用程序升級(jí)固件后,您可以使用板載ST-Link。功能。


單片機(jī)源程序如下:
  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; // 為了展示方便而加的延時(shí)
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序: STM32F205VE-SDCard.7z (791.89 KB, 下載次數(shù): 14)
bin文件: STlink.zip (9.31 KB, 下載次數(shù): 10)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表