blob: 591bb05ed699a7006cdf737da82e6d4576cf639d [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>UART &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../../../genindex.html"/>
<link rel="search" title="Search" href="../../../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../../../index.html"/>
<link rel="up" title="Hardware Abstraction Layer" href="../hal.html"/>
<link rel="next" title="SPI" href="../hal_spi/hal_spi.html"/>
<link rel="prev" title="GPIO" href="../hal_gpio/hal_gpio.html"/>
<script src="../../../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../../../os_user_guide.html">OS User Guide</a> /
<a href="../hal.html">Hardware Abstraction Layer</a> /
UART
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/hal/hal_uart/hal_uart.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_11_0" selected="selected" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" >
Version: 1.6.0
</option>
<option value="/v1_5_0" >
Version: 1.5.0
</option>
<option value="/v1_4_0" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../os_user_guide.html">OS User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../../core_os/mynewt_os.html">Kernel</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../system_modules.html">System</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../hal.html">Hardware Abstraction</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../hal_timer/hal_timer.html">Timer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_gpio/hal_gpio.html">GPIO</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">UART</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_spi/hal_spi.html">SPI</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_i2c/hal_i2c.html">I2C</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_flash/hal_flash.html">Flash</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_system/hal_sys.html">System</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_watchdog/hal_watchdog.html">Watchdog</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_bsp/hal_bsp.html">BSP</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_os_tick/hal_os_tick.html">OS Tick</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_creation.html">Creating New HAL Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hal_in_libraries.html">Using HAL in Your Libraries</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../bootloader/bootloader.html">Secure Bootloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../split/split.html">Split Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../core_os/porting/port_os.html">Porting Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../baselibc.html">Baselibc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../drivers/driver.html">Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../devmgmt/newtmgr.html">Device Management with Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mcumgr/mcumgr.html">Device Management with MCUmgr</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../imgmgr/imgmgr.html">Image Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sysinitconfig/sysinitconfig.html">Compile-Time Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sysinitdown/sysinitdown.html">System Initialization and Shutdown</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../extcmd/extcmd.html">Build-Time Hooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../fs/fs.html">File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../fcb/fcb.html">Flash Circular Buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sensor_framework/sensor_framework.html">Sensor Framework</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../testutil/testutil.html">Test Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../json/json.html">JSON</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mfg/mfg.html">Manufacturing support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../bsp/index.html">Board support</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.11.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="uart">
<h1>UART<a class="headerlink" href="#uart" title="Permalink to this headline"></a></h1>
<p>The hardware independent UART interface for Mynewt.</p>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
<p>Contains the basic operations to send and receive data over a UART
(Universal Asynchronous Receiver Transmitter). It also includes the API
to apply settings such as speed, parity etc. to the UART. The UART port
should be closed before any reconfiguring.</p>
</div>
<div class="section" id="examples">
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h2>
<p>This example shows a user writing a character to the uart in blocking
mode where the UART has to block until character has been sent.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">/* write to the console with blocking */</span>
<span class="go">{</span>
<span class="go"> char *str = &quot;Hello World!&quot;;</span>
<span class="go"> char *ptr = str;</span>
<span class="go"> while(*ptr) {</span>
<span class="go"> hal_uart_blocking_tx(MY_UART, *ptr++);</span>
<span class="go"> }</span>
<span class="go"> hal_uart_blocking_tx(MY_UART, &#39;\n&#39;);</span>
<span class="go">}</span>
</pre></div>
</div>
</div>
<div class="section" id="api">
<h2>API<a class="headerlink" href="#api" title="Permalink to this headline"></a></h2>
<dl class="c enum">
<dt id="c.hal_uart_parity">
<span class="target" id="group___h_a_l_uart_1ga54a2cb674e61c87d0659a9ee68b79046"></span><em class="property"><span class="pre">enum</span> </em><code class="sig-name descname"><span class="pre">hal_uart_parity</span></code><a class="headerlink" href="#c.hal_uart_parity" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt id="c.hal_uart_parity.HAL_UART_PARITY_NONE">
<span class="target" id="group___h_a_l_uart_1gga54a2cb674e61c87d0659a9ee68b79046a04bc6026ce33740e3290bf2489a1ab66"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_UART_PARITY_NONE</span></code><a class="headerlink" href="#c.hal_uart_parity.HAL_UART_PARITY_NONE" title="Permalink to this definition"></a><br /></dt>
<dd><p>No Parity. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_uart_parity.HAL_UART_PARITY_ODD">
<span class="target" id="group___h_a_l_uart_1gga54a2cb674e61c87d0659a9ee68b79046a1ad3c3f7814a00e6b5bf06dbd5c03923"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_UART_PARITY_ODD</span></code><a class="headerlink" href="#c.hal_uart_parity.HAL_UART_PARITY_ODD" title="Permalink to this definition"></a><br /></dt>
<dd><p>Odd parity. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_uart_parity.HAL_UART_PARITY_EVEN">
<span class="target" id="group___h_a_l_uart_1gga54a2cb674e61c87d0659a9ee68b79046afe68bdf645970e0e83dca876087fa973"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_UART_PARITY_EVEN</span></code><a class="headerlink" href="#c.hal_uart_parity.HAL_UART_PARITY_EVEN" title="Permalink to this definition"></a><br /></dt>
<dd><p>Even parity. </p>
</dd></dl>
</dd></dl>
<dl class="c enum">
<dt id="c.hal_uart_flow_ctl">
<span class="target" id="group___h_a_l_uart_1ga5aa2065acd6fab6c562b3e7f11799dd3"></span><em class="property"><span class="pre">enum</span> </em><code class="sig-name descname"><span class="pre">hal_uart_flow_ctl</span></code><a class="headerlink" href="#c.hal_uart_flow_ctl" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt id="c.hal_uart_flow_ctl.HAL_UART_FLOW_CTL_NONE">
<span class="target" id="group___h_a_l_uart_1gga5aa2065acd6fab6c562b3e7f11799dd3a602a86e509c8edc7a400d47a7f19046f"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_UART_FLOW_CTL_NONE</span></code><a class="headerlink" href="#c.hal_uart_flow_ctl.HAL_UART_FLOW_CTL_NONE" title="Permalink to this definition"></a><br /></dt>
<dd><p>No Flow Control. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_uart_flow_ctl.HAL_UART_FLOW_CTL_RTS_CTS">
<span class="target" id="group___h_a_l_uart_1gga5aa2065acd6fab6c562b3e7f11799dd3aefef8f1847e02b9b414f26061bb29443"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_UART_FLOW_CTL_RTS_CTS</span></code><a class="headerlink" href="#c.hal_uart_flow_ctl.HAL_UART_FLOW_CTL_RTS_CTS" title="Permalink to this definition"></a><br /></dt>
<dd><p>RTS/CTS. </p>
</dd></dl>
</dd></dl>
<dl class="c type">
<dt id="c.hal_uart_tx_char">
<span class="target" id="group___h_a_l_uart_1ga048e6274132ffda2c1ba3fa97a967550"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">hal_uart_tx_char</span></code><span class="pre">)</span><span class="sig-paren">(</span><span class="pre">void</span> <span class="pre">*</span><span class="pre">arg</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_tx_char" title="Permalink to this definition"></a><br /></dt>
<dd><p>Function prototype for UART driver to ask for more data to send. </p>
<p>Returns -1 if no more data is available for TX. Driver must call this with interrupts disabled. </p>
</dd></dl>
<dl class="c type">
<dt id="c.hal_uart_tx_done">
<span class="target" id="group___h_a_l_uart_1ga465fd0514a4a013c4719edbecf7fad79"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">void</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">hal_uart_tx_done</span></code><span class="pre">)</span><span class="sig-paren">(</span><span class="pre">void</span> <span class="pre">*</span><span class="pre">arg</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_tx_done" title="Permalink to this definition"></a><br /></dt>
<dd><p>Function prototype for UART driver to report that transmission is complete. </p>
<p>This should be called when transmission of last byte is finished. Driver must call this with interrupts disabled. </p>
</dd></dl>
<dl class="c type">
<dt id="c.hal_uart_rx_char">
<span class="target" id="group___h_a_l_uart_1ga584da9fb7bd0c337f05b45ec958cf3e9"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">hal_uart_rx_char</span></code><span class="pre">)</span><span class="sig-paren">(</span><span class="pre">void</span> <span class="pre">*</span><span class="pre">arg</span>, <span class="pre">uint8_t</span> <span class="pre">byte</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_rx_char" title="Permalink to this definition"></a><br /></dt>
<dd><p>Function prototype for UART driver to report incoming byte of data. </p>
<p>Returns -1 if data was dropped. Driver must call this with interrupts disabled. </p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_init_cbs">
<span class="target" id="group___h_a_l_uart_1gaed951e1b190b127ea41f7a0081c2fc91"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">hal_uart_init_cbs</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em>, <a class="reference internal" href="#c.hal_uart_tx_char" title="hal_uart_tx_char"><span class="pre">hal_uart_tx_char</span></a> <em><span class="pre">tx_func</span></em>, <a class="reference internal" href="#c.hal_uart_tx_done" title="hal_uart_tx_done"><span class="pre">hal_uart_tx_done</span></a> <em><span class="pre">tx_done</span></em>, <a class="reference internal" href="#c.hal_uart_rx_char" title="hal_uart_rx_char"><span class="pre">hal_uart_rx_char</span></a> <em><span class="pre">rx_func</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">arg</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_init_cbs" title="Permalink to this definition"></a><br /></dt>
<dd><p>Initializes given uart. </p>
<p>Mapping of logical UART number to physical UART/GPIO pins is in BSP. </p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_init">
<span class="target" id="group___h_a_l_uart_1ga1c1c1fe6f1a391601028864ecbf82dad"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">hal_uart_init</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">cfg</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_init" title="Permalink to this definition"></a><br /></dt>
<dd><p>Initialize the HAL uart. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The uart number to configure </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cfg</span></code>: Hardware specific uart configuration. This is passed from BSP directly to the MCU specific driver.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_config">
<span class="target" id="group___h_a_l_uart_1ga26356de3e25529e34b2f13a400476839"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">hal_uart_config</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em>, <span class="pre">int32_t</span> <em><span class="pre">speed</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">databits</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">stopbits</span></em>, <em class="property"><span class="pre">enum</span></em> <a class="reference internal" href="#c.hal_uart_parity" title="hal_uart_parity"><span class="pre">hal_uart_parity</span></a> <em><span class="pre">parity</span></em>, <em class="property"><span class="pre">enum</span></em> <a class="reference internal" href="#c.hal_uart_flow_ctl" title="hal_uart_flow_ctl"><span class="pre">hal_uart_flow_ctl</span></a> <em><span class="pre">flow_ctl</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_config" title="Permalink to this definition"></a><br /></dt>
<dd><p>Applies given configuration to UART. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The UART number to configure </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">speed</span></code>: The baudrate in bps to configure </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">databits</span></code>: The number of databits to send per byte </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">stopbits</span></code>: The number of stop bits to send </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">parity</span></code>: The UART parity </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">flow_ctl</span></code>: Flow control settings on the UART</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_close">
<span class="target" id="group___h_a_l_uart_1ga809e353287e60b88ed9d6e87bd96d4af"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">hal_uart_close</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_close" title="Permalink to this definition"></a><br /></dt>
<dd><p>Close UART port. </p>
<p>Can call <a class="reference internal" href="#group___h_a_l_uart_1ga26356de3e25529e34b2f13a400476839"><span class="std std-ref">hal_uart_config()</span></a> with different settings after calling this.</p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The UART number to close </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_start_tx">
<span class="target" id="group___h_a_l_uart_1gad30876672c3a563654b2fa8d5030e418"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">hal_uart_start_tx</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_start_tx" title="Permalink to this definition"></a><br /></dt>
<dd><p>More data queued for transmission. </p>
<p>UART driver will start asking for that data.</p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The UART number to start TX on </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_start_rx">
<span class="target" id="group___h_a_l_uart_1ga758ae010736ef0fb2cfcc096ab22a707"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">hal_uart_start_rx</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_start_rx" title="Permalink to this definition"></a><br /></dt>
<dd><p>Upper layers have consumed some data, and are now ready to receive more. </p>
<p>This is meaningful after uart_rx_char callback has returned -1 telling that no more data can be accepted.</p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The UART number to begin RX on </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_uart_blocking_tx">
<span class="target" id="group___h_a_l_uart_1ga5b2feb681598e2151481e24f8115f913"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">hal_uart_blocking_tx</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">uart</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">byte</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_uart_blocking_tx" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is type of write where UART has to block until character has been sent. </p>
<p>Used when printing diag output from system crash. Must be called with interrupts disabled.</p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">uart</span></code>: The UART number to TX on </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">byte</span></code>: The byte to TX on the UART </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="../hal_spi/hal_spi.html" class="btn btn-neutral float-right" title="SPI" accesskey="n">Next: SPI <span class="fa fa-arrow-circle-right"></span></a>
<a href="../hal_gpio/hal_gpio.html" class="btn btn-neutral" title="GPIO" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: GPIO</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../../../_static/js/main.js"></script>
</body>
</html>