干货

msp430单片机开发实录

分类名:拆解日期:2018-12-20作者:tiankai001
分享到
微博
QQ
微信
LinkedIn

写在前面
    《msp430单片机开发实录》列举的在msp430单片机开发中的一些问题及解决办法,都是我在实际工作中遇到的,我个人感觉有一定的参考价值,所以我就把这些问题整理了出来,发到论坛,如果大家感兴趣,可以看看。

实录1:在用IAR软件仿真msp430单片机时碰到的无法仿真的现象

现象:
一个调试正常的项目,拷贝到另一个电脑后,加上仿真器进行在线仿真(开发环境IAR),出现了这样的现象:进入仿真环境后,单片机自动运行程序,但是仿真进度条是停留在main函数的第一句,也就是说,进入仿真环境后,没有进行任何仿真操作,单片机自动运行程序了(单片机不是新单片机,已经有正常程序在单片机里了)。
问题在于,我们都知道,进入仿真环境后,如果不选择仿真操作(单步、全速等仿真操作),单片机是不会自动运行程序的,即使是仿真前单片机内部已经有程序了。

试验:
1、将该项目复制到另一个电脑内,同样进行在线仿真,仍然会出现刚进入仿真环境后,单片机就自动运行程序(仿真进度条一直停留在main函数第一行,此时的仿真选项(如单步、全速等)仍然处于可选状态,)。此时怀疑可能是项目里面的仿真调试选项有问题。


2、将这一块电路板拿到这个项目原来所在的电脑上,进行仿真,进入仿真环境后,单片机不会自动运行程序,只有通过单步、全速等仿真操作,才能进行仿真,这是正常的仿真状态。

3、将原电脑中的项目再次复制到出现仿真问题的电脑上,运行仿真,进入仿真环境后,单片机不会自动运行程序,是正常的仿真状态。
这时确认是这个项目拷贝到另一台电脑后,可能被修改了仿真调试配置。

4、于是将这两个项目的仿真配置逐项比对,全部核对后,发现配置完全一样。就是说:不是仿真配置错误导致的。那么?到底是什么原因出现了这种异常?

5、检查电路、仿真器与电脑的连接、更换仿真器、更换电路板,都没用。

6、下一步想法:准备比较两个项目中文件内容的区别

实录2:msp430单片机的看门狗没有正确配置引起的异常现象一例

现象:
项目有改动,需要添加一个功能,而这个功能不涉及到硬件电路,所以就偷懒不想用硬件仿真。直接在IAR中选择软件仿真。把添加的功能函数放在程序开头,这样就可以用软件仿真,不用再连接仿真器和电路板了。但是仿真过程中发现这个函数没执行过就总是出现复位的现象。


试验:
开始认为是添加的这个函数有问题才会导致程序复位,于是添加了一个之前调试通过的函数(不涉及硬件操作,如果涉及硬件操作,就不能用软件仿真了)。结果不会出现程序复位的现象。于是更加确认是添加的这个函数有问题。仔细检查该函数,反复确认好几遍,没有发现有任何问题。一时间这个问题陷入僵局。
无奈之下,对比之前调试好的项目,忽然发现了问题所在:一般430单片机上电后程序最先要写上的两句话是:

_DINT(); //关中断

  WDTCTL = WDTPW + WDTHOLD;//关看门狗

复制代码


而我这次因为偷懒,把添加的函数放在“关闭看门狗”语句之前了,所以可以初步确认是看门的狗的问题,于是查阅数据手册里关于看门狗的描述:看门狗在上电后自动默认打开,复位时间是32ms。真相大白!
而早前添加的调试通过的函数之所以没有出现复位,是因为那个函数的执行时间短,小于看门狗复位时间,所以不会复位,而新加的这个函数执行时间长,大于32ms,所以会出现复位。

验证:
把添加的函数放在关闭看门狗语句的后面,程序就不会再出现复位想象了!反复测试多次,确认问题得到解决!


实录3:msp430单片机端口配置不正确导致电流异常的现象
现象:
已经批量生产的产品,市场上反馈说发现有个别电流异常的现象。于是拿回几块电流异常的产品检查,发现静态电流忽高忽低,有的时候静态电流正常,有的时候静态电流忽然变大。


