
【黄金搭档mbed+labview】初体验% v) q y( t, s0 U Nucleo+Mbed +labview 小试牛刀之-模拟量读取 并解决驱动问题* F$ }' A9 M, e& w8 U! k# r 本实验前提是安装了nucleo的三合一驱动:mass storage/ usb vcp/usb debug 首先安装labview,本人是NI LabVIEW 2016 (64-bit) 再安装针对labview的设备驱动,我选的是NI VISA16.00full , L0 i/ u* T" O4 b% Z 有了它labview才能识别各种数据采集设备的端口 安装之后 原nucleo三合一驱动会被ni VISA驱动代替,显示三个stlink设备 导致原有的stlink不能使用,MDK,AIR等软件都不能识别,也不能下载程序 解决办法就是将VISA驱动删掉,再重装一遍,我装的是STSW_LINK009_V1.011 ^" ^' v" Q2 k2 i0 Z 通过usb 的虚拟串口向labview传输数据 //另外CP2102 usb转TTL也可以顺利被labview识别,$ V) r2 Y5 K% G8 P* b" m. O ![]() 然后就可以正常使用mbed+labview编程了,0 ?5 V# S, d6 z) x l | ! x% x$ w$ X. E5 ^ 代码如下: 2 j) n$ w; x/ [" r. B3 E+ f1 J #include "mbed.h" DigitalOut myled(LED1);8 T2 \+ i( q+ L" y! z1 j% K AnalogIn ain(A3);( J+ r2 k( B% B1 b; O$ B& a2 d- s _: ?& X/ C, t: Z* I9 M int main() {; G3 i9 f* h1 \$ h7 R/ Q float ADCdata;) i; ]1 W) n9 K3 R* ^* @1 D( t4 H while (1) { for (int i=0;i<=9;i++) { ADCdata=ADCdata+ain.read(); }+ i# V2 P* `! I: i ADCdata=ADCdata/10; printf("%f\n", ADCdata); myled = !myled;4 l% S; S. {" B @' z' y9 u1 [ wait(0.01);) |6 z) W+ ]- O" K7 h% N q) { }5 y- ]8 U% a, |! g. e* v( }% I }5 L& d6 x; F2 g/ G+ Q( m 这个例子源于mbed上的Cookbook,8 D& M$ Z, b5 O( K+ B x' j 通过一个电位器输入0v~3.3v电压到nucleo的 A3口, 经过nucleo采集输出0~1的数字量到labview以波形图连续显示和数字表盘瞬时值显示 stm32程序本人加了for循环求平均值,防止采集的数据跳变 labview程序前面板可以选择串口,然后运行开始采集电压值 ![]() labview程序数据流表示:在while循环内通过mbed read函数读取串口, 然后输出到波形图和数字仪表控件 通过stop布尔值控制退出while循环 ![]() ![]() 提示:本人AMD的cpu,labview连接mbed采集几分钟之后,电脑会出现蓝屏显示 usb错误,希望坛友积极反馈遇到的其他问题。( J2 U$ }0 h0 O ' g0 d1 \( O X# h9 B |
沙发自己占,
labview的VI库插件6 m# E. L: Q# R9 Y5 M% M" G
参照本人上一贴
本实验VI7 S; Q: s- Q' O2 l
8 H" u |/ {. x