
【黄金搭档mbed+labview】初体验* g2 c$ [9 }: ?1 f8 Z2 K% A: b 1 R! ]7 g# e" q' A$ Q7 m7 S5 s Nucleo+Mbed +labview 小试牛刀之-模拟量读取 并解决驱动问题* T9 i( I0 h& H/ @ 本实验前提是安装了nucleo的三合一驱动:mass storage/ usb vcp/usb debug k- x& n3 G2 N8 m. s+ Y 首先安装labview,本人是NI LabVIEW 2016 (64-bit) 再安装针对labview的设备驱动,我选的是NI VISA16.00full 4 L: \) {/ A9 v1 c# k( @ 有了它labview才能识别各种数据采集设备的端口' ?' L( i/ d8 T" r0 M, a& } 安装之后 原nucleo三合一驱动会被ni VISA驱动代替,显示三个stlink设备' L+ S9 m% @0 ?6 @ 导致原有的stlink不能使用,MDK,AIR等软件都不能识别,也不能下载程序. f- j, J) x7 _4 ` 解决办法就是将VISA驱动删掉,再重装一遍,我装的是STSW_LINK009_V1.01 通过usb 的虚拟串口向labview传输数据 //另外CP2102 usb转TTL也可以顺利被labview识别, ![]() 然后就可以正常使用mbed+labview编程了,4 z1 `9 R/ s& ]5 p) @3 T 代码如下: - H% D! m3 u( D/ f( I #include "mbed.h" DigitalOut myled(LED1);" ~3 p! s5 ^- C$ `8 m AnalogIn ain(A3);! u: ?) V( o6 {: d1 a * E7 i3 B% G3 ?& E. \ int main() {1 l* z8 v4 P) _, M; W2 r: G float ADCdata; while (1) {- a/ K$ C+ S+ X for (int i=0;i<=9;i++) { ADCdata=ADCdata+ain.read(); }8 h3 N8 A: b' i H! V ADCdata=ADCdata/10;; F% j d8 H8 q. A/ I printf("%f\n", ADCdata); myled = !myled; wait(0.01);% U1 d0 C1 c) z& ~/ b; K8 Z } }) X# ~7 Y9 k1 m6 i 这个例子源于mbed上的Cookbook,4 x! Y2 i" O! ^( a1 R 通过一个电位器输入0v~3.3v电压到nucleo的 A3口,& D3 K0 t5 ]' c. }9 ] 经过nucleo采集输出0~1的数字量到labview以波形图连续显示和数字表盘瞬时值显示5 s* t! ^! o2 i m stm32程序本人加了for循环求平均值,防止采集的数据跳变& y" J* F$ H" A3 G4 U labview程序前面板可以选择串口,然后运行开始采集电压值& U. E" i4 ?, u Y& L& J6 F ![]() labview程序数据流表示:在while循环内通过mbed read函数读取串口,/ L& v: d+ |8 L5 c* o/ _5 T2 x: p: @" H 然后输出到波形图和数字仪表控件 通过stop布尔值控制退出while循环 ![]() ![]() 提示:本人AMD的cpu,labview连接mbed采集几分钟之后,电脑会出现蓝屏显示 usb错误,希望坛友积极反馈遇到的其他问题。3 Y7 |- {. V' k3 i2 n3 n' W3 @* X |
; w5 O/ I' h+ b! v
沙发自己占,
labview的VI库插件
参照本人上一贴! \: B% T2 f7 \. C
本实验VI$ S9 Z# y! Y. t6 m, _3 @, K
+ x9 f- K' V& G2 b- T* i2 l
7 `: X8 Y" M, _9 @; K) p+ j