试验:
对照电路图检查电路,核对程序,始终没发现问题出在哪里。
最后甚至会出现用手靠近单片机就会导致静态电流的异常变化。
后来有高手拿一根吸管,对着单片机的管脚吹气,发现有几个端口在“吹气”过程中电流会出现异常,高手指出:这一部分端口配置有错误。
于是再到程序中检查这几个端口,发现是JTAG仿真口,再看端口配置函数里面关于这几个端口的配置。检查结果是:这几个端口没有配置。
查阅430单片机的数据手册,查到这些端口上电默认是输入口,于是找到原因:因为这几个端口配置为输入口,容易被外界干扰,所以就会出现电流忽高忽低的现象

验证:
把这几个端口配置为输出口(输出高或者低均可,但最好是输出低。),再反复测试,包括用手靠近单片机,对着端口吹气等都不会再出现电流异常变化的情况。



备注:
430单片机数据手册中对未用端口如何设置有详细的建议,包括电源端口,晶振接口,I/O端口等未使用到的,都有建议设置或配置为合适的状态。对于I/O端口,因为很多I/O端口都有第二功能,所以官方建议对这些未用的I/O口都设置为普通I/O口,设置为输出状态。
对于JTAG仿真口,也是建议在不用的时候设置为输出方向的I/O口。


实录4:由于没有给需要供电的芯片供电,导致其工作不正常的现象

现象:
调试一款单独供电的时钟芯片,该芯片是I2C接口的,由于之前在其它项目上已经调通了该芯片,就直接移植了相应的程序过来,结果始终调试不通,甚至连最基本的应答信号ACK都没有。


试验:
因为程序是以前调通的,并且已经在产品上使用了,所以程序流程肯定没问题,那第一怀疑就是因为不同产品的单片机主频不一致可能导致的时序问题,仔细核对了时序,发现并没有任何不一致,也不存在主频不合理的问题。
第二怀疑是端口配置,检查端口,无论是电路还是程序,端口的配置都没有问题。
就这样进入了死胡同,不知道该怎么办了。
于是决定先放一放,过几天再来解决。几天后再进行调试,在调试前想先看一下电路连接是否有问题,当看到该芯片的供电时,忽然发现这个是由锂电池单独供电的,而目前测试的这个电路板上没有接锂电池,于是就加电,然后调试,一下子就调通了。

验证:
去掉给该芯片单独供电的电池,自然调试的时候该芯片是不会有应答信号ACK的,加上电池,对该芯片的读、写操作全部都没问题。

备注:
这是一个很幼稚的问题,相信很多人听了会觉得不可思议,还有很多人会嘲笑:连电都不加,怎么可能调通。但我相信,这种幼稚的错误很多人都犯过。

实录5:msp430f6723单片机P1.1,P1.0这两个端口的异常现象
现象:
调试msp430f6723单片机的时候,总是会出现静态电流大(比正常值大100uA左右)的问题,检查了程序和电路,都没有发现问题。


试验:
确认程序和电路没有问题。于是就采用比较笨的办法,先把程序全部屏蔽,端口按照正确状态进行初始化配置,然后每次恢复一部分程序,观察每添加一部分程序后的电流情况,最后发现是AD转换部分时出现的电流异常。核对AD转换的电路,端口配置,程序、寄存器配置,都没有发现问题。
试着关闭AD转换程序,发现电流仍有异常,此时端口配置为普通I/O口,端口方向为输入,干脆把端口设置为输出高电平,发现电流正常了。设置为输出低电平电流也正常,只要把端口设置为输入口,电流就不正常。(端口为P1.0)
因为该端口是使用的AD转换通道,不能改用普通I/O口。再看MSP430F6723单片机的端口功能,发现P9口也有部分AD转换通道,于是将P1口这一路AD转换通道换成P9口的AD转换通道,而将P1口这路AD通道设置为普通的I/O口,方向为输出,电流正常了。

验证:
原因找到,P1.0和P1.1这两个口对应的两路AD转换通道不能用,一用就会出现电流异常。(试过平时将这两路AD设置为普通I/O,输出方向,使用时再切换到AD功能和输入方向,但是切换后需要等待较长时间才能采集到稳定、准确的电压,时间的延长导致功耗增加,所以此方案不可选)。

备注:
针对此问题,问过TI的客服,它们也解释不清,查阅所有的相关手册,没有此类说明。也可能是我的错误,但是目前的情况是换成P9口的AD通道后,一切都正常。所以我认为是这款单片机的缺陷。


