浣跨敤STM32鍜岀劇绶氶€氫俊妯″妲嬪缓鐗╄伅缍叉噳鐢�

鐗╄伅缍诧紙IoT锛�鏄竴鍊嬪厖婊挎經鍔涘拰姗熸渻鐨勯牁鍩�锛岃畵鎴戝€戣兘澶犲湪鍚勭ó瑷倷涔嬮枔瀵︾従鏅鸿兘閫f帴鍜屾暩鎿氫氦鎻涖€傞€氶亷绲愬悎STM32寰帶鍒跺櫒鍜岀劇绶氶€氫俊妯″锛屾垜鍊戝彲浠ユ寤哄挤澶х殑鐗╄伅缍叉噳鐢�銆�鏈枃灏囦粙绱瑰浣曚娇鐢⊿TM32鍜岀劇绶氶€氫俊妯″妲嬪缓涓€鍊嬬啊鍠殑鐗╄伅缍叉噳鐢�锛屽苟鎻愪緵鐩告噳鐨勭ず渚嬩唬纰�銆�

涓€銆佺‖浠舵簴鍌�

鐐轰簡妲嬪缓涓€鍊嬬墿鑱恫鎳夌敤锛屾垜鍊戦渶瑕佷互涓嬬‖浠惰ō鍌欙細

1. STM32闁嬬櫦鏉匡細渚嬪STM32F4 Discovery鎴朣TM32 Nucleo绯诲垪銆�

2. 鐒$窔閫氫俊妯″锛氫緥濡侲SP8266 WiFi妯″鎴朣IM800L GPRS妯″銆�

3. 鍌虫劅鍣ㄦā濉婏細渚嬪婧害鍌虫劅鍣�銆佹繒搴﹀偝鎰熷櫒鎴栧厜绶氬偝鎰熷櫒锛屾牴鎿氬叿楂旈渶姹傞伕鎿�銆�

浜屻€佽粺浠舵簴鍌�

鐐轰簡绶ㄥ鍜岃瑭︾墿鑱恫鎳夌敤绋嬪簭锛屾垜鍊戦渶瑕佷互涓嬭粺浠跺伐鍏凤細

1. STM32CubeIDE锛氱敤浜庣法瀵拰瑾胯│STM32寰帶鍒跺櫒鐨勬噳鐢ㄧ▼搴�銆�

2. Arduino IDE锛氱敤浜庣法瀵拰瑾胯│鐒$窔閫氫俊妯″鐨勯﹨鍕曠▼搴�銆�

3. 鐩告噳鐨凷TM32鍜岀劇绶氶€氫俊妯″鐨勯﹨鍕曞韩鍜屽浐浠�銆�

涓夈€侀枊鐧兼椹�

1. 纭欢閫f帴锛氬皣鐒$窔閫氫俊妯″閫f帴鍒癝TM32闁嬬櫦鏉夸笂锛屾牴鎿氬叿楂旀ā濉婄殑寮曡叧瀹氱京鍜孲TM32闁嬬櫦鏉跨殑寮曡叧鍒嗛厤锛岄€f帴妯″鐨勯浕婧�銆佸湴绶氬強鏁告摎绶氥€�

2. STM32杌熶欢闁嬬櫦锛�

(a) 鍦⊿TM32CubeIDE涓壍寤轰竴鍊嬫柊鐨凷TM32闋呯洰锛岄伕鎿囬仼鍚堢殑寰帶鍒跺櫒鍨嬭櫉銆�

(b) 閰嶇疆STM32鐨勫紩鑵冲拰鏅傞悩瑷疆锛屽苟鏍规摎闇€瑕佹坊鍔犲叾浠栧瑷�銆�

(c) 浣跨敤鐩告噳鐨勯﹨鍕曞韩鍜屽浐浠�锛岀法瀵唬纰间締鍒濆鍖栫劇绶氶€氫俊妯″銆�

(d) 鍦ㄤ富寰挵涓畝鍙栧偝鎰熷櫒鏁告摎锛屽苟閫氶亷鐒$窔閫氫俊妯″灏囨暩鎿氱櫦閫佸埌涓€鍊嬮仩绋嬫湇鍕欏櫒鎴栧叾浠栫祩绔�銆�

(e) 鏍规摎闇€瑕佹坊鍔犲叾浠栧姛鑳�锛屽鏁告摎铏曠悊銆佺媭鎱嬬洠娓瓑銆�

3. 鐒$窔閫氫俊妯″椹呭嫊绋嬪簭闁嬬櫦锛�

