电子产业一站式赋能平台

PCB联盟网

搜索
查看: 41|回复: 0
收起左侧

单片机开发常用哪些编程语言?

[复制链接]

431

主题

431

帖子

4450

积分

四级会员

Rank: 4

积分
4450
发表于 2024-8-24 11:45:00 | 显示全部楼层 |阅读模式
关注+星标公众,不错过精彩内容作者 | strongerHuang微信公众号 | strongerHuang
随着物联网的普及,单片机现在的需求越来越大了。同时,随着单片机性能增强和资源的增多,单片机开发也不再局限汇编、C语言了。那么,你知道单片机开发常用哪些编程语言吗?
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、Rust语言说明:Rust本身并不是直接用于编写STM32单片机程序的常见语言,但你可以通过一些工具和库来实现。
    举例:用Rust语言写一段STM32单片机点灯程序。
  • #![no_std]  #![no_main]  #![feature(lang_items)]    extern crate cortex_m;  extern crate cortex_m_rt as rt;  extern crate stm32f1xx_hal as hal; // 注意:这里需要根据你的STM32型号选择合适的HAL库    use core::panic::PanicInfo;  use hal::prelude::*;  use hal::stm32;  use rt::entry;    // 语言项  #[lang = "start"]  fn start(_main: &() -> !, _argc: isize, _argv: *const *const u8) -> ! {      // 初始化HAL和CPU      let cp = cortex_m::Peripherals::take().unwrap();      let dp = stm32::Peripherals::take().unwrap();        let mut rcc = dp.RCC.constrain();      let mut gpioa = dp.GPIOA.split(&mut rcc.ahb);        // 假设LED连接在GPIOA的PIN5上      let mut led = gpioa.pa5.into_push_pull_output();        loop {          // 打开LED          led.set_high().unwrap();          // 延时一段时间(这里需要实现一个延时函数)          delay_ms(1000);            // 关闭LED          led.set_low().unwrap();          // 再次延时          delay_ms(1000);      }  }
    6、其他编程语言除了以上汇编、C语言、C++、Python、Rust语言,其实还有极少一些用Java语言,但JAVA需要运用虚拟机,需要在高性能的单片机上运行。
    还看到有用一种叫Ada的编程语言,据说主要用在在一些航空航天和军事应用中得到广泛应用,具有强大的静态类型检查和并发编程支持。
    除了上面说到的汇编、C语言、C++、Python语言,你还想到有哪些?或者你用过哪些编程语言开发单片机?
    ------------ END ------------

    0wpptuxmanc6403515738.gif

    0wpptuxmanc6403515738.gif


    ●专栏《嵌入式工具
    ●专栏《嵌入式开发》
    ●专栏《Keil教程》
    ●嵌入式专栏精选教程

    关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
    点击“阅读原文”查看更多分享。
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表