实录6:MSP430单片机低功耗调试中需要注意的一个细节

现象:
调试msp430f5xxx单片机的时候,会出现静态电流大(比正常值大100uA左右)的问题,检查了程序和电路,都没有发现问题。


试验:
因为这个程序较为简单,检查后确认没有问题。无奈之际,就找了相似的程序来对比,发现从程序开始到进入主循环,除了未用到的功能外,唯一的区别是之前采用同一款单片机的程序中,在程序初始化里面,多了一个AD转换的程序。
于是试着在这个程序的初始化部分也加了一个AD转换。电流立即正常了。

验证:
添加AD转换程序后,反复试验,电流一直正常。

备注:
针对此问题,问过TI的客服,它们也解释不清,查阅所有的相关手册,没有此类说明。也可能是我的错误,但是目前的情况就是这样。所以我认为是这款单片机的缺陷。


实录7:开启中断后,没有中断服务程序,导致程序跑飞的问题

现象:
调试程序时,发现程序老是走着走着就飞了。就在线仿真查找问题。


试验:
发现在仿真环境下,程序跑飞后总是指向一个固定地址,这个地址是定时器中断向量地址(这个只有在反汇编里才能看到,C语言的程序只能看到程序飞了,具体情况就看不出来了)。再检查程序,发现是程序初始化配置的时候,因为后面功能需要,把定时器进行了初始化配置,并顺手打开了定时器中断,但是因为暂时还未调试到定时器部分的功能,所以就没有添加定时器的中断服务程序

验证:
添加定时器的中断服务程序后,程序正常执行,不会再出现跑飞的现象。

备注:
MSP430单片机中,如果使能了某种中断,那一定要把对应的中断服务程序写上,如果一时没有定义好中断的功能,那么就做一个空的中断服务函数。


实录8:函数中给数组赋值数据长度超出数组长度导致程序跑飞的问题
现象:
在仿真环境下调试程序时,发现程序总是在一个函数的结尾,要退出这个函数时(不是中断服务函数),出现程序跑飞的现象。


试验:
一般情况下,普通的函数中,如果在退出这个函数时程序跑飞,首先要考虑的一个可能性是内存溢出,可能是数组溢出,也可能是指针溢出。重点检查数据的传递,一般都是从一个变量到另一个变量传递时,因为两个变量的数据长度不一致引起的。对于数组来说,一般是向数组传递数据时,传递的数据长度超过了数组的长度。

验证:
修改数组长度,或者修改传递给数组的数据的长度,确保要传递给数组的数据的长度不超过数组的长度。

备注:
在退出函数时出现的程序跑飞,一般是内存数据溢出。


实录9:AD转换中端口配置的问题

现象:
AD转换功能调试,采样保持时间较短,测出来的电压为0,修改程序,在寄存器配置完成与AD转换开始前,加延时,随着延时时间的延长,测得电压越来越高,延时到700MS以后,电压为电源电压。采样保持时间改为较长的时间,AD转换前不加延时,采集电压第三次以后电压正常。

试验:
AD转换功能之前每个产品都有,都很正常。唯独这次出了问题,那肯定不是AD转换程序的问题,而是AD转换之前有哪些地方的程序有问题。最后发现,是因为在端口初始化的时候,把这一路AD转换通道设置为输出方向,因而导致AD转换前几次的值不正确。

验证:
在端口初始化时,将AD转换对应的端口设置为输入状态,经过反复测试,采集的电压值保持稳定

备注:
AD转换对应端口需要事先设置为输入口,如果在AD转换开始时,将该端口从输出设为输入,则需要进行适当的延时,才能够获取正确的电压值。


实录10::AD转换中分压点电压的问题
现象:
AD转换功能调试,同样的电路板,同样的程序,以前采集的电压都很稳定,电压值也很准确,现在却不准确了,并且采集出来的电压值始终不变,始终维持在2.9V。

试验:
因为电路板和程序都没有变,所以可以排除这两方面的原因,那就从外部环境考虑,经过检查,发现这一路AD之前是锂电池供电,电压最高3.6V,AD采样电路是两个等值电阻分压,则分压值最大1.8V。而现在这一路改成6V供电,那么分压值就是3.0V。而AD采样选择的参考电压是内部参考电压2.5V。这样问题就很明显了。

