
今天主要是来学习下mbed平台下,串口的使用方法。 同样的方法,还是在mbed编辑器下,main.cpp写入如图1所示的程序,然后编译后把bin文件复制到NUCLEO的U盘中,实现程序的下载,此时会发现板子上的绿色LED灯每一秒闪烁一次,程序中的SERIAL_TX和SERIAL_RX对应的管脚是PA2和PA3,将PA2和PA3连接到电脑串口调试工具,可以看到串口调试工具上显示如图2所示,即先显示“Hello World!”,然后每一秒显示一个字符串。 程序分析:首先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是一样的。 串口对象还有getc和putc方法,作用就是从串口读取一个字符和向串口发送一个字符。: z2 d5 t7 l$ b0 l) I. Z8 W 在主程序中试验这个方法:在while循环下加入pc.putc(pc.getc());就是将收到的数据发送出去。试验发现如图3所示,用串口发送数据后,串口显示数据,但是在串口没有发送数据时,串口也不会显示数据,这是因为pc.putc(pc.getc());的机制是有数据处理数据,没有数据就一直等待,所以导致下面的程序不会执行。/ e6 F6 q: D/ p2 o 换种方法,使用串口中断方式: y7 q5 |# r6 q1 {4 ]6 _ 程序如图5所示,也是使用了attach方法,它就是设置Uart中断所需要执行的用户自定义函数,也就是中断处理函数。这样就可以发现,如图6所示,如果串口没有发送数据,那么主程序中的程序会执行,如果串口有发送数据,那么把发送的数据显示出来。% w/ H$ _6 }; U$ @) M 其他的方法使用也是一样的,比如要设置串口的波特率,可以按照图7的方法就可以了。* O; Y1 `( `+ a% V; R4 U! j5 c |
在mbed平台上用的例程
波特率9600 连接好 也编译好了 但是串口助手一直没有收到数据* C) u q3 p3 R" N! K, ^, V
我看有人说要把板子上的两对TX/RX引脚用杜邦线对应连上
我也照做了。。但是仍然没反应。。不知道你实验时在硬件连接上有什么要连的地方吗?+ G9 ~/ \6 T* n# ]3 T. M
回复:【Nucleo板开发日志】+mbed平台---串口学习
【使用指南】社区论坛帖子如何直接显示图片 $ F, D# ^8 O- M; U
注意点击插入图片可以在帖子中,把图片直接显示出来
回复:【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平台---串口学习