加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

单片机主流开发语言有哪些?

2023/12/04
4341
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

微信公众号 | strongerHuang

单片机有很多叫法,MCU(Microcontroller Unit,微控制单元),又叫微控制器等。

随着物联网的普及,单片机现在的需求越来越大了。同时,随着单片机性能和资源的增强,开发单片机的语言也越来越多了。

那么,你知道单片机目前支持哪些主流开发语言吗?

1、汇编语言说明:汇编语言是一种底层(低级)的、与硬件紧密相关的编程语言。它直接映射到机器语言,允许程序员直接控制硬件资源。

举例:用汇编语言写一段51单片机(AT89S52)点灯程序。

ORG 0x0000  ; 程序起始地址
MOV P1, #0x00  ; 初始化P1口为低电平
MAIN:    MOV P1.0, #1  ; 点亮LED,将P1.0置为高电平    ACALL DELAY   ; 调用延时子程序    MOV P1.0, #0  ; 熄灭LED,将P1.0置为低电平    ACALL DELAY   ; 调用延时子程序    SJMP MAIN     ; 无限循环
DELAY:    ; 延时子程序    MOV R2, #50DELAY_LOOP:    DJNZ R2, DELAY_LOOP    RET

2、C语言说明:C语言是最常用的一种用于单片机的开发语言,也是一种高级编程语言,具有较好的可移植性和可读性。对于单片机,通常使用嵌入式C来进行开发。

举例:用C语言写一段STM32单片机点灯程序。

#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;      // 假设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); // 点亮LED    HAL_Delay(1000); // 延时1秒
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 关闭LED    HAL_Delay(1000); // 延时1秒  }}

3、C++语言说明:C++是一种基于C语言的面向对象编程语言,尽管在单片机领域使用相对较少,但还是一些现代的单片机也开始支持C++。

举例:用C++语言写一段STM32单片机点灯程序。

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

当然,这里定义的类和调用的函数接口,请看我之前推送的文章《单片机能用C++开发吗?》。

4、Python语言说明:Python虽然不常用于传统的单片机编程,但一些微控制器如MicroPython和CircuitPython支持Python语言,使得开发更加简化。

举例:用MicroPython语言写一段单片机点灯程序。

import machineimport time
led_pin = machine.Pin(2, machine.Pin.OUT)  # 假设LED连接到引脚2
while True:    led_pin.on()   # 点亮LED    time.sleep(1)  # 延时1秒
    led_pin.off()  # 关闭LED    time.sleep(1)  # 延时1秒

说明一下,这里代码使用的MicroPython,而不是标准的Python。确保你的开发板支持MicroPython,并已正确安装和配置。在实际的嵌入式开发中,你可能还需要考虑硬件配置、时钟设置以及其他底层细节。

5、其他编程语言

除了以上汇编、C语言、C++、Python语言,其实还有极少一些用Java语言,但JAVA需要运用虚拟机,需要在高性能的单片机上运行。

还看到有用一种叫Ada的编程语言,据说主要用在在一些航空航天和军事应用中得到广泛应用,具有强大的静态类型检查和并发编程支持。

除了上面说到的汇编、C语言、C++、Python语言,你还想到有哪些?或者你用过哪些编程语言开发单片机?

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
NC7WZ16P6X 1 Rochester Electronics LLC LVC/LCX/Z SERIES, DUAL 1-INPUT NON-INVERT GATE, PDSO6, 1.25 MM, ROHS COMPLIANT, EIAJ, SC-88A, SC-70, 6 PIN
$0.21 查看
AT27C512R-70PU 1 Microchip Technology Inc IC OTP 512KBIT 70NS 28DIP

ECAD模型

下载ECAD模型
$3.43 查看
NC7WZ07P6X 1 Fairchild Semiconductor Corporation Buffer, LVC/LCX/Z Series, 2-Func, 1-Input, CMOS, PDSO6, 1.25 MM, EIAJ, SC-88, SC-70, 6 PIN
$0.28 查看

相关推荐

电子产业图谱

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。