Cortex-M3 (NXP LPC1788)之启动代码分析

发布者:EtherealGlow最新更新时间:2016-05-26 来源: eefocus关键字:Cortex-M3  NXP  LPC1788  启动代码 手机看文章 扫描二维码
随时随地手机看文章
      在Keil uVision4中新建一个基于NXP1788的工程后,会提示添加启动汇编代码startup_LPC177x_8x.S。该文件进行从汇编到C语言运行环境的初始化工作。

 

  1. ;/***************************************************************************** 
  2. ; * @file:    startup_LPC177x_8x.s 
  3. ; * @purpose: CMSIS Cortex-M3 Core Device Startup File 
  4. ; *           for the NXP LPC177x_8x Device Series  
  5. ; * @version: V1.20 
  6. ; * @date:    07. October 2010 
  7. ; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ 
  8. ; * 
  9. ; * Copyright (C) 2010 ARM Limited. All rights reserved. 
  10. ; * ARM Limited (ARM) is supplying this software for use with Cortex-M3 
  11. ; * processor based microcontrollers.  This file can be freely distributed 
  12. ; * within development tools that are supporting such ARM based processors. 
  13. ; * 
  14. ; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED 
  15. ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF 
  16. ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. 
  17. ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR 
  18. ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. 
  19. ; * 
  20. ; *****************************************************************************/  
  21.   
  22.   
  23.  Stack Configuration  
  24. ;    Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>  
  25. ;   
  26.   
  27. Stack_Size      EQU     0x00000200  
  28.   
  29.                 AREA    STACK, NOINIT, READWRITE, ALIGN=3  
  30. Stack_Mem       SPACE   Stack_Size  
  31. __initial_sp  
  32.   
  33.   
  34.  Heap Configuration  
  35. ;     Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>  
  36. ;   
  37.   
  38. Heap_Size       EQU     0x00000400  
  39.   
  40.                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3  
  41. __heap_base  
  42. Heap_Mem        SPACE   Heap_Size  
  43. __heap_limit  
  44.   
  45.   
  46.                 PRESERVE8  
  47.                 THUMB  
  48.   
  49.   
  50. ; Vector Table Mapped to Address 0 at Reset  
  51.   
  52.                 AREA    RESET, DATA, READONLY  
  53.                 EXPORT  __Vectors  
  54.   
  55. __Vectors       DCD     __initial_sp              ; Top of Stack  
  56.                 DCD     Reset_Handler             ; Reset Handler  
  57.                 DCD     NMI_Handler               ; NMI Handler  
  58.                 DCD     HardFault_Handler         ; Hard Fault Handler  
  59.                 DCD     MemManage_Handler         ; MPU Fault Handler  
  60.                 DCD     BusFault_Handler          ; Bus Fault Handler  
  61.                 DCD     UsageFault_Handler        ; Usage Fault Handler  
  62.                 DCD     0                         ; Reserved  
  63.                 DCD     0                         ; Reserved  
  64.                 DCD     0                         ; Reserved  
  65.                 DCD     0                         ; Reserved  
  66.                 DCD     SVC_Handler               ; SVCall Handler  
  67.                 DCD     DebugMon_Handler          ; Debug Monitor Handler  
  68.                 DCD     0                         ; Reserved  
  69.                 DCD     PendSV_Handler            ; PendSV Handler  
  70.                 DCD     SysTick_Handler           ; SysTick Handler  
  71.   
  72.                 ; External Interrupts  
  73.                 DCD     WDT_IRQHandler            ; 16: Watchdog Timer  
  74.                 DCD     TIMER0_IRQHandler         ; 17: Timer0  
  75.                 DCD     TIMER1_IRQHandler         ; 18: Timer1  
  76.                 DCD     TIMER2_IRQHandler         ; 19: Timer2  
  77.                 DCD     TIMER3_IRQHandler         ; 20: Timer3  
  78.                 DCD     UART0_IRQHandler          ; 21: UART0  
  79.                 DCD     UART1_IRQHandler          ; 22: UART1  
  80.                 DCD     UART2_IRQHandler          ; 23: UART2  
  81.                 DCD     UART3_IRQHandler          ; 24: UART3  
  82.                 DCD     PWM1_IRQHandler           ; 25: PWM1  
  83.                 DCD     I2C0_IRQHandler           ; 26: I2C0  
  84.                 DCD     I2C1_IRQHandler           ; 27: I2C1  
  85.                 DCD     I2C2_IRQHandler           ; 28: I2C2  
  86.                 DCD     SPIFI_IRQHandler          ; 29: SPIFI  
  87.                 DCD     SSP0_IRQHandler           ; 30: SSP0  
  88.                 DCD     SSP1_IRQHandler           ; 31: SSP1  
  89.                 DCD     PLL0_IRQHandler           ; 32: PLL0 Lock (Main PLL)  
  90.                 DCD     RTC_IRQHandler            ; 33: Real Time Clock  
  91.                 DCD     EINT0_IRQHandler          ; 34: External Interrupt 0  
  92.                 DCD     EINT1_IRQHandler          ; 35: External Interrupt 1  
  93.                 DCD     EINT2_IRQHandler          ; 36: External Interrupt 2  
  94.                 DCD     EINT3_IRQHandler          ; 37: External Interrupt 3  
  95.                 DCD     ADC_IRQHandler            ; 38: A/D Converter  
  96.                 DCD     BOD_IRQHandler            ; 39: Brown-Out Detect  
  97.                 DCD     USB_IRQHandler            ; 40: USB  
  98.                 DCD     CAN_IRQHandler            ; 41: CAN  
  99.                 DCD     DMA_IRQHandler            ; 42: General Purpose DMA  
  100.                 DCD     I2S_IRQHandler            ; 43: I2S  
  101.                 DCD     ENET_IRQHandler           ; 44: Ethernet  
  102.                 DCD     MCI_IRQHandler            ; 45: SD/MMC card I/F  
  103.                 DCD     MCPWM_IRQHandler          ; 46: Motor Control PWM  
  104.                 DCD     QEI_IRQHandler            ; 47: Quadrature Encoder Interface  
  105.                 DCD     PLL1_IRQHandler           ; 48: PLL1 Lock (USB PLL)  
  106.                 DCD     USBActivity_IRQHandler    ; 49: USB Activity interrupt to wakeup  
  107.                 DCD     CANActivity_IRQHandler    ; 50: CAN Activity interrupt to wakeup  
  108.                 DCD     UART4_IRQHandler          ; 51: UART4  
  109.                 DCD     SSP2_IRQHandler           ; 52: SSP2  
  110.                 DCD     LCD_IRQHandler            ; 53: LCD  
  111.                 DCD     GPIO_IRQHandler           ; 54: GPIO  
  112.                 DCD     PWM0_IRQHandler           ; 55: PWM0  
  113.                 DCD     EEPROM_IRQHandler         ; 56: EEPROM  
  114.   
  115.   
  116.                 IF      :LNOT::DEF:NO_CRP  
  117.                 AREA    |.ARM.__at_0x02FC|, CODE, READONLY  
  118. CRP_Key         DCD     0xFFFFFFFF  
  119.                 ENDIF  
  120.   
  121.   
  122.                 AREA    |.text|, CODE, READONLY  
  123.   
  124.   
  125. ; Reset Handler  
  126.   
  127. Reset_Handler   PROC  
  128.                 EXPORT  Reset_Handler             [WEAK]  
  129.                 IMPORT  SystemInit  
  130.                 IMPORT  __main  
  131.                 LDR     R0, =SystemInit  
  132.                 BLX     R0  
  133.                 LDR     R0, =__main  
  134.                 BX      R0  
  135.                 ENDP  
  136.   
  137.   
  138. ; Dummy Exception Handlers (infinite loops which can be modified)  
  139.   
  140. NMI_Handler     PROC  
  141.                 EXPORT  NMI_Handler               [WEAK]  
  142.                 B       .  
  143.                 ENDP  
  144. HardFault_Handler\  
  145.                 PROC  
  146.                 EXPORT  HardFault_Handler         [WEAK]  
  147.                 B       .  
  148.                 ENDP  
  149. MemManage_Handler\  
  150.                 PROC  
  151.                 EXPORT  MemManage_Handler         [WEAK]  
  152.                 B       .  
  153.                 ENDP  
  154. BusFault_Handler\  
  155.                 PROC  
  156.                 EXPORT  BusFault_Handler          [WEAK]  
  157.                 B       .  
  158.                 ENDP  
  159. UsageFault_Handler\  
  160.                 PROC  
  161.                 EXPORT  UsageFault_Handler        [WEAK]  
  162.                 B       .  
  163.                 ENDP  
  164. SVC_Handler     PROC  
  165.                 EXPORT  SVC_Handler               [WEAK]  
  166.                 B       .  
  167.                 ENDP  
  168. DebugMon_Handler\  
  169.                 PROC  
  170.                 EXPORT  DebugMon_Handler          [WEAK]  
  171.                 B       .  
  172.                 ENDP  
  173. PendSV_Handler  PROC  
  174.                 EXPORT  PendSV_Handler            [WEAK]  
  175.                 B       .  
  176.                 ENDP  
  177. SysTick_Handler PROC  
  178.                 EXPORT  SysTick_Handler           [WEAK]  
  179.                 B       .  
  180.                 ENDP  
  181.   
  182. Default_Handler PROC  
  183.   
  184.                 EXPORT  WDT_IRQHandler            [WEAK]  
  185.                 EXPORT  TIMER0_IRQHandler         [WEAK]  
  186.                 EXPORT  TIMER1_IRQHandler         [WEAK]  
  187.                 EXPORT  TIMER2_IRQHandler         [WEAK]  
  188.                 EXPORT  TIMER3_IRQHandler         [WEAK]  
  189.                 EXPORT  UART0_IRQHandler          [WEAK]  
  190.                 EXPORT  UART1_IRQHandler          [WEAK]  
  191.                 EXPORT  UART2_IRQHandler          [WEAK]  
  192.                 EXPORT  UART3_IRQHandler          [WEAK]  
  193.                 EXPORT  PWM1_IRQHandler           [WEAK]  
  194.                 EXPORT  I2C0_IRQHandler           [WEAK]  
  195.                 EXPORT  I2C1_IRQHandler           [WEAK]  
  196.                 EXPORT  I2C2_IRQHandler           [WEAK]  
  197.                 EXPORT  SPIFI_IRQHandler          [WEAK]  
  198.                 EXPORT  SSP0_IRQHandler           [WEAK]  
  199.                 EXPORT  SSP1_IRQHandler           [WEAK]  
  200.                 EXPORT  PLL0_IRQHandler           [WEAK]  
  201.                 EXPORT  RTC_IRQHandler            [WEAK]  
  202.                 EXPORT  EINT0_IRQHandler          [WEAK]  
  203.                 EXPORT  EINT1_IRQHandler          [WEAK]  
  204.                 EXPORT  EINT2_IRQHandler          [WEAK]  
  205.                 EXPORT  EINT3_IRQHandler          [WEAK]  
  206.                 EXPORT  ADC_IRQHandler            [WEAK]  
  207.                 EXPORT  BOD_IRQHandler            [WEAK]  
  208.                 EXPORT  USB_IRQHandler            [WEAK]  
  209.                 EXPORT  CAN_IRQHandler            [WEAK]  
  210.                 EXPORT  DMA_IRQHandler            [WEAK]  
  211.                 EXPORT  I2S_IRQHandler            [WEAK]  
  212.                 EXPORT  ENET_IRQHandler           [WEAK]  
  213.                 EXPORT  MCI_IRQHandler            [WEAK]  
  214.                 EXPORT  MCPWM_IRQHandler          [WEAK]  
  215.                 EXPORT  QEI_IRQHandler            [WEAK]  
  216.                 EXPORT  PLL1_IRQHandler           [WEAK]  
  217.                 EXPORT  USBActivity_IRQHandler    [WEAK]  
  218.                 EXPORT  CANActivity_IRQHandler    [WEAK]  
  219.                 EXPORT  UART4_IRQHandler          [WEAK]  
  220.                 EXPORT  SSP2_IRQHandler           [WEAK]  
  221.                 EXPORT  LCD_IRQHandler            [WEAK]  
  222.                 EXPORT  GPIO_IRQHandler           [WEAK]  
  223.                 EXPORT  PWM0_IRQHandler           [WEAK]  
  224.                 EXPORT  EEPROM_IRQHandler         [WEAK]  
  225.   
  226. WDT_IRQHandler  
  227. TIMER0_IRQHandler  
  228. TIMER1_IRQHandler  
  229. TIMER2_IRQHandler  
  230. TIMER3_IRQHandler  
  231. UART0_IRQHandler  
  232. UART1_IRQHandler  
  233. UART2_IRQHandler  
  234. UART3_IRQHandler  
  235. PWM1_IRQHandler  
  236. I2C0_IRQHandler  
  237. I2C1_IRQHandler  
  238. I2C2_IRQHandler  
  239. SPIFI_IRQHandler              
  240. SSP0_IRQHandler  
  241. SSP1_IRQHandler  
  242. PLL0_IRQHandler  
  243. RTC_IRQHandler  
  244. EINT0_IRQHandler  
  245. EINT1_IRQHandler  
  246. EINT2_IRQHandler  
  247. EINT3_IRQHandler  
  248. ADC_IRQHandler  
  249. BOD_IRQHandler  
  250. USB_IRQHandler  
  251. CAN_IRQHandler  
  252. DMA_IRQHandler  
  253. I2S_IRQHandler  
  254. ENET_IRQHandler  
  255. MCI_IRQHandler            
  256. MCPWM_IRQHandler  
  257. QEI_IRQHandler  
  258. PLL1_IRQHandler  
  259. USBActivity_IRQHandler  
  260. CANActivity_IRQHandler  
  261. UART4_IRQHandler  
  262. SSP2_IRQHandler  
  263. LCD_IRQHandler  
  264. GPIO_IRQHandler  
  265. PWM0_IRQHandler  
  266. EEPROM_IRQHandler  
  267.   
  268.                 B       .  
  269.   
  270.                 ENDP  
  271.   
  272.   
  273.                 ALIGN  
  274.   
  275.   
  276. ; User Initial Stack & Heap  
  277.   
  278.                 IF      :DEF:__MICROLIB  
  279.   
  280.                 EXPORT  __initial_sp  
  281.                 EXPORT  __heap_base  
  282.                 EXPORT  __heap_limit  
  283.   
  284.                 ELSE  
  285.   
  286.                 IMPORT  __use_two_region_memory  
  287.                 EXPORT  __user_initial_stackheap  
  288. __user_initial_stackheap  
  289.   
  290.                 LDR     R0, =  Heap_Mem  
  291.                 LDR     R1, =(Stack_Mem + Stack_Size)  
  292.                 LDR     R2, = (Heap_Mem +  Heap_Size)  
  293.                 LDR     R3, = Stack_Mem  
  294.                 BX      LR  
  295.   
  296.                 ALIGN  
  297.   
  298.                 ENDIF  
  299.   
  300.   
  301.                 END  

