|
【黄金搭档mbed+labview】初体验 Nucleo+Mbed +labview 小试牛刀之-模拟量读取 并解决驱动问题8 e- m3 C! N; X; O ' t5 a9 d6 i# B$ O: n9 f q# f 本实验前提是安装了nucleo的三合一驱动:mass storage/ usb vcp/usb debug 首先安装labview,本人是NI LabVIEW 2016 (64-bit) 再安装针对labview的设备驱动,我选的是NI VISA16.00full 有了它labview才能识别各种数据采集设备的端口 安装之后 原nucleo三合一驱动会被ni VISA驱动代替,显示三个stlink设备- ?% T( B+ E# [+ z, d2 r 导致原有的stlink不能使用,MDK,AIR等软件都不能识别,也不能下载程序% C% I, k' X6 \4 t+ @7 e# x4 U 解决办法就是将VISA驱动删掉,再重装一遍,我装的是STSW_LINK009_V1.01( u2 y6 l: I$ P; n: v( { 通过usb 的虚拟串口向labview传输数据 //另外CP2102 usb转TTL也可以顺利被labview识别,9 A* a- F! u& }* R
然后就可以正常使用mbed+labview编程了, 代码如下:. `" x: A' U* H7 Q6 A4 D/ a9 A) g4 c0 L #include "mbed.h" DigitalOut myled(LED1);/ b" M% E3 U/ p AnalogIn ain(A3); int main() {! u5 a0 h9 o. M$ _ float ADCdata;7 U/ u2 C7 S7 Q: ^. o+ Y3 k5 | while (1) {4 R- Z9 u; [ y8 y9 _& z for (int i=0;i<=9;i++)! ]' P6 |6 i [' {( A5 U& } {# }! F' j2 }8 k8 @" R4 P2 A- K ADCdata=ADCdata+ain.read(); } ADCdata=ADCdata/10;, Y. z U1 n. [4 G% W printf("%f\n", ADCdata);( D# d- N: E3 l$ E1 h s myled = !myled; wait(0.01);9 |. m7 U% L6 M } } 这个例子源于mbed上的Cookbook,2 f' n& Y# p- Q( F% G0 D 通过一个电位器输入0v~3.3v电压到nucleo的 A3口,4 @( D0 H% y. j* }: `! Z3 H 经过nucleo采集输出0~1的数字量到labview以波形图连续显示和数字表盘瞬时值显示7 ^0 q" r5 L0 T" }0 [ stm32程序本人加了for循环求平均值,防止采集的数据跳变+ K$ s& H/ _. r- ` labview程序前面板可以选择串口,然后运行开始采集电压值
labview程序数据流表示:在while循环内通过mbed read函数读取串口, 然后输出到波形图和数字仪表控件 通过stop布尔值控制退出while循环0 _& y$ d6 `2 E+ J6 T9 V3 v7 [/ l
提示:本人AMD的cpu,labview连接mbed采集几分钟之后,电脑会出现蓝屏显示 usb错误,希望坛友积极反馈遇到的其他问题。0 x8 Q$ y4 X1 D$ @4 F+ P 8 a+ P- Q' d3 A# i" o1 L |
微信公众号
手机版
沙发自己占,
labview的VI库插件
参照本人上一贴
- t1 A) b% v% z, A
本实验VI+ \) a- r2 {) g! a9 r, u" Y3 m4 t& T
& W, H7 t1 j- S9 ~$ V
. L& R( l7 Y1 Z' L