
今天主要是来学习下mbed平台下,串口的使用方法。) D' F$ M' R5 N( m9 i! F 同样的方法,还是在mbed编辑器下,main.cpp写入如图1所示的程序,然后编译后把bin文件复制到NUCLEO的U盘中,实现程序的下载,此时会发现板子上的绿色LED灯每一秒闪烁一次,程序中的SERIAL_TX和SERIAL_RX对应的管脚是PA2和PA3,将PA2和PA3连接到电脑串口调试工具,可以看到串口调试工具上显示如图2所示,即先显示“Hello World!”,然后每一秒显示一个字符串。, k9 G" ^4 M% P& s% w+ B% ] 程序分析:首先Serial pc(SERIAL_TX,SERIAL_RX):是把tx,rx设成Uart1的输出输入管脚 DigitalOut myled(LED1);就是把LED1对应的管脚设置为数字输出,对应电路板,就是PB13管脚,DigitalOut myled1(PA_12),这个是我把PA_12设置为输出,外部接了个LED。pc.printf():printf是pc类下的一个方法,它的作用和C语言中的printf是一样的。7 [2 d# i: ]) E. Q1 K8 d/ j 串口对象还有getc和putc方法,作用就是从串口读取一个字符和向串口发送一个字符。, j8 m) C1 ~6 D4 V1 f 在主程序中试验这个方法:在while循环下加入pc.putc(pc.getc());就是将收到的数据发送出去。试验发现如图3所示,用串口发送数据后,串口显示数据,但是在串口没有发送数据时,串口也不会显示数据,这是因为pc.putc(pc.getc());的机制是有数据处理数据,没有数据就一直等待,所以导致下面的程序不会执行。 换种方法,使用串口中断方式:' \# P( U8 ?1 p/ D 程序如图5所示,也是使用了attach方法,它就是设置Uart中断所需要执行的用户自定义函数,也就是中断处理函数。这样就可以发现,如图6所示,如果串口没有发送数据,那么主程序中的程序会执行,如果串口有发送数据,那么把发送的数据显示出来。2 `1 p) ^$ U: Y: ~" J$ G+ b' I 其他的方法使用也是一样的,比如要设置串口的波特率,可以按照图7的方法就可以了。: Q, V& {7 k% D |
在mbed平台上用的例程# o. t7 G7 k7 q
波特率9600 连接好 也编译好了 但是串口助手一直没有收到数据. U* O! U; i6 s* ~$ K
我看有人说要把板子上的两对TX/RX引脚用杜邦线对应连上
我也照做了。。但是仍然没反应。。不知道你实验时在硬件连接上有什么要连的地方吗?
回复:【Nucleo板开发日志】+mbed平台---串口学习
【使用指南】社区论坛帖子如何直接显示图片
注意点击插入图片可以在帖子中,把图片直接显示出来
回复:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
回复:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
回复:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习
回复:【Nucleo板开发日志】+mbed平台---串口学习
RE:【Nucleo板开发日志】+mbed平台---串口学习