验证:
将供电电压调整至0~5V,则采集的电压值准确、稳定。

备注:
很简单的一个错误,主要是粗心的问题,当从中可以看出AD采样电路需要注意的两个问题:分压电路,参考电压。


实录11::AD转换中数据缓冲寄存器的问题
现象:
AD转换功能调试,单片机为msp430g2955。之前没有用过改款单片机,在进行完寄存器配置后,开启仿真,发现采集到的电压值总是不正确,并且一直是一个固定值。

试验:
首先确认电路正确,电源电压也没超范围,采样电路分压后的电压值也在参考电压值以下,程序中的寄存器反复核对后确认没问题。最后发现了一个:取电压值寄存器用的是ADC10MEM_,换成ADC10MEM就可以了。查IAR里面的关于2955头文件里面,有下面图示内容,一直认为这两个寄存器只是名字不同,实质是一样的。现在看来以前理解错了。
 image.png

验证:
将寄存器名字更改后,采集的电压值准确、稳定。

备注:
msp430单片机编程有一个很有个性的现象:很多寄存器名以及寄存器里面各位的定义,在iar软件对应的头文件里面很灵活,但也很复杂。


实录12:定时器中断关闭,时钟源未关闭导致的电流异常问题
现象:
系统要进行低功耗调试,发现功耗在一个特定条件下电流总是会增大,并且这个条件结束后,还会继续维持这个大电流。

试验:
已经确定了一个特定条件下执行一段固定的程序才会引起电流增大,那就可以确定电路没有问题,那么方向明确,直接在这个条件程序处理里面查找原因,依次判断这段程序会对那些端口进行操作,操作后有没有把端口状态设置为低功耗状态,经检查发现所有端口的前后配置都正确,那说明不是端口状态异常引起的。最后排查到定时器,原来在这种条件下打开了一个定时器中断,这种条件结束后,虽然关闭了定时器中断,但是没有关闭这个定时器的时钟,所以这个定时器虽然不会产生中断了,但是它的时钟却一直在工作,所以使得电流增大。

验证:
在退出该条件后,关闭所使用定时器的时钟,电流就降下来了,并且和进入该条件前的电流一致。

备注:
msp430单片机对不同的功能模块有不同的时钟支持其工作,而时钟是会增加功耗的,所以对于某个功能模块,如果使其停止工作,一定要记得关闭其时钟,这样才不会增加功耗。


实录13:AD转换时,如何等待转换结束的问题
现象:
我们的产品用到AD转换的时候,一般是定期开启AD转换,获取AD转换的值,采用的是查询方式,不用AD转换中断。一般在从AD转换结果寄存器中取出AD值之前,要先判断AD转换的状态,也就是判断AD转换是否完成,因为只有转换完成,才能取出正确的AD值,一般情况下都会判断AD转换的忙状态,我一般用下面的语句。

while (ADC10CTL1 & ADC10BUSY) ;

复制代码


但是今天再看几年前我写的一个程序时,忽然发现,我在那个程序里面用了下面的语句

while(!(ADC10IFG & ADC10IFG0))

复制代码


目前这两种语句在不同的产品中都用了,并且都已经大批量出货了,没有发现AD转换不准确的问题。那么这两种语句到底有没有区别呢?


试验:
看上面两个语句,第一条语句是判断AD转换的状态是出于“忙”还是“空闲状态”,这个很容易理解,在“忙”的时候,说明正在进行AD转换,所以要等“空闲”的时候,AD转换结果寄存器里面的值才是正确的结果。
而第二条语句用的是判断中断标志,前面我已经说了,我的AD转换是定期开启转换,查询方式,不用中断。那么这里用判断中断标志的方式合适吗?
原来,在430单片机中,有中断功能的模块,一旦启用了这个功能,那么不管我们是否开启了中断使能,只要这个功能产生的条件满足,都会产生一个中断标志,所以这里使用判断中断标志的方法是没问题的,并且这个中断标志是硬件自动清除的。

验证:
分别采用“忙”标志位检测和中断标志判断的方式进行AD转换,反复多次测试,都能够正确获得AD转换结果。

备注:
msp430单片机的中断标志是只要满足相应条件就会产生,跟有没有开启相关中断使能无关,并且这个标志硬件自动清除,程序里面不用处理。



