【黄金搭档mbed+labview】初体验- A }: Q' H2 q 4 z V* k2 p" B5 X. Y Nucleo+Mbed +labview 小试牛刀之-模拟量读取 并解决驱动问题' {) Y/ K4 P& j 本实验前提是安装了nucleo的三合一驱动:mass storage/ usb vcp/usb debug 首先安装labview,本人是NI LabVIEW 2016 (64-bit)! `' x7 |) Y" r$ C 再安装针对labview的设备驱动,我选的是NI VISA16.00full 5 ?! Q2 E+ j- N }- Z0 V 有了它labview才能识别各种数据采集设备的端口 安装之后 原nucleo三合一驱动会被ni VISA驱动代替,显示三个stlink设备4 Y1 |, e8 T" y6 N3 l" L8 G 导致原有的stlink不能使用,MDK,AIR等软件都不能识别,也不能下载程序 解决办法就是将VISA驱动删掉,再重装一遍,我装的是STSW_LINK009_V1.01 通过usb 的虚拟串口向labview传输数据. n' ^5 M! r$ @- A2 U0 M* z //另外CP2102 usb转TTL也可以顺利被labview识别, 然后就可以正常使用mbed+labview编程了,7 l9 c! O" b0 V 6 n: w' F) |" y) H 代码如下: #include "mbed.h"2 Y2 C; o: |/ E ' D3 w$ R/ t' T$ t DigitalOut myled(LED1); AnalogIn ain(A3);' `5 m" M P- V. n/ ~ - }, q3 A( ?- O0 O% L+ I/ R int main() { float ADCdata;+ h: U! a. y) q6 `# U6 i; A while (1) { for (int i=0;i<=9;i++)' f& r4 ?+ T0 O" s8 G0 ^ { x6 h2 l" K ]. h ADCdata=ADCdata+ain.read(); }7 t7 d! l* l3 m ADCdata=ADCdata/10; printf("%f\n", ADCdata);8 x4 K" n" v; I7 _ myled = !myled;5 k: F+ r: L4 C2 w$ N7 {' W wait(0.01); }( l) V* T1 K. Q8 v } 这个例子源于mbed上的Cookbook, 通过一个电位器输入0v~3.3v电压到nucleo的 A3口,: q/ t7 F! H: ~* P 经过nucleo采集输出0~1的数字量到labview以波形图连续显示和数字表盘瞬时值显示 stm32程序本人加了for循环求平均值,防止采集的数据跳变7 }2 A% c t; ? k9 v- e3 x8 P1 a labview程序前面板可以选择串口,然后运行开始采集电压值" Z3 G0 W- c! q( W labview程序数据流表示:在while循环内通过mbed read函数读取串口,5 Q! @3 L; z( z3 R# T 然后输出到波形图和数字仪表控件 通过stop布尔值控制退出while循环6 u% g' I* Y/ q: ^ 提示:本人AMD的cpu,labview连接mbed采集几分钟之后,电脑会出现蓝屏显示 usb错误,希望坛友积极反馈遇到的其他问题。# P2 d, r+ h' v9 ]0 m 1 d2 x* m7 h* R& E |
* a& z$ z+ Z# N" H! G9 [
沙发自己占,
labview的VI库插件
参照本人上一贴2 C( Y* l. r7 R/ p( }0 w
( c8 n( |0 N* Y8 h
本实验VI