程序完成如下内容的工作:

 

        开辟一块大小为Stack_Size的栈空间;

        标号__initial_sp指向栈顶位置;

        定义堆空间大小为Heap_Size;

        建立中断向量表Vectors,cortex-M3规定起始地址必须存放栈顶地址即__initial_sp,紧接着存放复位入口地址,这样内核复位后就会自动从起始地址的下32位取出复位地址执行复位中断服务函数。

        Reset_Handler复位中断函数中先EXPORT声明Reset_Handler的全局性,然后分别执行外部的函数SystemInit和__main。

 

 

下面对汇编程序中的几个关键字做说明:

        AREA伪指令:用于定义代码段和数据段,后跟属性标号。其中“READWRITE”表示可读写,“READONLY”只读属性。根据LPC1788的数据手册描述的存储介质,可知可读写段保持在SRAM区,起始地址为0x1000 0000,代码中的堆栈保存在SRAM空间。只读段保存在Flash区,起始地址为0x0000 0000,代码中的中断向量表保存在Flash空间。 因此可以总结出,在0x0000 0000 存放的是栈顶的地址__initial_sp(即0x1000 0200),在0x0000 0004 存放的是Reset_Handler的地址。

LPCaddresS

图1:LPC1788 地址映射

memoryLPC

图2: debug中 0地址的值0x1000 0200 即栈顶地址, 0x0000 0004 地址值为0x0000 00F9(看反汇编可知该值 即Reset_Handler的入口如下图)。