(a) 鍦ˋrduino IDE涓壍寤轰竴鍊嬫柊鐨勯爡鐩紝閬告搰閬╁悎鐨勭劇绶氶€氫俊妯″鍨嬭櫉銆�

(b) 绶ㄥ浠g⒓渚嗗垵濮嬪寲閫氫俊妯″锛屽苟瑷疆鍏堕€f帴鍙冩暩锛屽WiFi缍茬怠鍚嶇ū鍜屽瘑纰笺€�

(c) 瀵︾従鏁告摎鐨勭櫦閫佸拰鎺ユ敹鍔熻兘锛屽彲浠ヤ娇鐢═CP/IP鍗旇鎴栧叾浠栭仼鐣剁殑鍗旇銆�

(d) 鏍规摎闇€瑕佹坊鍔犲叾浠栧姛鑳�锛屽閲嶉€f鍒�銆佹暩鎿氬姞瀵嗙瓑銆�

鍥涖€佺ず渚嬩唬纰�

浠ヤ笅鏄竴鍊嬬啊鍠殑绀轰緥浠g⒓锛屾紨绀哄浣曚娇鐢⊿TM32鍜岀劇绶氶€氫俊妯″妲嬪缓涓€鍊嬪熀浜嶹iFi鐨勭墿鑱恫鎳夌敤锛�

STM32浠g⒓锛�

```c
#include "stm32f4xx_hal.h"

void SystemClock_Config(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  // 鍒濆鍖朩iFi妯″

  while (1)
  {
    // 璁€鍙栧偝鎰熷櫒鏁告摎

    // 鐧奸€佹暩鎿氬埌閬犵▼鏈嶅嫏鍣�
  }
}

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  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 = 360;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  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_5) != HAL_OK)
  {
    Error_Handler();
  }
}
```

鐒$窔閫氫俊妯″椹呭嫊绋嬪簭浠g⒓锛�

```c
#include <ESP8266WiFi.h>

void setup()
{
  WiFi.begin("wifi_ssid", "wifi_password");

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }
}

void loop()
{
  // 鐧奸€佹暩鎿氬埌閬犵▼鏈嶅嫏鍣�
}
```

浠ヤ笂绀轰緥浠g⒓婕旂ず浜嗗浣曞湪STM32涓婂垵濮嬪寲鐒$窔閫氫俊妯″锛屽苟鍦ㄤ富寰挵涓笉鏂疯畝鍙栧偝鎰熷櫒鏁告摎骞堕€氶亷WiFi灏囨暩鎿氱櫦閫佸埌閬犵▼鏈嶅嫏鍣ㄣ€�

绲愯珫锛�

浣跨敤STM32鍜岀劇绶氶€氫俊妯″妲嬪缓鐗╄伅缍叉噳鐢ㄥ彲浠ュ公鍔╂垜鍊戝鐝捐ō鍌欎箣闁撶殑鏅鸿兘閫f帴鍜屾暩鎿氫氦鎻�銆傞€氶亷鍚堢悊鐨勭‖浠堕€f帴鍜岃粺浠堕枊鐧�锛屾垜鍊戝彲浠ユ寤哄挤澶х殑鐗╄伅缍叉噳鐢�銆�鍦ㄥ闅涢枊鐧间腑锛岄渶鏍规摎鍏烽珨闇€姹傞伕鐢ㄩ仼鍚堢殑纭欢瑷倷鍜岄﹨鍕曞韩锛屽苟閬靛惊鑹ソ鐨勫伐绋嬪韪愶紝纰轰繚鐗╄伅缍叉噳鐢ㄧ殑鍙潬鎬у拰瀹夊叏鎬�銆�

宓屽叆寮忕墿鑱恫鐨勫缈掍箣璺潪甯告极闀�锛屼笉灏戜汉鍥犵偤瀛哥繏璺窔涓嶅皪鎴栬€呭缈掑収瀹逛笉澶犲皥妤€岄尟澶遍珮钖猳ffer銆備笉閬庡垾鎿斿績锛屾垜鐐哄ぇ瀹舵暣鐞嗕簡涓€浠�150澶欸鐨勫缈掕硣婧愶紝鍩烘湰涓婃兜钃嬩簡宓屽叆寮忕墿鑱恫瀛哥繏鐨勬墍鏈夊収瀹�銆�榛炴搳閫欓噷锛�0鍏冮牁鍙栧缈掕硣婧愶紝璁撲綘鐨勫缈掍箣璺洿鍔犻爢鏆�锛�瑷樺緱榛炶磰銆侀棞娉ㄣ€佹敹钘�銆佽綁鐧煎摝锛�

the end
代码语言

瑭曡珫锛�0锛