和辛昕不同,我喜欢新东西,也喜欢偷懒。和C相比,C++的面向对象很好玩。至于语法,我肯定用不到很高深的部分,对于mbed,主要是希望找到一个在理论指导下快速切入一个硬件的可能。
mbed的优点:方便,mbed的特点就是将各种底层的驱动给屏蔽了,并通过类的方式提供给开发人员,使得开发人员可以轻松的关注应用代码。同时可能带来更好的可移植性。各种官方库齐全,第三方库也很多。只要有mbed下载器,那么自己的开发板也能用,程序员只要关注应用就好了,这时何其的爽快啊!!
但是mbed的问题是,对底层认知的缺失。比如说,PWM,可以分配到哪些管脚?有些芯片支持外设IO引脚的任意分配,比如这次的nRF51822,但是有些就不一定啊。PWM到底有几路?往往一个定时器可以支持好几个PWM同时输出,那么如果有多个PWM实例,到底用了一个定时器,还是多个?会不会和其他定时器冲突?这个问题暂时还回答不了。
末了,问个问题,不同的mbed下载器和调试器都是通用的吗?比如我拿st的mbed可以给nRF下载不?理论上说下载需要知道芯片的flash配置,那么这个配置是在生成的hex里面的麽?
评测到此完成,硬件可以收回。不过说明一点,上面的加速度器一直有问题。
Mbed只是在HAL这一层通用,就是软件层,硬件上该用什么仿真器和下载器,还是得用原来的,无法通用。
对于PWM,只有支持PWM的引脚才能使用,如果定义了一个不支持PWM的引脚,虽然语法不会出错,但是运行时会输出错误的提示。其它外设也是这样。PWM的实现和原来没有什么区别,一个定时器支持多个PWM通道,Mbed只是把它封装起来,让你感觉不到。如果两个功能使用相同的定时器,必然会有冲突,通常是最后一个功能会重新设置参数。
现在的Mbed已经分为classic Mbed和Mbed os,你说的属于classic mbed,mbed os用起来要复杂很多,主要面向物联网。