实录14:AD转换时,采样保持时间的问题
现象:
这次是同事调试AD转换的时候,他发现采集出来的AD转换的值不稳定,采集到的电压值忽高忽低,检查电路没发现问题,采样电路的电压很稳定。

试验:
他现在做的产品用的电路是我之前做的产品的相同电路,程序也是在我的程序基础上添加了一些功能。AD转换沿用的我之前的程序。我问他在AD转换上改动了吗,他说改了一些寄存器位配置,我查看他改动后的AD转换程序,发现主要寄存器配置基本没变,唯一变的是采样保持时间的配置,他选择的采样保持时间很短很短,8个时钟周期。而我之前选择的是采样保持时间64个时钟周期。那么问题就在这里了,采样保持时间太短,导致采集到的电压值不稳定。

验证:
把采样保持时间适当增加,随着采样保持时间的增加,采集到的电压值越来越稳定。但采样保持时间也不能太长,太长会影响单片机的工作效率,也会增加功耗。

备注:
AD转换中的采样保持时间过短,会导致采集到的电压值不稳定、误差大。


实录15:MSP430单片机信息flash段的读写错误问题
现象:
MSP430单片机每一种型号里面都有一些可以用来存储数据的信息flash段。在对MSP430F67xx1单片机进行调试的时候,发现有时候向信息flash段写数据时,会发生写错的情况,写flash的程序是一直都在用的,以前在别的430单片机上也用同样的程序,从来没有发现数据写错的情况。

试验:
仔细对照数据手册和用户指南,反复核对时序,都没有发现问题。于是又仔细查询相应的寄存器中是否有配置不正确的情况,最后发现是在写flash前没有一个“判忙”的检测,应当是先判断信息flash段有没有准备好写下一个字或字节的写入,只有这个状态位置1,表示准备好写入了,才能够继续写入数据。
验证:
在向写flash写数据前,先判断“写闪存准备位”是否处于允许写入的状态,加上这句话后,就不会出现写错数据的情况了。

备注:
在写flash寄存器中,还有一个busy状态位,这个位表示flash当前是否正忙于擦除或编程,用于对flash进行读写操作前的判断,只有不忙的时候,才能进行读写操作。


实录16:MSP430新型仿真器进仿真环境失败的问题。

现象:
使用新买的MSP430仿真器(从TI代理商利尔达公司购买),就是下面第一个图中的仿真器,IAR版本6.5。发现每次插上仿真器后的前两次总是进不去仿真环境,一般最少要连续3次以上才能进入仿真环境。

之前一直用的是下面这种仿真器(也是从利尔达购买的,图片是借用的),一直都是随时插上仿真器都可以很顺利的进入仿真环境。但是现在官方已经不生产这种仿真器了,现在是能买到上图中黑色的仿真器。
  
试验:
咨询了利尔达的技术支持。先是怀疑单片机和仿真器之间的JATG连接线有问题,就直接换成杜邦线连接仿真器和单片机,但是仍然不能一次就进入到仿真环境。于是又到IAR环境下的仿真器配置选项中查看端口是否正确(一般是显示串口号),竟然没发现连接的端口号。就到计算机的设备管理器里去查,查到了仿真器对应的端口号,再回到仿真环境下,这时显示出来了仿真器对应的端口号,选择对应的端口号,顺利地进入了仿真环境。
验证:
每次插上仿真器后,先看看IAR里面有关仿真器的端口号识别出来没有,如果识别出来了,这个时候就能直接进入仿真环境,如果没有识别,需要反复几次进多次仿真才能进入仿真环境。

备注:
MSP430最新的仿真器在IAR6.5环境下使用最稳定。6.5以下的版本新仿真器就不是很好用。

实录17:用非中断方式实现串口数据收发时,错误使能了串口接收中断,但是没有相应的中断服务程序,导致程序复位的问题
现象:
调试msp430f2955的串口,串口数据的发送和接收都采用的查询方式,没有用中断。msp4302955作为主控单片机,向另一个单片机发送串口数据,另一个单片机接收到数据后,返回应答数据。调试中出现:数据发送没有问题,但是数据接收不正常,并且还会引起单片机复位。