0XF9

 

        DCD指令:开辟内存空间,中断向量表建立中使用相当于C语言中的函数指针,每个成员都是函数指针,指向各个中断服务函数。

 

 

        自此分析了LPC1788的启动,主要包括堆栈初始化,和中断向量表的初始化。LPC1788有内部Flash,所以上点从内部Flash启动,内部Flash的起始地址为0x0000 0000,存放栈顶的地址0x1000 0200。 0x0000 0004存放复位中断的入口地址。LPC1788复位后,从0x0000 0004取出复位入口地址,执行中断复位函数,从而跳转到SystemInit和main C语言函数执行。

关键字:Cortex-M3  NXP  LPC1788  启动代码 引用地址:Cortex-M3 (NXP LPC1788)之启动代码分析

上一篇:Cortex-M3 (NXP LPC1788)之GPIO
下一篇:Cortex-M3 (NXP LPC1788)之开发环境搭建

推荐阅读最新更新时间:2024-03-16 14:55

NXP与工信部人才交流中心合作 IoT与AI应用开发丛书今发布
恩智浦半导体(纳斯达克代码:NXPI,以下简称“恩智浦”)与工业和信息化部人才交流中心共同编写的《物联网与人工智能应用开发丛书》今日在北京正式发布。工业和信息化部电子信息司司长刁石京、国家集成电路产业投资基金股份有限公司总裁丁文武、电子工业出版社总编辑、工业和信息化部华信研究院院长刘九如、工业和信息化部人才交流中心副主任李宁、恩智浦大中华区总裁郑力以及人事部人力资源与社会保障部专业技术人员管理司、国家外专局国际人才交流基金会等领导共同出席了丛书发布仪式。 人工智能与物联网、大数据的完美结合,正在掀起新一轮科技与产业变革浪潮。作为工信部人才交流中心和恩智浦人才培养战略合作框架下的又一个重要项目,《物联网与人工智能应用开发丛书》定
[网络通信]
高通第28次延长对恩智浦半导体现金收购要约
【TechWeb报道】7月7日消息,据国外媒体报道,高通周五宣布,再次延长对恩智浦半导体的现金收购要约期限,以等待监管机构的批准。 这份收购要约原本定于美国当地时间7月6日下午5点到期,但现在已被延长至美国当地时间7月13日下午5点。高通此前已多次延长收购要约期限。 外媒此前报道称,中国监管当局尚未批准高通以440亿美元收购恩智浦半导体的并购交易。收购恩智浦是高通在饱和的智能手机市场之外实现多元化战略的关键一环。 高通于2016年10月对恩智浦半导体发出收购要约。恩智浦是全球最大的汽车电子设备厂商之一。如果成功,此次收购将成为半导体行业有史以来规模最大的一宗交易之一。
[手机便携]
ARM Cortex-M3 即插即用的跟踪仿真器
  IAR Systems 在 Embedded World 上发布第一款支持 ARM Cortex-M3 的高速跟踪仿真器。这个即插即用的仿真器与 IAR Embedded Workbench 集成开发环境完全兼容,可以把应用下载到硬件开发板上直接调试,从而加快项目的开发进度。   使用 IAR J-Trace 非常简单,通过 USB 线与运行 Windows 操作系统的主机连接,并通过这个 USB 接口供电。此外,通过一个独立的 JTAG 接口,它可以被用作 JTAG 仿真器。   IAR J-Trace 结合了 ETM ( embedded trace macrocell ) 和嵌入式 ICE( incircuit
[嵌入式]
恩智浦半导体助推DIRECTV新一代高清DVR
    恩智浦半导体(NXP Semiconductors)今天宣布,全球最受欢迎的电视服务商DIRECTV 将采用恩智浦全套高清(HD)数字视频录像机(DVR)卫星系统芯片(SoC)解决方案,开发下一代高清 DVR卫星节目接收器。HR24 DVR新技术带来的多点共享功能将使DIRECTV用户通过现有同轴电缆在家里各个房间方便地实现优质高清数字节目和数据信息接收。     DIRECTV公司首席技术官Romulo Pontual表示:“除高清画质外,让我们的用户放心轻松地在自己家里实现多点共享是我们经营战略的重要组成部分,我们希望能为用户带来前所未有的电视观赏感受。打造可靠的视频分配系统,创建互联居家生活新方式是我们不懈的追求
[家用电子]
恩智浦推出业内首款汽车级隔离式CAN收发器
恩智浦半导体推出了一款集成电隔离技术的高速CAN(控制器区域网络)收发器TJA1052i,这是同类产品中第一款符合ISO11898-2标准,且达到AEC_Q100汽车级标准的集成式隔离CAN收发器。 TJA1052i非常适合应用于需要高、低电压并存的CAN网络 (例如在电动车和混合动力车中)。为了确保安全,在这些应用中需要在CAN网络设计中加入电隔离器。TJA1052i集成了隔离器和CAN收发器,使之能大大简化高低电压之间的隔离设计工作。 TJA1052i提供电击、过压、地偏移和反向电流保护,并能显著提升嘈杂电磁环境下信号的完整性。 集成CAN收发器及电容式隔离器于一个封装中的全新解决方案能够确保动态参数匹配、减小电路板空
[嵌入式]
高通或被迫上调对恩智浦收购报价
高通巨资收购恩智浦的交易恐面临变数。纽约对冲基金艾略特管理公司日前披露了在恩智浦半导体公司持有的6%股权,同时表示恩智浦股价“严重被低估”,暗示可能推动以更高价格将恩智浦售予高通。 去年10月,高通宣布计划以每股110美元,总额近390亿美元的价格收购恩智浦。如果交易成功,将成为迄今为止芯片业规模最大的收购交易。截至上周五收盘,恩智浦股价收于每股111.63美元。由于近期盈利表现显著好于预期,一些分析师认为恩智浦的股价将大幅高于110美元的水平。 近年来随着行业整合深入,芯片商积极布局高增长的汽车电子市场。去年8月,日本芯片商瑞萨电子宣布32亿美元收购美国芯片商Intersil,进一步强化汽车芯片业务。今年3月,英特尔同意以153
[汽车电子]
S3C2440 启动代码分析
启动代码是系统上电或复位以后运行的第一段代码,它的作用是在用户程序运行之前对系统硬件及软件运行环境进行必要的初始化并在最后使程序跳转到用户程序,它直接面对ARM 处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关。 S3C2440 支持两种方式的启动:Nor Flash 启动和Nand Flash 启动。Nor Flash 和Nand Flash 都是非易失性存储器,Nor Flash 的特点是芯片内执行,程序可以直接在其中运行,而不必将程序读取到RAM 中运行。Nor Flash 虽然具有这个优点,但是它的性价比远低于Nand Flash,因而很多系统采用Nand Flash 启动。Nand Flash 的特
[单片机]
浅析恩智浦“无人驾驶”的底层技术
随着“ 互联网 +人工智能”逐步渗透进入人们的生活中,汽车已成为搭载多种智能芯片的智慧移动终端,并逐步走向真正的“ 无人驾驶 ”。作为强大的智能移动终端,汽车通过V2X技术与其他车辆和基站实现无线通信,将车辆周围的数据信息进行分析与处理,从而实现脱离驾驶员的操控,避免因人为原因出现的如疲劳驾驶、超速、闯红灯等危险行为的发生。通过城市智能交通网络的建立,可以实现整体调控汽车流量和流向,进而改善高峰期拥堵现象,从源头上降低汽车交通安全事故,提升交通通行率。   “无人驾驶”依据其“自动化”程度可以分为四级:第一级,特定功能的自动驾驶,仅实现自适应巡航控制,自动刹车和车道保持功能;第二级,合并功能的自动驾驶,实现部分自动停车入位,交通堵
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved