国产16位单片机发布,速度比传统8位51快70倍
终于、国产的STC51还是没有发布32位单片机。
接下来看看这个16位的单片机是不是你的菜。
速度更快
在相同的工作频率下,STC16F 系列单片机比传统的 8051 约快 70 倍。
STC16F 系列单片机是 STC 生产的单时钟/机器周期(1T)的单片机,是宽电压/高速/高可靠/低功耗/强抗静电/较强抗干扰的新一代 16 位 8051 单片机,超级加密。
不过我对于这个70倍我是比较质疑的,因为比较的对象是传统的8051,不知道这个传统的8051是不是上个世纪80年代的那个51单片机呢?反正从我零几年玩单片机,STC好像都是增强型的。
如果跟上个世纪的单片机比,我觉得还是没这个必要了。
时钟
MCU 内部有 4 个可选时钟源:内部 20M~40MHz 高精度 IRC 时钟(可适当调高或调低)、内部 32KHz 的低速 IRC、外部 4M~33M 晶振或外部时钟信号以及内部 PLL 输出时钟。
用户代码中可自由选择时钟 源,时钟源选定后可再经过 8-bit 的分频器分频后再将时钟信号提供给 CPU 和各个外设(如定时器、串 口、SPI 等)。
丰富的数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/42 组高级 PWM,可实现 8 通道(4 组互补对称)带死区的控制的 PWM,并支持外部异常检测功能SPI:支持主机模式和从机模式以及主机/从机自动切换I2C:支持主机模式和从机模式ICE:硬件支持仿真USB:USB2.0/USB1.1 兼容全速 USB,6 个双向端点,支持 4 种端点传输模式(控制传输、中断传输、批量传输和同步传输),每个端点拥有 64 字节的缓冲区 CAN:一个 CAN 2.0 控制单元LIN:一个 LIN 1.3、2.1 控制单元MDU32:硬件 32 位乘除法器(包含 32 位除以 32 位、32 位乘以 16 位) FPMU:单精度浮点运算器中端
提供 24 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、定时器 3、定时器4、串口 1、串口 2、串口 3、串口 4、ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PWM1、PWM2、USB、CAN、LIN 提供 4 级中断优先级超多的IO口
最多可达 60 个 GPIO:P0.0~P0.7、P1.0~ P1.7(无 P1.2)、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4、P6.0~P6.7、P7.0~P7.7。
封装
LQFP64和QFN64两种封装
Final
关于这款16位单片机的价格,官方暂未公布,不过笔者猜测在6元以内,因为现有的8位单片机一般都不超过4元。
除了性能上的提升之外,还有就是加入了CAN和LIN通讯的功能,再加上简单的编程和调试方式,在未来几年,教育应用上这款单片机应该会成为主流。
不过在产品应用上估计压力重重,因为在小场合用8位单片机,而对性能要求比较高的领域,32位单片机早已根深蒂固,而且价格基本上能杀到10元以内,再加上32位单片机丰富的函数库,它的地位很难撼动。
然后做一个小调查,在价格与功能一样的条件下,你会选择几位的单片机?
单片机计算性能大比拼(51, AVR, MIPS, ARM)
写这篇文章纯属偶然,MCU benchmark有很多方法,且不同类型MCU benchmark方法完全不同,很难说谁好谁快? 不过,对电子爱好者来说,还是挺想知道“我所用的MCU”计算到底多快?本文,就从打酱油、非专业、大无畏精神出发,探讨入门级单片机计算性能到底如何、如何。
单片机能干的事儿很多啊,我通常用来:
控制个灯啊、空调啊、电视啊、小车啊神马的。
用传感器采集个温度啊、湿度啊、电压、电流、水流、人脸啊神马的。
显示输出:液晶、OLED、数码管;声音;电风扇神马的。
超低功耗:家里的中央控制系统基于树莓派,不到2W功耗。
便携。貌似自己做成的东西极少具有便携性。。。
在没有接触Arduino前都是用51倒腾,玩了有几年,觉得51是最适合电子爱好者用的芯片,简单、便宜、功能足够!但接触Arduino后才明白,原来还有这么个东东,比51先进得多,实在太好用了! 记得学51从二进制地址学起,不太好懂。后来用C开发经常问:“明明 c=a+b; print(c); 就行了,我干嘛要去学指令、寄存器、寻址?”高级语言屏蔽底层很多东西,让编程变得简单。并不是基础知识没用,这好比高等数学这道门槛(俺数学专业),你必须弄懂基础知识体系才能理解数学世界的美妙!但如果是经济学专业,不懂数学基础知识同样可以玩儿转经济学!你从中获得的乐趣跟你投入成正比。所以,我用单片机并不是科班那种需要弄懂MCU每个功能、每个模块,我用单片机就接接外设,完成我的想法而已。也许,只用到了单片机十分之一。说实话,极少使用单片机计算能力(话说这也不是单片机的强项呀),但如你要做个智能小车、四轴飞行器、PID控制,那就需要一定的计算能力了。
开始,只是简单想看看单片机运算有多快,偶然机会跟坛友交换了一块chipKIT Uno32(MIPS芯片),就想横向比较一下不同MCU的差别,于是就有了本文。其实,计算能力通过指令时钟周期来计算,科学准确,但对于不太精通底层知识的我,汇编犹如天书,真心看不懂啊!所以,还是用我自己的土办法测一下吧。
先说测试方法和原理:
只测试+、-、*、/、%五种操作符,uint8_t、uint16_t、uint32_t、uint64_t、float、double六种数据类型的性能。
首先测10000次空循环的时间,然后在循环中加入操作数,记录总的时间,减去空循环时间就是计算消耗的时间。
测试中由于有系统中断(Arduino、STM32都有Tick中断,51为计时也有中断),结果不会很准,话说也没指望它能有多准。。。
编译器优化参数 -O0,一开始测出来的运行时间都为“零”,彻底凌乱。研究之后方得知,编译器优化干掉空循环,需通过参数关闭优化。
不同芯片数据类型支持不一样,有些数据类型会缺失。例如Arduino Uno中的float和double是一样的,都是float;但32位架构MCU中的double是float宽度的两倍。
代码类似这样:
说个小故事。如不关闭测试优化选型,把全局变量定义成局部变量,加法、减法的测试时间为“零”,没错,10000次计算不到4微秒,这显然不可能。后来研究一番方得知编译器默认优化参数是-Os,很多计算直接优化了。。。。
测试用的板子:
传统的AT89C516,还有宏晶鼓吹的1T 51单片机(STC12C5A60S2)
Arduino UNO(ATmega 328),Arduino Due(Atmel SAM3X8E,ARM架构的)
chipKit Uno32(PIC32MX320F128 MIPS架构)
ST Nucleo F0(STM32F030R8),Nucleo F1(STM32F103RB),都是ARM架构的
测试用开发环境:
51谈不上什么优化参数,我用的uVision 2。晶振用22.1184M,据说这个片子可以跑到40M,我就呵呵一下好了。
Arduino IDE 1.6.9,图中2/3都是用Arduino环境,其中编译器参数需要修改platform.txt文件,默认是-Os(优化大小),改成-O0(完全不优化),这个要重启Arduino才能有效。。。
STM用的是MDK 5.16,HAL库。没办法,对STM32真不熟,能捣鼓出结果很不错了!mbed计时函数有问题,F0、F1芯片无法得出微秒级时间,只好用HAL,话说用CubeMX生成代码还真挺方便的。
计时方法:
51用TIMER0计时,这个太简单了,每计数 12/22.1184 微秒啊!
Arduino用系统micros(),根据两次记录的时间差,精度4微秒。
STM用HAL库函数提供的HAL_GetTick(),通过HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/10000); 把计数器设为100微秒,再快会对计算有影响。
硬件说明:
部分芯片带硬件乘、除法器,啊,那个性能好的没话说。
32位MCU处理8/16/32位效果都是32位,但要求不高的地方,8位也够。
结果通过串口返回,Arduino串口超简单、STM32用HAL库串口通信也还行,这51串口啊,我就不说了。
测试结果:
AT89C52(22.118M)STC 1T MCU(22.118M)Arduino UNO(-O0)Arduino Due(-O0)chipKIT Uno32(-O0)STM32F030(48M -O0)STM32F103(72M -O0)Base: 70619Base: 11773Base: 13836Base: 3815Base: 1378Base: 6000Base: 5600TEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_t +: 1.63us +: 0.36us +: 0.44us +: 0.34us +: 0.07us +: 0.33us +: 0.35us -: 2.17us -: 0.41us -: 0.56us -: 0.29us -: 0.07us -: 0.29us -: 0.37us *: 4.34us *: 0.59us *: 0.62us *: 0.36us *: 0.10us *: 0.33us *: 0.35us /: 4.34us /: 0.63us /: 5.47us /: 0.31us /: 0.22us /: 12.56us /: 0.35us %: 4.89us %: 0.68us %: 5.53us %: 0.48us %: 0.21us %: 12.60us %: 0.40usTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_t +: 3.26us +: 0.72us +: 0.88us +: 0.34us +: 0.07us +: 0.33us +: 0.35us -: 3.80us -: 0.77us -: 1.00us -: 0.29us -: 0.07us -: 0.30us -: 0.37us *: 22.81us *: 3.17us *: 1.38us *: 0.36us *: 0.10us *: 0.33us *: 0.35us /: 16.29us /: 2.49us /: 13.26us /: 0.31us /: 0.22us /: 12.56us /: 0.35us %: 16.29us %: 2.49us %: 13.20us %: 0.39us %: 0.21us %: 12.60us %: 0.47usTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_t +: 6.52us +: 1.45us +: 1.76us +: 0.40us +: 0.06us +: 0.29us +: 0.32us -: 7.06us -: 1.49us -: 2.01us -: 0.40us -: 0.06us -: 0.33us -: 0.32us *: 71.68us *: 9.73us *: 6.35us *: 0.33us *: 0.08us *: 0.29us *: 0.33us /: 314.97us /: 42.53us /: 37.79us /: 0.40us /: 0.21us /: 11.84us /: 0.35us %: 319.31us %: 43.26us %: 37.79us %: 0.45us %: 0.20us %: 11.84us %: 0.46usTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_t +: 5.59us +: 0.38us +: 0.18us +: 0.48us +: 0.31us -: 5.59us -: 0.38us -: 0.18us -: 0.42us -: 0.40us *: 24.71us *: 0.46us *: 0.22us *: 23.47us *: 0.36us /: 21.56us /: 2.39us /: 1.60us /: 66.51us /: 38.00us %: 21.94us %: 2.40us %: 1.50us %: 66.51us %: 37.95usTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: float +: 118.69us +: 16.50us +: 9.56us +: 1.52us +: 0.97us +: 2.07us +: 1.24us -: 126.30us -: 17.54us -: 9.62us -: 1.52us -: 1.10us -: 2.22us -: 1.32us *: 21.18us *: 3.12us *: 5.84us *: 0.98us *: 1.05us *: 0.97us *: 0.70us /: 40.19us /: 6.15us /: 5.78us /: 1.25us /: 0.93us /: 1.05us /: 0.78usTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: double +: 118.69us +: 16.50us +: 9.56us +: 1.82us +: 1.40us +: 4.26us +: 2.51us -: 126.30us -: 17.54us -: 9.62us -: 1.87us -: 1.51us -: 4.66us -: 2.57us *: 21.18us *: 3.12us *: 5.84us *: 0.92us *: 1.37us *: 1.69us *: 1.11us /: 40.19us /: 6.15us /: 5.78us /: 1.39us /: 1.20us /: 1.33us /: 0.89us分析 :
Base是空循环10000次的微秒数,不同单片机差别还是挺大的,MIPS完胜,Arduino Due也不错。
传统51,计算8位加、减法大概3个时钟周期;16位乘除法计算略慢;32位计算有点捉襟见肘了;浮点很奇怪,乘除比加减快,所以,可以用32位整数加减和浮点乘除来提高计算性能。
STC 1T单片机确实不错,性能可跟8位的AVR叫板,考虑它的价格比AVR便宜,还是有使用价值滴。
Arduino Uno作为Arduino的入门直选,计算能力还不错,32位加、减法都挺好,尤其浮点计算,还比51快一些;只是乘除法速度略慢。
Arduino Due采用32位ARM芯片,基本上是处理能力最强的Arduino板!32位整数计算不像Uno会往下掉,综合性能比Uno高5~10倍,尤其乘、除法,硬件计算就是快啊!
chipKIT把我震惊了,原来MIPS这么快,甩其它芯片几条街啊!(这是不开优化,开优化也甩几条街) MIPS整数能力超强,浮点计算略差,那也比Due快了近一倍!如果用Arduino开发需要高性能计算,chipKIT可以选。我用的是他们过时的产品,新产品系列性能更高,存储更大!
STM32F0是Cortex-M0架构的,不得不说其综合能力不低啊。这么说是因为它的价格,比Due、chipKit的ARM、PIC芯片便宜多得多,但性能并不是没得比。
STM32F1是
Cortex-M3架构,跟M0比多了硬件除法器,主频更高。基本上,STM32F1可以垄断单片机的市场了,我对它唯一的希望就是:“把手册做的简单些,好难懂的说!”
综上所述,对于单片机选用哪一款都是可以的,STM32F1系列虽然综合最好,但学习门槛高,不易入门;51芯片虽历史悠久,性能可圈可点,但在Arduino的冲击下真没什么价值了。业余爱好者追求的是简单操作、快速搭建,Arduino完美的社区资源是任何其它芯片比不了滴!所以,建议非专业爱好者还是用Arduino来搭建原型,需要速度上MIPS芯片的chipKit,总有满足你的!
以上分析的是无优化性能,有点不公平。因为,实际上没人会无优化的编译,那么打开优化是什么样子呢?请看下图 (Arduino支持-O3,但考虑AVR片上Flash空间紧张,还是用-Os来说,附件有完整-O3的结果)
Arduino UNO(-O0)Arduino UNO(-Os)Arduino Due(-O0)Arduino Due(-Os)chipKIT Uno32(-O0)chipKIT Uno32(-Os)STM32F030(48M -O0)STM32F030(48M -O3)STM32F103(72M -O0)STM32F103(72M -O3)Base: 13836Base: 4404Base: 3815Base: 716Base: 1378Base: 751Base: 6000Base: 2200Base: 5600Base: 1400TEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_tTEST: uint8_t +: 0.44us +: 0.18us +: 0.34us +: 0.03us +: 0.07us +: 0.02us +: 0.33us +: 0.12us +: 0.35us +: 0.06us -: 0.56us -: 0.18us -: 0.29us -: 0.15us -: 0.07us -: 0.02us -: 0.29us -: 0.12us -: 0.37us -: 0.05us *: 0.62us *: 0.25us *: 0.36us *: 0.06us *: 0.10us *: 0.03us *: 0.33us *: 0.10us *: 0.35us *: 0.06us /: 5.47us /: 5.09us /: 0.31us /: 0.05us /: 0.22us /: 0.15us /: 12.56us /: 11.64us /: 0.35us /: 0.07us %: 5.53us %: 5.15us %: 0.48us %: 0.15us %: 0.21us %: 0.13us %: 12.60us %: 11.64us %: 0.40us %: 0.10usTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_tTEST: uint16_t +: 0.88us +: 0.25us +: 0.34us +: 0.15us +: 0.07us +: 0.02us +: 0.33us +: 0.12us +: 0.35us +: 0.05us -: 1.00us -: 0.25us -: 0.29us -: 0.13us -: 0.07us -: 0.02us -: 0.30us -: 0.10us -: 0.37us -: 0.06us *: 1.38us *: 0.69us *: 0.36us *: 0.15us *: 0.10us *: 0.03us *: 0.33us *: 0.12us *: 0.35us *: 0.06us /: 13.26us /: 12.51us /: 0.31us /: 0.04us /: 0.22us /: 0.15us /: 12.56us /: 11.59us /: 0.35us /: 0.07us %: 13.20us %: 12.45us %: 0.39us %: 0.15us %: 0.21us %: 0.13us %: 12.60us %: 11.60us %: 0.47us %: 0.09usTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_tTEST: uint32_t +: 1.76us +: 0.50us +: 0.40us +: 0.11us +: 0.06us +: 0.01us +: 0.29us +: 0.03us +: 0.32us +: 0.03us -: 2.01us -: 0.50us -: 0.40us -: 0.05us -: 0.06us -: 0.01us -: 0.33us -: 0.02us -: 0.32us -: 0.03us *: 6.35us *: 4.84us *: 0.33us *: 0.01us *: 0.08us *: 0.02us *: 0.29us *: 0.03us *: 0.33us *: 0.03us /: 37.79us /: 36.28us /: 0.40us /: 0.08us /: 0.21us /: 0.13us /: 11.84us /: 11.54us /: 0.35us /: 0.04us %: 37.79us %: 36.15us %: 0.45us %: 0.04us %: 0.20us %: 0.13us %: 11.84us %: 11.55us %: 0.46us %: 0.06usTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_tTEST: uint64_t +: 5.59us +: 2.89us +: 0.38us +: 0.32us +: 0.18us +: 0.07us +: 0.48us +: 0.04us +: 0.31us +: 0.05us -: 5.59us -: 2.89us -: 0.38us -: 0.19us -: 0.18us -: 0.07us -: 0.42us -: 0.05us -: 0.40us -: 0.03us *: 24.71us *: 20.43us *: 0.46us *: 0.19us *: 0.22us *: 0.08us *: 23.47us *: 23.14us *: 0.36us *: 0.11us /: 21.56us /: 17.29us /: 2.39us /: 2.22us /: 1.60us /: 1.31us /: 66.51us /: 66.22us /: 38.00us /: 37.56us %: 21.94us %: 17.66us %: 2.40us %: 2.22us %: 1.50us %: 1.28us %: 66.51us %: 66.26us %: 37.95us %: 37.58usTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: floatTEST: float +: 9.56us +: 8.43us +: 1.52us +: 1.29us +: 0.97us +: 0.88us +: 2.07us +: 1.77us +: 1.24us +: 0.91us -: 9.62us -: 8.49us -: 1.52us -: 1.29us -: 1.10us -: 1.07us -: 2.22us -: 1.92us -: 1.32us -: 1.01us *: 5.84us *: 4.71us *: 0.98us *: 0.82us *: 1.05us *: 1.00us *: 0.97us *: 0.65us *: 0.70us *: 0.40us /: 5.78us /: 4.65us /: 1.25us /: 1.02us /: 0.93us /: 1.02us /: 1.05us /: 0.76us /: 0.78us /: 0.40usTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: doubleTEST: double +: 9.56us +: 8.43us +: 1.82us +: 1.77us +: 1.40us +: 1.25us +: 4.26us +: 4.16us +: 2.51us +: 2.36us -: 9.62us -: 8.49us -: 1.87us -: 1.82us -: 1.51us -: 1.36us -: 4.66us -: 4.57us -: 2.57us -: 2.44us *: 5.84us *: 4.71us *: 0.92us *: 0.87us *: 1.37us *: 1.27us *: 1.69us *: 1.60us *: 1.11us *: 0.91us /: 5.78us /: 4.65us /: 1.39us /: 1.33us /: 1.20us /: 1.16us /: 1.33us /: 1.24us /: 0.89us /: 0.74us哇,性能全部飙升啊!平均都有3~5倍的提升,这也说明MCU的速度很依赖编译器!
Arduino Due的性能比Uno快了近10倍,且Due的乘除性能不比STM32差,得益于ARM核心和硬件计算单元啊。
MIPS架构总体最快,32位性能灰常优异,仅浮点比STM32F103略慢。
STM32F103不愧是芯片之王,综合性能最好,尤其浮点处理能力!用于PID、四轴飞行器的计算很合适。
最后,真正的乐趣不是看谁跑得快,而是设计一段程序,让它能在完全不同的系统跑起来的那种成就感!这篇文章也是随手而写,测试内容并不是非常严谨,仅作参考。
扩展阅读:
在成文之前搜了下关于MCU的benchmark,才明白我可真是真井底之蛙!早有专业的测试算法工具,比如Dhrystone 。我也把他们在Arduino和MDK平台上都编译了一下,结果挺有意思的,具体结果就不贴了,大家可以自己试一下。如果真的想了解MCU的benchmark还得用这种成熟的方法,土方法只能娱乐而已。。。
Dhrystone
Arduino下可运行:https://github.com/ghalfacree/Arduino-Sketches/tree/master/Dhrystone
STM32下可运行:http://www.stm32duino.com/viewtopic.php?t=76
How to Effectively Measure MCU Efficiency
参考资料:
本文用到的代码和报告:http://pan.baidu.com/s/1i4KNxOx
本文属于原创,如要转载请联系公众号ickeybbs
最新电子行业资讯、教程以及开发板样片申请,请关注“云汉电子社区”官方微信公众号ickeybbs
相关问答
51单片机 最快的指令运算 速度 为多少?单片机的速度是以MIPS(1MIPS相当于每秒钟执行1百万条指令)为单位计算的,一般的AT89S52单片机(12M晶振)的速度是1MIPS,飞利浦的单片机同样晶振下可以达到2MI...
有啥 单片机 运算 速度 很快的?普通的加减乘除,用一般的增强型51单片机或AVR单片机足矣运算时间不到1ms如果进行三角函数运算,大约几ms大量的浮点和三角函数运算建议用STM32单片机普通...
介绍几款 单片机 , 速度 能快一点的?pic16F,pic18F系列的速度更快.51系列内部时钟是12分频的,pic是4分频,而且指令速度快,很多pic还有倍频机制,用低速晶振实现高速处理.指令速度pic用4M的晶振就...
单片机 计数输入端最高脉冲频率是多少? - 婷小猫_5763E181 的...外部脉冲的变化必须要比51单片机采样的速度慢才行,否则会丢失计数脉冲的个数。1分析:51单片机在每个机器周期的S5P2对计数端点脉冲进行采样,需...
51单片机 的四个时间概念?一、时钟周期1.时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12...一...
stc15w4k和 51单片机 ?STC15W4K属于51系列单片机,由深圳宏晶公司研制。尽管内核依旧是MCS-51,但STC15是功能扩展型单片机,与诸如AT89基本型单片机相比,它增加了很功能模块,性能也...
单片机 上拉电阻应该选多大?上拉是给IO口一个初始值,将不确定的信号钳位在高电平,同理,下拉是将不确定的信号钳位在低电平。一般进行原理设计时,对于单片机的上拉电阻大小都是根据经验选...
51单片机 ttl是什么?51单片机TTL是51单片机芯片内部的一个串行通信接口,它通过TTL电平进行数字信号传输。TTL是Transistor-TransistorLogic的缩写,即晶体管-晶体管逻辑。它是一种...
51单片机 一般选用多少的晶振?这个与用途有关,比如说如果你要用到串口,那么就常用11.0592MHz晶振,因为这个频率的晶振分频后可以得到精确的波特率。如果要用到计时,就常用12MHz晶振,这样...
51单片机 机和其他单片机区别?简单来说,arm是单片机的一种,51也是,但arm的ROM和RAM远大于51,而且IO口功能和处理速度也是两个级别的,arm能上很多操作系统,51只能勉强上极其简单的实时操...