1. Arduino是从 Atmel 的AVR8位单片机开始开发的,当时的水平,还没有今天像 ST 一样的函数库 -- 而且8位单片机 RAM 有限,函数库要多级嵌套调用,花费堆栈空间,而且实时性也不好 --- 那个时候的单片机,基本上就是 16MHz 时钟的水平
Arduino最开始的开发板,带有 AVR 单片机,还有一个 FTDI 的 USB转 232 的芯片,用于编程。 当然,先要在 AVR 里面驻留一段 bootloader程序,监控串口,以便接收 PC 的编程指令 -- 这样就省去了 AVR专用的ISP工具(贵!非常贵)
当然了,这样是简化了系统,降低了成本,但是。。。最大的问题就来了: 无法debugger! 也就是说,不能设置断点,查看内部寄存器和变量。。。可以断定,Arduino只能做一些小程序,而且开发的时间成本相当大。Arduino设计的方法是用串口来监测系统的运行状态,你可以在关键点用printf类似的语句输出特定的变量的值 -- 比较简单低档的调试方法。
2. Arduino 为了使编程更加易懂,将AVR的寄存器操作进行了封装,简化了指令,比如,对于 GPIO 的初始化,就这样:
pinMode(5,OUTPUT); //第5脚(D5) 设置成输出模式
---将数字口进行编号,D1,D2。。。。,不再使用专业的 PAx,PBx。。。
如果要把某个数字口写一个高低电平,就这样:
digitalWrite(5,HIGH); //D5输出高电平
---简单,但是失去了对于GPIO口细节的控制,比如现在的GPIO,通常有好几种模式,输出有push-pull,open-drain 等等。
3. 不管是Arduino IDE 还是 MAPLE IDE, 界面类似,编译、下载、打开、保存。。。最让人不能容忍的是---编译太慢! 因为采用开源的gcc编译器,实在效率不高,这个等待啊,绝对是一种痛苦。
不管怎样,修改后(主要是pin脚与俺的板子的LED引脚不同)的第一个程序Blink总算是跑起来了。
感觉是,现在的 ARM cortex,基本都提供函数库,比以前的MCU编程容易理解多了,跟 Arduino 的函数,也没有啥区别,而且原厂也提供的大量的example,也提供了板载的 debugger。
要玩MCU,还是去原厂买一个入门的评估板吧,而且好多原厂,也提供了与Arduino引脚兼容的评估板,可以控制与 Arduino兼容的外设板(Arduino shield)。