加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

單片機(jī)主流開發(fā)語言有哪些?

2023/12/04
4340
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

微信公眾號 | strongerHuang

單片機(jī)有很多叫法,MCU(Microcontroller Unit,微控制單元),又叫微控制器等。

隨著物聯(lián)網(wǎng)的普及,單片機(jī)現(xiàn)在的需求越來越大了。同時,隨著單片機(jī)性能和資源的增強(qiáng),開發(fā)單片機(jī)的語言也越來越多了。

那么,你知道單片機(jī)目前支持哪些主流開發(fā)語言嗎?

1、匯編語言說明:匯編語言是一種底層(低級)的、與硬件緊密相關(guān)的編程語言。它直接映射到機(jī)器語言,允許程序員直接控制硬件資源。

舉例:用匯編語言寫一段51單片機(jī)(AT89S52)點(diǎn)燈程序。

ORG 0x0000  ; 程序起始地址
MOV P1, #0x00  ; 初始化P1口為低電平
MAIN:    MOV P1.0, #1  ; 點(diǎn)亮LED,將P1.0置為高電平    ACALL DELAY   ; 調(diào)用延時子程序    MOV P1.0, #0  ; 熄滅LED,將P1.0置為低電平    ACALL DELAY   ; 調(diào)用延時子程序    SJMP MAIN     ; 無限循環(huán)
DELAY:    ; 延時子程序    MOV R2, #50DELAY_LOOP:    DJNZ R2, DELAY_LOOP????RET

2、C語言說明:C語言是最常用的一種用于單片機(jī)的開發(fā)語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機(jī),通常使用嵌入式C來進(jìn)行開發(fā)。

舉例:用C語言寫一段STM32單片機(jī)點(diǎn)燈程序。

#include?"stm32f4xx_hal.h"
int main(void){  HAL_Init();
  SystemClock_Config();
  __HAL_RCC_GPIOA_CLK_ENABLE();  // 啟用GPIOA時鐘
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  // 配置GPIO引腳  GPIO_InitStruct.Pin = GPIO_PIN_5;      // 假設(shè)LED連接到GPIOA的引腳5  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽輸出  GPIO_InitStruct.Pull = GPIO_NOPULL;       // 無上下拉  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  while (1)  {    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 點(diǎn)亮LED    HAL_Delay(1000); // 延時1秒
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 關(guān)閉LED    HAL_Delay(1000); // 延時1秒  }}

3、C++語言說明:C++是一種基于C語言的面向?qū)ο缶幊陶Z言,盡管在單片機(jī)領(lǐng)域使用相對較少,但還是一些現(xiàn)代的單片機(jī)也開始支持C++。

舉例:用C++語言寫一段STM32單片機(jī)點(diǎn)燈程序。

int?main(void){  LED_Class LED1(GPIOF, GPIO_Pin_7, RCC_APB2Periph_GPIOF);  LED_Class LED2(GPIOF, GPIO_Pin_8, RCC_APB2Periph_GPIOF);
  LED1.Init();  LED2.Init();
  while(1)  {    LED1.Open();    LED2.Open();    Delay(10);
    LED1.Close();    LED2.Close();    Delay(10);  }}

當(dāng)然,這里定義的類和調(diào)用的函數(shù)接口,請看我之前推送的文章《單片機(jī)能用C++開發(fā)嗎?》。

4、Python語言說明:Python雖然不常用于傳統(tǒng)的單片機(jī)編程,但一些微控制器如MicroPython和CircuitPython支持Python語言,使得開發(fā)更加簡化。

舉例:用MicroPython語言寫一段單片機(jī)點(diǎn)燈程序。

import?machineimport time
led_pin = machine.Pin(2, machine.Pin.OUT)  # 假設(shè)LED連接到引腳2
while True:    led_pin.on()   # 點(diǎn)亮LED    time.sleep(1)  # 延時1秒
    led_pin.off()  # 關(guān)閉LED    time.sleep(1)  # 延時1秒

說明一下,這里代碼使用的MicroPython,而不是標(biāo)準(zhǔn)的Python。確保你的開發(fā)板支持MicroPython,并已正確安裝和配置。在實際的嵌入式開發(fā)中,你可能還需要考慮硬件配置、時鐘設(shè)置以及其他底層細(xì)節(jié)。

5、其他編程語言

除了以上匯編、C語言、C++、Python語言,其實還有極少一些用Java語言,但JAVA需要運(yùn)用虛擬機(jī),需要在高性能的單片機(jī)上運(yùn)行。

還看到有用一種叫Ada的編程語言,據(jù)說主要用在在一些航空航天和軍事應(yīng)用中得到廣泛應(yīng)用,具有強(qiáng)大的靜態(tài)類型檢查和并發(fā)編程支持。

除了上面說到的匯編、C語言、C++、Python語言,你還想到有哪些?或者你用過哪些編程語言開發(fā)單片機(jī)?

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
HCNW3120#300 1 Avago Technologies 1 CHANNEL LOGIC OUTPUT OPTOCOUPLER, 0.300 INCH, SURFACE MOUNT, DIP-8
$4.78 查看
FTLX8571D3BCL 1 Finisar Corporation Transceiver, 840nm Min, 860nm Max, 10000Mbps(Tx), 10000Mbps(Rx), LC Connector, Board/panel Mount, ROHS COMPLIANT PACKAGE-20
$77.85 查看
ECS-250-20-33-DU-TR 1 ECS International Inc Parallel - Fundamental Quartz Crystal, 25MHz Nom, SMD, 4 PIN
$0.86 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

作者黃工,從事嵌入式軟件開發(fā)工作8年有余,高級嵌入式軟件工程師,業(yè)余維護(hù)公眾號『strongerHuang』,分享嵌入式軟硬件、單片機(jī)、物聯(lián)網(wǎng)等內(nèi)容。