Mbed OS 文档翻译 之 参考(API(驱动(RawSerial)))

RawSerial

                                                         

                                                                                       RawSerial 类层次结构

RawSerial 类提供 UART 功能,而不像 Serial 类那样使用 Stream 的打印和扫描功能。RawSerial 不会重新定位标准库打印和扫描功能。相反,RawSerial 重新实现打印和扫描功能,以使用每个目标的底层串行通信功能。有关目标串行支持,请参阅移植指南。这使得 RawSerial 适合用于 RTOS 的中断处理程序。

串行通道在构造函数中具有以下可配置参数:

  • Tx 和 Rx 引脚 - 物理串行发送和接收引脚。您可以将 Tx 或 Tx 引脚指定为未连接(NC)以进行 Simplex 通信,或指定两者以获得全双工。
  • 波特率 - 此设置是可选的构造函数参数。标准波特率范围从每秒几百位到每秒兆位。Mbed 微控制器上串行连接的默认设置为 9600 波特。也可以在运行时配置此设置。

可以在 RawSerial 对象的运行时配置以下参数。您可以在类引用中查看有关可配置设置和函数的更多信息。

  • 波特率 - 标准波特率范围从每秒几百位到每秒兆位。Mbed 微控制器上串行连接的默认设置为 9600 波特。
  • 数据长度 - 传输的数据可以是 7 位或 8 位长。Mbed 微控制器上串行连接的默认设置为 8 位。
  • 奇偶校验 - 您可以添加可选的奇偶校验位。对象自动设置奇偶校验位,使数据中的 1 的数量为奇数或偶数。奇偶校验设置为奇数,偶数或无。Arm Mbed 微控制器上串行连接的默认设置为 None。
  • 停止位 - 在传输数据和奇偶校验位之后,RawSerial 对象插入一个或两个停止位以 “frame” 数据。Mbed 微控制器上串行连接的默认设置是一个停止位。

9600 - 8 - N - 1 是串行端口设置的常用符号,描述了 Mbed 微控制器的默认设置。

RawSerial 类参考

mbed::RawSerial 类参考

公共成员函数
  RawSerial (PinName tx, PinName rx, int baud=MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE)
int  putc (int c)
int  getc ()
int  puts (const char *str)
int  printf (const char *format,...)
 公共成员函数继承自 mbed::SerialBase
void  baud (int baudrate)
void  format (int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
int  readable ()
int  writeable ()
void  attach (Callback< void()> func, IrqType type=RxIrq)
template
void  attach (T *obj, void(T::*method)(), IrqType type=RxIrq)
template
void  attach (T *obj, void(*method)(T *), IrqType type=RxIrq)
void  send_break ()
void  set_flow_control (Flow type, PinName flow1=NC, PinName flow2=NC)
int  write (const uint8_t *buffer, int length, const event_callback_t &callback, int event=SERIAL_EVENT_TX_COMPLETE)
int  write (const uint16_t *buffer, int length, const event_callback_t &callback, int event=SERIAL_EVENT_TX_COMPLETE)
void  abort_write ()
int  read (uint8_t *buffer, int length, const event_callback_t &callback, int event=SERIAL_EVENT_RX_COMPLETE, unsigned char char_match=SERIAL_RESERVED_CHAR_MATCH)
int  read (uint16_t *buffer, int length, const event_callback_t &callback, int event=SERIAL_EVENT_RX_COMPLETE, unsigned char char_match=SERIAL_RESERVED_CHAR_MATCH)
void  abort_read ()
int  set_dma_usage_tx (DMAUsage usage)
int  set_dma_usage_rx (DMAUsage usage)
受保护的成员函数
virtual void  lock (void)
virtual void  unlock (void)
 受保护的成员函数继承自 mbed::SerialBase
void  start_read (void *buffer, int buffer_size, char buffer_width, const event_callback_t &callback, int event, unsigned char char_match)
void  start_write (const void *buffer, int buffer_size, char buffer_width, const event_callback_t &callback, int event)
void  interrupt_handler_asynch (void)
  SerialBase (PinName tx, PinName rx, int baud)
int  _base_getc ()
int  _base_putc (int c)
其他继承成员
 继承自的公共类型 mbed::SerialBase
enum   Parity {
  None = 0, Odd, Even, Forced1,
  Forced0
}
enum   IrqType { RxIrq = 0, TxIrq, IrqCnt }
enum   Flow { Disabled = 0, RTS, CTS, RTSCTS }
 静态公共成员函数继承自 mbed::SerialBase
static void  _irq_handler (uint32_t id, SerialIrq irq_type)
 受保护的属性继承自 mbed::SerialBase
CThunk< SerialBase >  _thunk_irq
DMAUsage  _tx_usage
DMAUsage  _rx_usage
event_callback_t  _tx_callback
event_callback_t  _rx_callback
serial_t  _serial
Callback< void()>  _irq [IrqCnt]
int  _baud

      注意: 在 Windows 计算机上,您需要安装 USB 串行驱动程序。请参阅 Windows 串行设置。

RawSerial hello, world

main.cpp                                                                                                                                                 导入到 Mbed IDE

/* mbed Example Program
 * Copyright (c) 2006-2014 ARM Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "mbed.h"
 
RawSerial pc(USBTX, USBRX); // tx, rx
 
int main() {
    pc.printf("Hello World!\n\r");
    while(1) {
        pc.putc(pc.getc()); // echo input back to terminal
    }
}

RawSerial 示例

示例一

以波特率 19200 向设备写入消息。

main.cpp                                                                                                                                                导入到 Mbed IDE

#include "mbed.h"
 
RawSerial device(USBTX, USBRX);  // tx, rx
 
int main() {
    device.baud(19200);
    device.printf("Hello World\n");
}

示例二

在生成串行中断期间附加要调用的函数。此功能默认为 RX 引脚上的中断:

main.cpp                                                                                                                                              导入到 Mbed IDE

#include "mbed.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);

RawSerial pc(USBTX, USBRX);

void callback_ex() {
    // Note: you need to actually read from the serial to clear the RX interrupt
    pc.putc(pc.getc());
    led2 = !led2;
}

int main() {
    pc.attach(&callback_ex);

    while (1) {
        led1 = !led1;
        wait(0.5);
    }
}

Mbed OS 示例

RawSerial 的常见用例是 IRQ 重 UART 操作,例如 ESP8266 驱动程序中的 ATParser。该驱动器在用户提供的引脚上使用 UART 与片外 ESP8266 模块通信。

你可能感兴趣的:(Mbed,OS)