试验:
因为之前在msp430多种型号单片机上都调试过串口,中断方式和查询方式都用过,都能够正常实现功能这次出现这个问题,有些困惑。于是仿真调试,并且把串口引出一路接到计算机上,发现主控单片机发送的数据是正确的,计算机串口显示另一个单片机也返回了正确的应答数据。那么原因肯定是出在主控单片机上。检查程序发现,在进行串口初始化的时候,不小心开启了串口接收中断。但是程序中却没有串口接收中断的服务程序。问题就在这里。
验证:
将串口接收中断关闭。反复测试,数据发送和接收正常。
备注:
以前调试程序时,如果使能了中断,却没有相应的中断服务程序,更多的现象是程序跑飞,这次却出现了没有中断服务程序,程序自动复位。


实录18:数组在定义同时赋初值的问题。

现象:
在函数起始位置,定义了一个数组,并且给这个数组的所有元素赋了一个初值,使用下面的语句。

unsigned char ucRamToMemory[70]={0x08};

复制代码



但是在函数中使用这个数组中的数据时,发现这个数组中只有第一个数组元素的值是0x70,而其余数组元素的值不是0x70。


试验:
因为之前函数中定义数组时,一般都会习惯上把所有数组元素的初值,初始化为0,常用下面的语句。

unsigned char ucKxAndVol[70]={0x00};

复制代码


在使用中实实在在的,数组中所有元素的初值都是0。
这个其实涉及到C语言的知识,C语言中,在定义数组时,如果想把所有数组元素的初值设为0,那么是可以使用上述语句的。
但是如果要把数组元素的初值在定义时设置为非0的数据,就不能用这种语句了,只能给数组元素分别赋值,或者使用下面的语句

memset(RecData,0x58,100);//将数组中的前100个元素的值都设置为0x58

复制代码





验证:
因为想要把数组的所有元素都设置为一个非零值,所以对数组中的所有元素分别赋值,验证后,一切正常。
再使用memset语句对数组元素设置为非零的数值,验证后,一切正常。
备注:
关于数组元素的赋值,在编程时要注意,定义的同时赋值的话,即使赋值相同的数据,如果该值不为零,那就需要一个一个赋值。


实录19:中断标志没有及时清除,导致反复进中断的问题
现象:
项目中需要用到两个端口的中断,一般的MSP430单片机的P1口和P0口的8个位都可以实现端口中断,于是电路中就使用了P0的两个口作为端口中断接口。实际运行中,当一个P1.0端口中断发生后,会反复进入端口中断。


试验:
仿真环境下测试,发现端口中断处理完后,中断标志没有清除,导致中断标志还在,所以就会一直进中断。
验证:
中断处理完后,退出中断函数前,清除中断标志,这样就不会反复进中断了。
备注:
不同的单片机,对中断标志的设置和清除机制是不同的,这个一定要仔细查阅数据手册,并最好实际测试。


实录20:关于总中断的开启和关闭问题
现象:
关于msp430单片机的中断控制,能够控制所有可屏蔽中断的语句有两个_EINT();和_DINT();其中_EINT();是打开所有可屏蔽中断的使能,而_DINT();时关闭所有可屏蔽中断的使能。


试验:
程序中,如果使用了_EINT();语句,表明所有可屏蔽中断已被允许工作,但并不是说所有中断开始工作,如果想要让某个中断工作,还需要单独使能该中断的控制寄存器。
而使用_DINT();后,所有可屏蔽中断立即停止工作,此时即使单独使能某个中断控制寄存器,该中断仍不会工作,必须先用EINT使能所有中断后,才能通过使能某中断寄存器的方式让某个寄存器工作。
验证:
一般情况下,使用_EINT();和_DINT()语句后,最好过几个时钟周期再去配置具体的中断控制寄存器,可以在_EINT();和_DINT()语句后加几个NOP();语句。
备注:
MSP430单片机没有中断嵌套,程序进入某个中断程序后,系统会自动执行_DINT();操作,此时若想实现中断嵌套,必须先用_EINT();语句,然后再打开想要嵌套的中断。








关键字:
阅读原文 浏览量:546 收藏:1
此内容由EEWORLD论坛网友 tiankai001 原创,如需转载或用于商业用途需征 得作者同意并注明出处

上一篇: PCB设计绝招,一般人我不告诉他!!!
下一篇: DIY纯手工打造恒温加热台

评论

登录 | 注册 需要登陆才可发布评论    
评论加载中......
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright ? 2005-2017 EEWORLD.com.cn, Inc. All rights reserved