]> Git Repo - pico-vscode.git/blob - web/docs/group__hardware__pwm.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__hardware__pwm.html
1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5         <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6         <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7         <meta name="generator" content="Doxygen 1.9.4"/>
8         <meta name="viewport" content="width=device-width, initial-scale=1"/>
9         <title>Raspberry Pi Pico SDK: hardware_pwm</title>
10         <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11         <script type="text/javascript" src="jquery.js"></script>
12         <script type="text/javascript" src="dynsections.js"></script>
13         <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17         <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20     <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21         <link href="doxygen.css" rel="stylesheet" type="text/css" />
22         <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
46                 <div class="navigation-footer">
47                         <img src="logo-mobile.svg" alt="Raspberry Pi">
48                         <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__hardware__pwm.html',''); initResizable(); });
87 /* @license-end */
88 </script>
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92      onmouseover="return searchBox.OnSearchSelectShow()"
93      onmouseout="return searchBox.OnSearchSelectHide()"
94      onkeydown="return searchBox.OnSearchSelectKey(event)">
95 </div>
96
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0" 
100         name="MSearchResults" id="MSearchResults">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#define-members">Macros</a> &#124;
107 <a href="#enum-members">Enumerations</a> &#124;
108 <a href="#func-members">Functions</a>  </div>
109   <div class="headertitle"><div class="title">hardware_pwm<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
110 </div><!--header-->
111 <div class="contents">
112
113 <p>Hardware Pulse Width Modulation (PWM) API.  
114 <a href="#details">More...</a></p>
115 <table class="memberdecls">
116 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
117 Macros</h2></td></tr>
118 <tr class="memitem:gab346f319fab9342c66d48bdcc9bb7430"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gab346f319fab9342c66d48bdcc9bb7430">PWM_DREQ_NUM</a>(slice_num)</td></tr>
119 <tr class="memdesc:gab346f319fab9342c66d48bdcc9bb7430"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers for a given PWM slice.  <a href="group__hardware__pwm.html#gab346f319fab9342c66d48bdcc9bb7430">More...</a><br /></td></tr>
120 <tr class="separator:gab346f319fab9342c66d48bdcc9bb7430"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <tr class="memitem:gad7c4554b59132ddd4a9773cca4a27203"><td class="memItemLeft" align="right" valign="top"><a id="gad7c4554b59132ddd4a9773cca4a27203" name="gad7c4554b59132ddd4a9773cca4a27203"></a>
122 #define&#160;</td><td class="memItemRight" valign="bottom"><b>PWM_GPIO_SLICE_NUM</b>(gpio)</td></tr>
123 <tr class="memdesc:gad7c4554b59132ddd4a9773cca4a27203"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the PWM slice number for a given GPIO number. <br /></td></tr>
124 <tr class="separator:gad7c4554b59132ddd4a9773cca4a27203"><td class="memSeparator" colspan="2">&#160;</td></tr>
125 <tr class="memitem:ga799affc57db362720ea5f4a5aef381f8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga799affc57db362720ea5f4a5aef381f8">PWM_DEFAULT_IRQ_NUM</a>()</td></tr>
126 <tr class="memdesc:ga799affc57db362720ea5f4a5aef381f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the default PWM IRQ.  <a href="group__hardware__pwm.html#ga799affc57db362720ea5f4a5aef381f8">More...</a><br /></td></tr>
127 <tr class="separator:ga799affc57db362720ea5f4a5aef381f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
128 </table><table class="memberdecls">
129 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
130 Enumerations</h2></td></tr>
131 <tr class="memitem:ga0a00197703c8606641488cfff3f660e6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a> { <a class="el" href="group__hardware__pwm.html#gga0a00197703c8606641488cfff3f660e6acd3efbc3feaca58b87930008fdd8486b">PWM_DIV_FREE_RUNNING</a> = 0
132 , <a class="el" href="group__hardware__pwm.html#gga0a00197703c8606641488cfff3f660e6a186c27a4768fcb0c6930471db51861b7">PWM_DIV_B_HIGH</a> = 1
133 , <a class="el" href="group__hardware__pwm.html#gga0a00197703c8606641488cfff3f660e6ad9d2170532c2c9ab4016908544c8ad40">PWM_DIV_B_RISING</a> = 2
134 , <a class="el" href="group__hardware__pwm.html#gga0a00197703c8606641488cfff3f660e6a0b4afcaa75090169d3b7cbec4c0e2012">PWM_DIV_B_FALLING</a> = 3
135  }</td></tr>
136 <tr class="memdesc:ga0a00197703c8606641488cfff3f660e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">PWM Divider mode settings.  <a href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">More...</a><br /></td></tr>
137 <tr class="separator:ga0a00197703c8606641488cfff3f660e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
138 </table><table class="memberdecls">
139 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
140 Functions</h2></td></tr>
141 <tr class="memitem:ga8b2117d67a544f64c001f4f32c723eef"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga8b2117d67a544f64c001f4f32c723eef">pwm_gpio_to_slice_num</a> (uint gpio)</td></tr>
142 <tr class="memdesc:ga8b2117d67a544f64c001f4f32c723eef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine the PWM slice that is attached to the specified GPIO.  <a href="group__hardware__pwm.html#ga8b2117d67a544f64c001f4f32c723eef">More...</a><br /></td></tr>
143 <tr class="separator:ga8b2117d67a544f64c001f4f32c723eef"><td class="memSeparator" colspan="2">&#160;</td></tr>
144 <tr class="memitem:ga96ba504fe00cb8e0d88f0730cdfdaafc"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga96ba504fe00cb8e0d88f0730cdfdaafc">pwm_gpio_to_channel</a> (uint gpio)</td></tr>
145 <tr class="memdesc:ga96ba504fe00cb8e0d88f0730cdfdaafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine the PWM channel that is attached to the specified GPIO.  <a href="group__hardware__pwm.html#ga96ba504fe00cb8e0d88f0730cdfdaafc">More...</a><br /></td></tr>
146 <tr class="separator:ga96ba504fe00cb8e0d88f0730cdfdaafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
147 <tr class="memitem:ga031fe8a502c9640ed4f5fab74d6248ae"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga031fe8a502c9640ed4f5fab74d6248ae">pwm_config_set_phase_correct</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, bool phase_correct)</td></tr>
148 <tr class="memdesc:ga031fe8a502c9640ed4f5fab74d6248ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set phase correction in a PWM configuration.  <a href="group__hardware__pwm.html#ga031fe8a502c9640ed4f5fab74d6248ae">More...</a><br /></td></tr>
149 <tr class="separator:ga031fe8a502c9640ed4f5fab74d6248ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
150 <tr class="memitem:ga679802450ac829eff368e8f109df387e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga679802450ac829eff368e8f109df387e">pwm_config_set_clkdiv</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, float div)</td></tr>
151 <tr class="memdesc:ga679802450ac829eff368e8f109df387e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM clock divider in a PWM configuration.  <a href="group__hardware__pwm.html#ga679802450ac829eff368e8f109df387e">More...</a><br /></td></tr>
152 <tr class="separator:ga679802450ac829eff368e8f109df387e"><td class="memSeparator" colspan="2">&#160;</td></tr>
153 <tr class="memitem:ga3b0d7a6e493b4dc9ded8f53fb9be474c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga3b0d7a6e493b4dc9ded8f53fb9be474c">pwm_config_set_clkdiv_int_frac</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, uint8_t integer, uint8_t fract)</td></tr>
154 <tr class="memdesc:ga3b0d7a6e493b4dc9ded8f53fb9be474c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM clock divider in a PWM configuration using an 8:4 fractional value.  <a href="group__hardware__pwm.html#ga3b0d7a6e493b4dc9ded8f53fb9be474c">More...</a><br /></td></tr>
155 <tr class="separator:ga3b0d7a6e493b4dc9ded8f53fb9be474c"><td class="memSeparator" colspan="2">&#160;</td></tr>
156 <tr class="memitem:ga1d60d45df884a7abbde52e326586d55a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga1d60d45df884a7abbde52e326586d55a">pwm_config_set_clkdiv_int</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, uint div)</td></tr>
157 <tr class="memdesc:ga1d60d45df884a7abbde52e326586d55a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM clock divider in a PWM configuration.  <a href="group__hardware__pwm.html#ga1d60d45df884a7abbde52e326586d55a">More...</a><br /></td></tr>
158 <tr class="separator:ga1d60d45df884a7abbde52e326586d55a"><td class="memSeparator" colspan="2">&#160;</td></tr>
159 <tr class="memitem:ga27a86a921b2ad2ebd811db1255d34d06"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga27a86a921b2ad2ebd811db1255d34d06">pwm_config_set_clkdiv_mode</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, enum <a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a> mode)</td></tr>
160 <tr class="memdesc:ga27a86a921b2ad2ebd811db1255d34d06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM counting mode in a PWM configuration.  <a href="group__hardware__pwm.html#ga27a86a921b2ad2ebd811db1255d34d06">More...</a><br /></td></tr>
161 <tr class="separator:ga27a86a921b2ad2ebd811db1255d34d06"><td class="memSeparator" colspan="2">&#160;</td></tr>
162 <tr class="memitem:gab459185e217d5e215dae3cfb3d6de1b5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gab459185e217d5e215dae3cfb3d6de1b5">pwm_config_set_output_polarity</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, bool a, bool b)</td></tr>
163 <tr class="memdesc:gab459185e217d5e215dae3cfb3d6de1b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set output polarity in a PWM configuration.  <a href="group__hardware__pwm.html#gab459185e217d5e215dae3cfb3d6de1b5">More...</a><br /></td></tr>
164 <tr class="separator:gab459185e217d5e215dae3cfb3d6de1b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
165 <tr class="memitem:gad6cf6d9237144234732a50eb6d5e4fe9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gad6cf6d9237144234732a50eb6d5e4fe9">pwm_config_set_wrap</a> (<a class="el" href="structpwm__config.html">pwm_config</a> *c, uint16_t wrap)</td></tr>
166 <tr class="memdesc:gad6cf6d9237144234732a50eb6d5e4fe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM counter wrap value in a PWM configuration.  <a href="group__hardware__pwm.html#gad6cf6d9237144234732a50eb6d5e4fe9">More...</a><br /></td></tr>
167 <tr class="separator:gad6cf6d9237144234732a50eb6d5e4fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
168 <tr class="memitem:ga01d3e90bb7aa9a8b6884eddbfbebc175"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga01d3e90bb7aa9a8b6884eddbfbebc175">pwm_init</a> (uint slice_num, <a class="el" href="structpwm__config.html">pwm_config</a> *c, bool start)</td></tr>
169 <tr class="memdesc:ga01d3e90bb7aa9a8b6884eddbfbebc175"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise a PWM with settings from a configuration object.  <a href="group__hardware__pwm.html#ga01d3e90bb7aa9a8b6884eddbfbebc175">More...</a><br /></td></tr>
170 <tr class="separator:ga01d3e90bb7aa9a8b6884eddbfbebc175"><td class="memSeparator" colspan="2">&#160;</td></tr>
171 <tr class="memitem:gad76f94a6dd6133c52284b6be8ae98e16"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structpwm__config.html">pwm_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gad76f94a6dd6133c52284b6be8ae98e16">pwm_get_default_config</a> (void)</td></tr>
172 <tr class="memdesc:gad76f94a6dd6133c52284b6be8ae98e16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a set of default values for PWM configuration.  <a href="group__hardware__pwm.html#gad76f94a6dd6133c52284b6be8ae98e16">More...</a><br /></td></tr>
173 <tr class="separator:gad76f94a6dd6133c52284b6be8ae98e16"><td class="memSeparator" colspan="2">&#160;</td></tr>
174 <tr class="memitem:ga6f8fe346e6912cfab3d36b00043a3627"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga6f8fe346e6912cfab3d36b00043a3627">pwm_set_wrap</a> (uint slice_num, uint16_t wrap)</td></tr>
175 <tr class="memdesc:ga6f8fe346e6912cfab3d36b00043a3627"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current PWM counter wrap value.  <a href="group__hardware__pwm.html#ga6f8fe346e6912cfab3d36b00043a3627">More...</a><br /></td></tr>
176 <tr class="separator:ga6f8fe346e6912cfab3d36b00043a3627"><td class="memSeparator" colspan="2">&#160;</td></tr>
177 <tr class="memitem:ga18a2b3bbc240d1a9b36526d69c06ec3d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga18a2b3bbc240d1a9b36526d69c06ec3d">pwm_set_chan_level</a> (uint slice_num, uint chan, uint16_t level)</td></tr>
178 <tr class="memdesc:ga18a2b3bbc240d1a9b36526d69c06ec3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current PWM counter compare value for one channel.  <a href="group__hardware__pwm.html#ga18a2b3bbc240d1a9b36526d69c06ec3d">More...</a><br /></td></tr>
179 <tr class="separator:ga18a2b3bbc240d1a9b36526d69c06ec3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
180 <tr class="memitem:gae7064c88717eee935e50138f5b0ae2b7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gae7064c88717eee935e50138f5b0ae2b7">pwm_set_both_levels</a> (uint slice_num, uint16_t level_a, uint16_t level_b)</td></tr>
181 <tr class="memdesc:gae7064c88717eee935e50138f5b0ae2b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM counter compare values.  <a href="group__hardware__pwm.html#gae7064c88717eee935e50138f5b0ae2b7">More...</a><br /></td></tr>
182 <tr class="separator:gae7064c88717eee935e50138f5b0ae2b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
183 <tr class="memitem:ga279d1ba7dcc8f19619f389317efb41fd"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga279d1ba7dcc8f19619f389317efb41fd">pwm_set_gpio_level</a> (uint gpio, uint16_t level)</td></tr>
184 <tr class="memdesc:ga279d1ba7dcc8f19619f389317efb41fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function to set the PWM level for the slice and channel associated with a GPIO.  <a href="group__hardware__pwm.html#ga279d1ba7dcc8f19619f389317efb41fd">More...</a><br /></td></tr>
185 <tr class="separator:ga279d1ba7dcc8f19619f389317efb41fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
186 <tr class="memitem:ga157c8b11483967714823187725a5ed5a"><td class="memItemLeft" align="right" valign="top">static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga157c8b11483967714823187725a5ed5a">pwm_get_counter</a> (uint slice_num)</td></tr>
187 <tr class="memdesc:ga157c8b11483967714823187725a5ed5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get PWM counter.  <a href="group__hardware__pwm.html#ga157c8b11483967714823187725a5ed5a">More...</a><br /></td></tr>
188 <tr class="separator:ga157c8b11483967714823187725a5ed5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
189 <tr class="memitem:ga5179ec971146ab611b9232587e945769"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga5179ec971146ab611b9232587e945769">pwm_set_counter</a> (uint slice_num, uint16_t c)</td></tr>
190 <tr class="memdesc:ga5179ec971146ab611b9232587e945769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM counter.  <a href="group__hardware__pwm.html#ga5179ec971146ab611b9232587e945769">More...</a><br /></td></tr>
191 <tr class="separator:ga5179ec971146ab611b9232587e945769"><td class="memSeparator" colspan="2">&#160;</td></tr>
192 <tr class="memitem:ga98a47b25fcc2f28addf0a28ee3234efd"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga98a47b25fcc2f28addf0a28ee3234efd">pwm_advance_count</a> (uint slice_num)</td></tr>
193 <tr class="memdesc:ga98a47b25fcc2f28addf0a28ee3234efd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Advance PWM count.  <a href="group__hardware__pwm.html#ga98a47b25fcc2f28addf0a28ee3234efd">More...</a><br /></td></tr>
194 <tr class="separator:ga98a47b25fcc2f28addf0a28ee3234efd"><td class="memSeparator" colspan="2">&#160;</td></tr>
195 <tr class="memitem:ga0dec65009d8c0738677818b680fd2ad9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga0dec65009d8c0738677818b680fd2ad9">pwm_retard_count</a> (uint slice_num)</td></tr>
196 <tr class="memdesc:ga0dec65009d8c0738677818b680fd2ad9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retard PWM count.  <a href="group__hardware__pwm.html#ga0dec65009d8c0738677818b680fd2ad9">More...</a><br /></td></tr>
197 <tr class="separator:ga0dec65009d8c0738677818b680fd2ad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
198 <tr class="memitem:ga0da8e86adb7de041a6b8607b36aee442"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga0da8e86adb7de041a6b8607b36aee442">pwm_set_clkdiv_int_frac</a> (uint slice_num, uint8_t integer, uint8_t fract)</td></tr>
199 <tr class="memdesc:ga0da8e86adb7de041a6b8607b36aee442"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM clock divider using an 8:4 fractional value.  <a href="group__hardware__pwm.html#ga0da8e86adb7de041a6b8607b36aee442">More...</a><br /></td></tr>
200 <tr class="separator:ga0da8e86adb7de041a6b8607b36aee442"><td class="memSeparator" colspan="2">&#160;</td></tr>
201 <tr class="memitem:ga94782fc53adb07a3594ae0939d9a2e3e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga94782fc53adb07a3594ae0939d9a2e3e">pwm_set_clkdiv</a> (uint slice_num, float divider)</td></tr>
202 <tr class="memdesc:ga94782fc53adb07a3594ae0939d9a2e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM clock divider.  <a href="group__hardware__pwm.html#ga94782fc53adb07a3594ae0939d9a2e3e">More...</a><br /></td></tr>
203 <tr class="separator:ga94782fc53adb07a3594ae0939d9a2e3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
204 <tr class="memitem:gab12ab09d76aed43a36f973232718fdd6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gab12ab09d76aed43a36f973232718fdd6">pwm_set_output_polarity</a> (uint slice_num, bool a, bool b)</td></tr>
205 <tr class="memdesc:gab12ab09d76aed43a36f973232718fdd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM output polarity.  <a href="group__hardware__pwm.html#gab12ab09d76aed43a36f973232718fdd6">More...</a><br /></td></tr>
206 <tr class="separator:gab12ab09d76aed43a36f973232718fdd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
207 <tr class="memitem:ga1ee213ebb13b98dc81e60a512f696227"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga1ee213ebb13b98dc81e60a512f696227">pwm_set_clkdiv_mode</a> (uint slice_num, enum <a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a> mode)</td></tr>
208 <tr class="memdesc:ga1ee213ebb13b98dc81e60a512f696227"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM divider mode.  <a href="group__hardware__pwm.html#ga1ee213ebb13b98dc81e60a512f696227">More...</a><br /></td></tr>
209 <tr class="separator:ga1ee213ebb13b98dc81e60a512f696227"><td class="memSeparator" colspan="2">&#160;</td></tr>
210 <tr class="memitem:gacb2a1995f0bfdb12345607b903c3f11e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gacb2a1995f0bfdb12345607b903c3f11e">pwm_set_phase_correct</a> (uint slice_num, bool phase_correct)</td></tr>
211 <tr class="memdesc:gacb2a1995f0bfdb12345607b903c3f11e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set PWM phase correct on/off.  <a href="group__hardware__pwm.html#gacb2a1995f0bfdb12345607b903c3f11e">More...</a><br /></td></tr>
212 <tr class="separator:gacb2a1995f0bfdb12345607b903c3f11e"><td class="memSeparator" colspan="2">&#160;</td></tr>
213 <tr class="memitem:ga216496c331542eb57199018fa86b4408"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga216496c331542eb57199018fa86b4408">pwm_set_enabled</a> (uint slice_num, bool enabled)</td></tr>
214 <tr class="memdesc:ga216496c331542eb57199018fa86b4408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable PWM.  <a href="group__hardware__pwm.html#ga216496c331542eb57199018fa86b4408">More...</a><br /></td></tr>
215 <tr class="separator:ga216496c331542eb57199018fa86b4408"><td class="memSeparator" colspan="2">&#160;</td></tr>
216 <tr class="memitem:ga257ea7fd33fcf33815a01dd279ca578d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga257ea7fd33fcf33815a01dd279ca578d">pwm_set_mask_enabled</a> (uint32_t mask)</td></tr>
217 <tr class="memdesc:ga257ea7fd33fcf33815a01dd279ca578d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable multiple PWM slices simultaneously.  <a href="group__hardware__pwm.html#ga257ea7fd33fcf33815a01dd279ca578d">More...</a><br /></td></tr>
218 <tr class="separator:ga257ea7fd33fcf33815a01dd279ca578d"><td class="memSeparator" colspan="2">&#160;</td></tr>
219 <tr class="memitem:ga093a3c371dda3aa2291331147337265e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga093a3c371dda3aa2291331147337265e">pwm_set_irq_enabled</a> (uint slice_num, bool enabled)</td></tr>
220 <tr class="memdesc:ga093a3c371dda3aa2291331147337265e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable PWM instance interrupt via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350)  <a href="group__hardware__pwm.html#ga093a3c371dda3aa2291331147337265e">More...</a><br /></td></tr>
221 <tr class="separator:ga093a3c371dda3aa2291331147337265e"><td class="memSeparator" colspan="2">&#160;</td></tr>
222 <tr class="memitem:ga79aa7a5ac3e6960ed1c8eda99cddb1a9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga79aa7a5ac3e6960ed1c8eda99cddb1a9">pwm_set_irq0_enabled</a> (uint slice_num, bool enabled)</td></tr>
223 <tr class="memdesc:ga79aa7a5ac3e6960ed1c8eda99cddb1a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable PWM instance interrupt via PWM_IRQ_WRAP_0.  <a href="group__hardware__pwm.html#ga79aa7a5ac3e6960ed1c8eda99cddb1a9">More...</a><br /></td></tr>
224 <tr class="separator:ga79aa7a5ac3e6960ed1c8eda99cddb1a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
225 <tr class="memitem:ga2ea24b74474d2a7095ab1a9e409fa85e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga2ea24b74474d2a7095ab1a9e409fa85e">pwm_irqn_set_slice_enabled</a> (uint irq_index, uint slice_num, bool enabled)</td></tr>
226 <tr class="memdesc:ga2ea24b74474d2a7095ab1a9e409fa85e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable PWM instance interrupt via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.  <a href="group__hardware__pwm.html#ga2ea24b74474d2a7095ab1a9e409fa85e">More...</a><br /></td></tr>
227 <tr class="separator:ga2ea24b74474d2a7095ab1a9e409fa85e"><td class="memSeparator" colspan="2">&#160;</td></tr>
228 <tr class="memitem:gac32a9b468ddbd49bad6ebff6789fd215"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gac32a9b468ddbd49bad6ebff6789fd215">pwm_set_irq_mask_enabled</a> (uint32_t slice_mask, bool enabled)</td></tr>
229 <tr class="memdesc:gac32a9b468ddbd49bad6ebff6789fd215"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable multiple PWM instance interrupts via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350)  <a href="group__hardware__pwm.html#gac32a9b468ddbd49bad6ebff6789fd215">More...</a><br /></td></tr>
230 <tr class="separator:gac32a9b468ddbd49bad6ebff6789fd215"><td class="memSeparator" colspan="2">&#160;</td></tr>
231 <tr class="memitem:gade21c4c94d2dce96bb4992d818909f0e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gade21c4c94d2dce96bb4992d818909f0e">pwm_set_irq0_mask_enabled</a> (uint32_t slice_mask, bool enabled)</td></tr>
232 <tr class="memdesc:gade21c4c94d2dce96bb4992d818909f0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable multiple PWM instance interrupts via PWM_IRQ_WRAP_0.  <a href="group__hardware__pwm.html#gade21c4c94d2dce96bb4992d818909f0e">More...</a><br /></td></tr>
233 <tr class="separator:gade21c4c94d2dce96bb4992d818909f0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
234 <tr class="memitem:ga6c5a284b10961cd0f73e22684df691f0"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga6c5a284b10961cd0f73e22684df691f0">pwm_irqn_set_slice_mask_enabled</a> (uint irq_index, uint slice_mask, bool enabled)</td></tr>
235 <tr class="memdesc:ga6c5a284b10961cd0f73e22684df691f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable PWM instance interrupts via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.  <a href="group__hardware__pwm.html#ga6c5a284b10961cd0f73e22684df691f0">More...</a><br /></td></tr>
236 <tr class="separator:ga6c5a284b10961cd0f73e22684df691f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
237 <tr class="memitem:ga8d4482b5e125e30bc166d3ed33d8ba2d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga8d4482b5e125e30bc166d3ed33d8ba2d">pwm_clear_irq</a> (uint slice_num)</td></tr>
238 <tr class="memdesc:ga8d4482b5e125e30bc166d3ed33d8ba2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a single PWM channel interrupt.  <a href="group__hardware__pwm.html#ga8d4482b5e125e30bc166d3ed33d8ba2d">More...</a><br /></td></tr>
239 <tr class="separator:ga8d4482b5e125e30bc166d3ed33d8ba2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
240 <tr class="memitem:ga565a6b6d19b60b10f5a91b11152cc8c2"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga565a6b6d19b60b10f5a91b11152cc8c2">pwm_get_irq_status_mask</a> (void)</td></tr>
241 <tr class="memdesc:ga565a6b6d19b60b10f5a91b11152cc8c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get PWM interrupt status, raw for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350)  <a href="group__hardware__pwm.html#ga565a6b6d19b60b10f5a91b11152cc8c2">More...</a><br /></td></tr>
242 <tr class="separator:ga565a6b6d19b60b10f5a91b11152cc8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
243 <tr class="memitem:ga1c21d122b5605a374644b07d6c7205e6"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga1c21d122b5605a374644b07d6c7205e6">pwm_get_irq0_status_mask</a> (void)</td></tr>
244 <tr class="memdesc:ga1c21d122b5605a374644b07d6c7205e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get PWM interrupt status, raw for the PWM_IRQ_WRAP_0.  <a href="group__hardware__pwm.html#ga1c21d122b5605a374644b07d6c7205e6">More...</a><br /></td></tr>
245 <tr class="separator:ga1c21d122b5605a374644b07d6c7205e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
246 <tr class="memitem:gab23895c8c5a1d73d73e4f1f32e4d255e"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#gab23895c8c5a1d73d73e4f1f32e4d255e">pwm_irqn_get_status_mask</a> (uint irq_index)</td></tr>
247 <tr class="memdesc:gab23895c8c5a1d73d73e4f1f32e4d255e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get PWM interrupt status, raw for either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.  <a href="group__hardware__pwm.html#gab23895c8c5a1d73d73e4f1f32e4d255e">More...</a><br /></td></tr>
248 <tr class="separator:gab23895c8c5a1d73d73e4f1f32e4d255e"><td class="memSeparator" colspan="2">&#160;</td></tr>
249 <tr class="memitem:ga457ee599e471a8da59c42f5c26710ff6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga457ee599e471a8da59c42f5c26710ff6">pwm_force_irq</a> (uint slice_num)</td></tr>
250 <tr class="memdesc:ga457ee599e471a8da59c42f5c26710ff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force PWM interrupt for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350)  <a href="group__hardware__pwm.html#ga457ee599e471a8da59c42f5c26710ff6">More...</a><br /></td></tr>
251 <tr class="separator:ga457ee599e471a8da59c42f5c26710ff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
252 <tr class="memitem:ga5630f7a5331a0b118ce0a288897b75cc"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga5630f7a5331a0b118ce0a288897b75cc">pwm_force_irq0</a> (uint slice_num)</td></tr>
253 <tr class="memdesc:ga5630f7a5331a0b118ce0a288897b75cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force PWM interrupt via PWM_IRQ_WRAP_0.  <a href="group__hardware__pwm.html#ga5630f7a5331a0b118ce0a288897b75cc">More...</a><br /></td></tr>
254 <tr class="separator:ga5630f7a5331a0b118ce0a288897b75cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
255 <tr class="memitem:ga4ddb2ef5ee40a1f59d35b0f4966fced1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga4ddb2ef5ee40a1f59d35b0f4966fced1">pwm_irqn_force</a> (uint irq_index, uint slice_num)</td></tr>
256 <tr class="memdesc:ga4ddb2ef5ee40a1f59d35b0f4966fced1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force PWM interrupt via PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.  <a href="group__hardware__pwm.html#ga4ddb2ef5ee40a1f59d35b0f4966fced1">More...</a><br /></td></tr>
257 <tr class="separator:ga4ddb2ef5ee40a1f59d35b0f4966fced1"><td class="memSeparator" colspan="2">&#160;</td></tr>
258 <tr class="memitem:ga2f600a7192ecd69a8680be367e8d0a00"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pwm.html#ga2f600a7192ecd69a8680be367e8d0a00">pwm_get_dreq</a> (uint slice_num)</td></tr>
259 <tr class="memdesc:ga2f600a7192ecd69a8680be367e8d0a00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the DREQ to use for pacing transfers to a particular PWM slice.  <a href="group__hardware__pwm.html#ga2f600a7192ecd69a8680be367e8d0a00">More...</a><br /></td></tr>
260 <tr class="separator:ga2f600a7192ecd69a8680be367e8d0a00"><td class="memSeparator" colspan="2">&#160;</td></tr>
261 </table>
262 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
263 <p >Hardware Pulse Width Modulation (PWM) API. </p>
264 <p >The RP2040 PWM block has 8 identical slices, the RP2350 has 12. Each slice can drive two PWM output signals, or measure the frequency or duty cycle of an input signal. This gives a total of up to 16/24 controllable PWM outputs. All 30 GPIOs can be driven by the PWM block.</p>
265 <p >The PWM hardware functions by continuously comparing the input value to a free-running counter. This produces a toggling output where the amount of time spent at the high output level is proportional to the input value. The fraction of time spent at the high signal level is known as the duty cycle of the signal.</p>
266 <p >The default behaviour of a PWM slice is to count upward until the wrap value (<a class="el" href="group__hardware__pwm.html#gad6cf6d9237144234732a50eb6d5e4fe9">pwm_config_set_wrap</a>) is reached, and then immediately wrap to 0. PWM slices also offer a phase-correct mode, where the counter starts to count downward after reaching TOP, until it reaches 0 again.</p>
267 <h2><a class="anchor" id="pwm_example"></a>
268 Example</h2>
269 <div class="fragment"><div class="line"> </div>
270 <div class="line"><span class="comment">// Output PWM signals on pins 0 and 1</span></div>
271 <div class="line"> </div>
272 <div class="line"><span class="preprocessor">#include &quot;<a class="code" href="stdlib_8h.html">pico/stdlib.h</a>&quot;</span></div>
273 <div class="line"><span class="preprocessor">#include &quot;<a class="code" href="rp2__common_2hardware__pwm_2include_2hardware_2pwm_8h.html">hardware/pwm.h</a>&quot;</span></div>
274 <div class="line"> </div>
275 <div class="line"><span class="keywordtype">int</span> main() {</div>
276 <div class="line"> </div>
277 <div class="line">    <span class="comment">// Tell GPIO 0 and 1 they are allocated to the PWM</span></div>
278 <div class="line">    <a class="code hl_function" href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a>(0, <a class="code hl_enumvalue" href="group__hardware__gpio.html#ggaf91b38a4d4e96c343bd16927c34936e0a2c6da3c6851ba4404a812719260b31d2">GPIO_FUNC_PWM</a>);</div>
279 <div class="line">    <a class="code hl_function" href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a>(1, <a class="code hl_enumvalue" href="group__hardware__gpio.html#ggaf91b38a4d4e96c343bd16927c34936e0a2c6da3c6851ba4404a812719260b31d2">GPIO_FUNC_PWM</a>);</div>
280 <div class="line"> </div>
281 <div class="line">    <span class="comment">// Find out which PWM slice is connected to GPIO 0 (it&#39;s slice 0)</span></div>
282 <div class="line">    uint slice_num = <a class="code hl_function" href="group__hardware__pwm.html#ga8b2117d67a544f64c001f4f32c723eef">pwm_gpio_to_slice_num</a>(0);</div>
283 <div class="line"> </div>
284 <div class="line">    <span class="comment">// Set period of 4 cycles (0 to 3 inclusive)</span></div>
285 <div class="line">    <a class="code hl_function" href="group__hardware__pwm.html#ga6f8fe346e6912cfab3d36b00043a3627">pwm_set_wrap</a>(slice_num, 3);</div>
286 <div class="line">    <span class="comment">// Set channel A output high for one cycle before dropping</span></div>
287 <div class="line">    <a class="code hl_function" href="group__hardware__pwm.html#ga18a2b3bbc240d1a9b36526d69c06ec3d">pwm_set_chan_level</a>(slice_num, PWM_CHAN_A, 1);</div>
288 <div class="line">    <span class="comment">// Set initial B output high for three cycles before dropping</span></div>
289 <div class="line">    <a class="code hl_function" href="group__hardware__pwm.html#ga18a2b3bbc240d1a9b36526d69c06ec3d">pwm_set_chan_level</a>(slice_num, PWM_CHAN_B, 3);</div>
290 <div class="line">    <span class="comment">// Set the PWM running</span></div>
291 <div class="line">    <a class="code hl_function" href="group__hardware__pwm.html#ga216496c331542eb57199018fa86b4408">pwm_set_enabled</a>(slice_num, <span class="keyword">true</span>);</div>
292 <div class="line"> </div>
293 <div class="line">    <span class="comment">// Note we could also use pwm_set_gpio_level(gpio, x) which looks up the</span></div>
294 <div class="line">    <span class="comment">// correct slice and channel for a given GPIO.</span></div>
295 <div class="line">}</div>
296 <div class="ttc" id="agroup__hardware__gpio_html_ga22f6b90c4c7e0013b4b5341de0a44fc4"><div class="ttname"><a href="group__hardware__gpio.html#ga22f6b90c4c7e0013b4b5341de0a44fc4">gpio_set_function</a></div><div class="ttdeci">void gpio_set_function(uint gpio, gpio_function_t fn)</div><div class="ttdoc">Select GPIO function.</div><div class="ttdef"><b>Definition:</b> gpio.c:38</div></div>
297 <div class="ttc" id="agroup__hardware__gpio_html_ggaf91b38a4d4e96c343bd16927c34936e0a2c6da3c6851ba4404a812719260b31d2"><div class="ttname"><a href="group__hardware__gpio.html#ggaf91b38a4d4e96c343bd16927c34936e0a2c6da3c6851ba4404a812719260b31d2">GPIO_FUNC_PWM</a></div><div class="ttdeci">@ GPIO_FUNC_PWM</div><div class="ttdoc">Select PWM as GPIO pin function.</div><div class="ttdef"><b>Definition:</b> io_bank0.h:35</div></div>
298 <div class="ttc" id="agroup__hardware__pwm_html_ga18a2b3bbc240d1a9b36526d69c06ec3d"><div class="ttname"><a href="group__hardware__pwm.html#ga18a2b3bbc240d1a9b36526d69c06ec3d">pwm_set_chan_level</a></div><div class="ttdeci">static void pwm_set_chan_level(uint slice_num, uint chan, uint16_t level)</div><div class="ttdoc">Set the current PWM counter compare value for one channel.</div><div class="ttdef"><b>Definition:</b> pwm.h:311</div></div>
299 <div class="ttc" id="agroup__hardware__pwm_html_ga216496c331542eb57199018fa86b4408"><div class="ttname"><a href="group__hardware__pwm.html#ga216496c331542eb57199018fa86b4408">pwm_set_enabled</a></div><div class="ttdeci">static void pwm_set_enabled(uint slice_num, bool enabled)</div><div class="ttdoc">Enable/Disable PWM.</div><div class="ttdef"><b>Definition:</b> pwm.h:525</div></div>
300 <div class="ttc" id="agroup__hardware__pwm_html_ga6f8fe346e6912cfab3d36b00043a3627"><div class="ttname"><a href="group__hardware__pwm.html#ga6f8fe346e6912cfab3d36b00043a3627">pwm_set_wrap</a></div><div class="ttdeci">static void pwm_set_wrap(uint slice_num, uint16_t wrap)</div><div class="ttdoc">Set the current PWM counter wrap value.</div><div class="ttdef"><b>Definition:</b> pwm.h:291</div></div>
301 <div class="ttc" id="agroup__hardware__pwm_html_ga8b2117d67a544f64c001f4f32c723eef"><div class="ttname"><a href="group__hardware__pwm.html#ga8b2117d67a544f64c001f4f32c723eef">pwm_gpio_to_slice_num</a></div><div class="ttdeci">static uint pwm_gpio_to_slice_num(uint gpio)</div><div class="ttdoc">Determine the PWM slice that is attached to the specified GPIO.</div><div class="ttdef"><b>Definition:</b> pwm.h:115</div></div>
302 <div class="ttc" id="arp2__common_2hardware__pwm_2include_2hardware_2pwm_8h_html"><div class="ttname"><a href="rp2__common_2hardware__pwm_2include_2hardware_2pwm_8h.html">pwm.h</a></div></div>
303 <div class="ttc" id="astdlib_8h_html"><div class="ttname"><a href="stdlib_8h.html">stdlib.h</a></div></div>
304 </div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
305 <a id="ga799affc57db362720ea5f4a5aef381f8" name="ga799affc57db362720ea5f4a5aef381f8"></a>
306 <h2 class="memtitle"><span class="permalink"><a href="#ga799affc57db362720ea5f4a5aef381f8">&#9670;&nbsp;</a></span>PWM_DEFAULT_IRQ_NUM</h2>
307
308 <div class="memitem">
309 <div class="memproto">
310       <table class="memname">
311         <tr>
312           <td class="memname">#define PWM_DEFAULT_IRQ_NUM</td>
313           <td>(</td>
314           <td class="paramname"></td><td>)</td>
315           <td></td>
316         </tr>
317       </table>
318 </div><div class="memdoc">
319
320 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the default PWM IRQ. </p>
321 <p >On RP2040, there is only one PWM irq: PWM_IRQ_WRAP </p>
322 <p >On RP2350 this returns to PWM_IRQ_WRAP0 </p>
323 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
324
325 </div>
326 </div>
327 <a id="gab346f319fab9342c66d48bdcc9bb7430" name="gab346f319fab9342c66d48bdcc9bb7430"></a>
328 <h2 class="memtitle"><span class="permalink"><a href="#gab346f319fab9342c66d48bdcc9bb7430">&#9670;&nbsp;</a></span>PWM_DREQ_NUM</h2>
329
330 <div class="memitem">
331 <div class="memproto">
332       <table class="memname">
333         <tr>
334           <td class="memname">#define PWM_DREQ_NUM</td>
335           <td>(</td>
336           <td class="paramtype">&#160;</td>
337           <td class="paramname">slice_num</td><td>)</td>
338           <td></td>
339         </tr>
340       </table>
341 </div><div class="memdoc">
342
343 <p>Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers for a given PWM slice. </p>
344 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
345
346 </div>
347 </div>
348 <h2 class="groupheader">Enumeration Type Documentation</h2>
349 <a id="ga0a00197703c8606641488cfff3f660e6" name="ga0a00197703c8606641488cfff3f660e6"></a>
350 <h2 class="memtitle"><span class="permalink"><a href="#ga0a00197703c8606641488cfff3f660e6">&#9670;&nbsp;</a></span>pwm_clkdiv_mode</h2>
351
352 <div class="memitem">
353 <div class="memproto">
354       <table class="memname">
355         <tr>
356           <td class="memname">enum <a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a></td>
357         </tr>
358       </table>
359 </div><div class="memdoc">
360
361 <p>PWM Divider mode settings. </p>
362 <table class="fieldtable">
363 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga0a00197703c8606641488cfff3f660e6acd3efbc3feaca58b87930008fdd8486b" name="gga0a00197703c8606641488cfff3f660e6acd3efbc3feaca58b87930008fdd8486b"></a>PWM_DIV_FREE_RUNNING&#160;</td><td class="fielddoc"><p >Free-running counting at rate dictated by fractional divider. </p>
364 </td></tr>
365 <tr><td class="fieldname"><a id="gga0a00197703c8606641488cfff3f660e6a186c27a4768fcb0c6930471db51861b7" name="gga0a00197703c8606641488cfff3f660e6a186c27a4768fcb0c6930471db51861b7"></a>PWM_DIV_B_HIGH&#160;</td><td class="fielddoc"><p >Fractional divider is gated by the PWM B pin. </p>
366 </td></tr>
367 <tr><td class="fieldname"><a id="gga0a00197703c8606641488cfff3f660e6ad9d2170532c2c9ab4016908544c8ad40" name="gga0a00197703c8606641488cfff3f660e6ad9d2170532c2c9ab4016908544c8ad40"></a>PWM_DIV_B_RISING&#160;</td><td class="fielddoc"><p >Fractional divider advances with each rising edge of the PWM B pin. </p>
368 </td></tr>
369 <tr><td class="fieldname"><a id="gga0a00197703c8606641488cfff3f660e6a0b4afcaa75090169d3b7cbec4c0e2012" name="gga0a00197703c8606641488cfff3f660e6a0b4afcaa75090169d3b7cbec4c0e2012"></a>PWM_DIV_B_FALLING&#160;</td><td class="fielddoc"><p >Fractional divider advances with each falling edge of the PWM B pin. </p>
370 </td></tr>
371 </table>
372
373 </div>
374 </div>
375 <h2 class="groupheader">Function Documentation</h2>
376 <a id="ga98a47b25fcc2f28addf0a28ee3234efd" name="ga98a47b25fcc2f28addf0a28ee3234efd"></a>
377 <h2 class="memtitle"><span class="permalink"><a href="#ga98a47b25fcc2f28addf0a28ee3234efd">&#9670;&nbsp;</a></span>pwm_advance_count()</h2>
378
379 <div class="memitem">
380 <div class="memproto">
381 <table class="mlabels">
382   <tr>
383   <td class="mlabels-left">
384       <table class="memname">
385         <tr>
386           <td class="memname">static void pwm_advance_count </td>
387           <td>(</td>
388           <td class="paramtype">uint&#160;</td>
389           <td class="paramname"><em>slice_num</em></td><td>)</td>
390           <td></td>
391         </tr>
392       </table>
393   </td>
394   <td class="mlabels-right">
395 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
396   </tr>
397 </table>
398 </div><div class="memdoc">
399
400 <p>Advance PWM count. </p>
401 <p >Advance the phase of a running the counter by 1 count.</p>
402 <p >This function will return once the increment is complete.</p>
403 <dl class="params"><dt>Parameters</dt><dd>
404   <table class="params">
405     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
406   </table>
407   </dd>
408 </dl>
409
410 </div>
411 </div>
412 <a id="ga8d4482b5e125e30bc166d3ed33d8ba2d" name="ga8d4482b5e125e30bc166d3ed33d8ba2d"></a>
413 <h2 class="memtitle"><span class="permalink"><a href="#ga8d4482b5e125e30bc166d3ed33d8ba2d">&#9670;&nbsp;</a></span>pwm_clear_irq()</h2>
414
415 <div class="memitem">
416 <div class="memproto">
417 <table class="mlabels">
418   <tr>
419   <td class="mlabels-left">
420       <table class="memname">
421         <tr>
422           <td class="memname">static void pwm_clear_irq </td>
423           <td>(</td>
424           <td class="paramtype">uint&#160;</td>
425           <td class="paramname"><em>slice_num</em></td><td>)</td>
426           <td></td>
427         </tr>
428       </table>
429   </td>
430   <td class="mlabels-right">
431 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
432   </tr>
433 </table>
434 </div><div class="memdoc">
435
436 <p>Clear a single PWM channel interrupt. </p>
437 <dl class="params"><dt>Parameters</dt><dd>
438   <table class="params">
439     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
440   </table>
441   </dd>
442 </dl>
443
444 </div>
445 </div>
446 <a id="ga679802450ac829eff368e8f109df387e" name="ga679802450ac829eff368e8f109df387e"></a>
447 <h2 class="memtitle"><span class="permalink"><a href="#ga679802450ac829eff368e8f109df387e">&#9670;&nbsp;</a></span>pwm_config_set_clkdiv()</h2>
448
449 <div class="memitem">
450 <div class="memproto">
451 <table class="mlabels">
452   <tr>
453   <td class="mlabels-left">
454       <table class="memname">
455         <tr>
456           <td class="memname">static void pwm_config_set_clkdiv </td>
457           <td>(</td>
458           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
459           <td class="paramname"><em>c</em>, </td>
460         </tr>
461         <tr>
462           <td class="paramkey"></td>
463           <td></td>
464           <td class="paramtype">float&#160;</td>
465           <td class="paramname"><em>div</em>&#160;</td>
466         </tr>
467         <tr>
468           <td></td>
469           <td>)</td>
470           <td></td><td></td>
471         </tr>
472       </table>
473   </td>
474   <td class="mlabels-right">
475 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
476   </tr>
477 </table>
478 </div><div class="memdoc">
479
480 <p>Set PWM clock divider in a PWM configuration. </p>
481 <dl class="params"><dt>Parameters</dt><dd>
482   <table class="params">
483     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
484     <tr><td class="paramname">div</td><td>Value to divide counting rate by. Must be greater than or equal to 1.</td></tr>
485   </table>
486   </dd>
487 </dl>
488 <p>If the divide mode is free-running, the PWM counter runs at clk_sys / div. Otherwise, the divider reduces the rate of events seen on the B pin input (level or edge) before passing them on to the PWM counter. </p>
489
490 </div>
491 </div>
492 <a id="ga1d60d45df884a7abbde52e326586d55a" name="ga1d60d45df884a7abbde52e326586d55a"></a>
493 <h2 class="memtitle"><span class="permalink"><a href="#ga1d60d45df884a7abbde52e326586d55a">&#9670;&nbsp;</a></span>pwm_config_set_clkdiv_int()</h2>
494
495 <div class="memitem">
496 <div class="memproto">
497 <table class="mlabels">
498   <tr>
499   <td class="mlabels-left">
500       <table class="memname">
501         <tr>
502           <td class="memname">static void pwm_config_set_clkdiv_int </td>
503           <td>(</td>
504           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
505           <td class="paramname"><em>c</em>, </td>
506         </tr>
507         <tr>
508           <td class="paramkey"></td>
509           <td></td>
510           <td class="paramtype">uint&#160;</td>
511           <td class="paramname"><em>div</em>&#160;</td>
512         </tr>
513         <tr>
514           <td></td>
515           <td>)</td>
516           <td></td><td></td>
517         </tr>
518       </table>
519   </td>
520   <td class="mlabels-right">
521 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
522   </tr>
523 </table>
524 </div><div class="memdoc">
525
526 <p>Set PWM clock divider in a PWM configuration. </p>
527 <dl class="params"><dt>Parameters</dt><dd>
528   <table class="params">
529     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
530     <tr><td class="paramname">div</td><td>Integer value to reduce counting rate by. Must be greater than or equal to 1.</td></tr>
531   </table>
532   </dd>
533 </dl>
534 <p>If the divide mode is free-running, the PWM counter runs at clk_sys / div. Otherwise, the divider reduces the rate of events seen on the B pin input (level or edge) before passing them on to the PWM counter. </p>
535
536 </div>
537 </div>
538 <a id="ga3b0d7a6e493b4dc9ded8f53fb9be474c" name="ga3b0d7a6e493b4dc9ded8f53fb9be474c"></a>
539 <h2 class="memtitle"><span class="permalink"><a href="#ga3b0d7a6e493b4dc9ded8f53fb9be474c">&#9670;&nbsp;</a></span>pwm_config_set_clkdiv_int_frac()</h2>
540
541 <div class="memitem">
542 <div class="memproto">
543 <table class="mlabels">
544   <tr>
545   <td class="mlabels-left">
546       <table class="memname">
547         <tr>
548           <td class="memname">static void pwm_config_set_clkdiv_int_frac </td>
549           <td>(</td>
550           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
551           <td class="paramname"><em>c</em>, </td>
552         </tr>
553         <tr>
554           <td class="paramkey"></td>
555           <td></td>
556           <td class="paramtype">uint8_t&#160;</td>
557           <td class="paramname"><em>integer</em>, </td>
558         </tr>
559         <tr>
560           <td class="paramkey"></td>
561           <td></td>
562           <td class="paramtype">uint8_t&#160;</td>
563           <td class="paramname"><em>fract</em>&#160;</td>
564         </tr>
565         <tr>
566           <td></td>
567           <td>)</td>
568           <td></td><td></td>
569         </tr>
570       </table>
571   </td>
572   <td class="mlabels-right">
573 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
574   </tr>
575 </table>
576 </div><div class="memdoc">
577
578 <p>Set PWM clock divider in a PWM configuration using an 8:4 fractional value. </p>
579 <dl class="params"><dt>Parameters</dt><dd>
580   <table class="params">
581     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
582     <tr><td class="paramname">integer</td><td>8 bit integer part of the clock divider. Must be greater than or equal to 1. </td></tr>
583     <tr><td class="paramname">fract</td><td>4 bit fractional part of the clock divider</td></tr>
584   </table>
585   </dd>
586 </dl>
587 <p>If the divide mode is free-running, the PWM counter runs at clk_sys / div. Otherwise, the divider reduces the rate of events seen on the B pin input (level or edge) before passing them on to the PWM counter. </p>
588
589 </div>
590 </div>
591 <a id="ga27a86a921b2ad2ebd811db1255d34d06" name="ga27a86a921b2ad2ebd811db1255d34d06"></a>
592 <h2 class="memtitle"><span class="permalink"><a href="#ga27a86a921b2ad2ebd811db1255d34d06">&#9670;&nbsp;</a></span>pwm_config_set_clkdiv_mode()</h2>
593
594 <div class="memitem">
595 <div class="memproto">
596 <table class="mlabels">
597   <tr>
598   <td class="mlabels-left">
599       <table class="memname">
600         <tr>
601           <td class="memname">static void pwm_config_set_clkdiv_mode </td>
602           <td>(</td>
603           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
604           <td class="paramname"><em>c</em>, </td>
605         </tr>
606         <tr>
607           <td class="paramkey"></td>
608           <td></td>
609           <td class="paramtype">enum <a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a>&#160;</td>
610           <td class="paramname"><em>mode</em>&#160;</td>
611         </tr>
612         <tr>
613           <td></td>
614           <td>)</td>
615           <td></td><td></td>
616         </tr>
617       </table>
618   </td>
619   <td class="mlabels-right">
620 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
621   </tr>
622 </table>
623 </div><div class="memdoc">
624
625 <p>Set PWM counting mode in a PWM configuration. </p>
626 <dl class="params"><dt>Parameters</dt><dd>
627   <table class="params">
628     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
629     <tr><td class="paramname">mode</td><td>PWM divide/count mode</td></tr>
630   </table>
631   </dd>
632 </dl>
633 <p>Configure which event gates the operation of the fractional divider. The default is always-on (free-running PWM). Can also be configured to count on high level, rising edge or falling edge of the B pin input. </p>
634
635 </div>
636 </div>
637 <a id="gab459185e217d5e215dae3cfb3d6de1b5" name="gab459185e217d5e215dae3cfb3d6de1b5"></a>
638 <h2 class="memtitle"><span class="permalink"><a href="#gab459185e217d5e215dae3cfb3d6de1b5">&#9670;&nbsp;</a></span>pwm_config_set_output_polarity()</h2>
639
640 <div class="memitem">
641 <div class="memproto">
642 <table class="mlabels">
643   <tr>
644   <td class="mlabels-left">
645       <table class="memname">
646         <tr>
647           <td class="memname">static void pwm_config_set_output_polarity </td>
648           <td>(</td>
649           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
650           <td class="paramname"><em>c</em>, </td>
651         </tr>
652         <tr>
653           <td class="paramkey"></td>
654           <td></td>
655           <td class="paramtype">bool&#160;</td>
656           <td class="paramname"><em>a</em>, </td>
657         </tr>
658         <tr>
659           <td class="paramkey"></td>
660           <td></td>
661           <td class="paramtype">bool&#160;</td>
662           <td class="paramname"><em>b</em>&#160;</td>
663         </tr>
664         <tr>
665           <td></td>
666           <td>)</td>
667           <td></td><td></td>
668         </tr>
669       </table>
670   </td>
671   <td class="mlabels-right">
672 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
673   </tr>
674 </table>
675 </div><div class="memdoc">
676
677 <p>Set output polarity in a PWM configuration. </p>
678 <dl class="params"><dt>Parameters</dt><dd>
679   <table class="params">
680     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
681     <tr><td class="paramname">a</td><td>true to invert output A </td></tr>
682     <tr><td class="paramname">b</td><td>true to invert output B </td></tr>
683   </table>
684   </dd>
685 </dl>
686
687 </div>
688 </div>
689 <a id="ga031fe8a502c9640ed4f5fab74d6248ae" name="ga031fe8a502c9640ed4f5fab74d6248ae"></a>
690 <h2 class="memtitle"><span class="permalink"><a href="#ga031fe8a502c9640ed4f5fab74d6248ae">&#9670;&nbsp;</a></span>pwm_config_set_phase_correct()</h2>
691
692 <div class="memitem">
693 <div class="memproto">
694 <table class="mlabels">
695   <tr>
696   <td class="mlabels-left">
697       <table class="memname">
698         <tr>
699           <td class="memname">static void pwm_config_set_phase_correct </td>
700           <td>(</td>
701           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
702           <td class="paramname"><em>c</em>, </td>
703         </tr>
704         <tr>
705           <td class="paramkey"></td>
706           <td></td>
707           <td class="paramtype">bool&#160;</td>
708           <td class="paramname"><em>phase_correct</em>&#160;</td>
709         </tr>
710         <tr>
711           <td></td>
712           <td>)</td>
713           <td></td><td></td>
714         </tr>
715       </table>
716   </td>
717   <td class="mlabels-right">
718 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
719   </tr>
720 </table>
721 </div><div class="memdoc">
722
723 <p>Set phase correction in a PWM configuration. </p>
724 <dl class="params"><dt>Parameters</dt><dd>
725   <table class="params">
726     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
727     <tr><td class="paramname">phase_correct</td><td>true to set phase correct modulation, false to set trailing edge</td></tr>
728   </table>
729   </dd>
730 </dl>
731 <p>Setting phase control to true means that instead of wrapping back to zero when the wrap point is reached, the PWM starts counting back down. The output frequency is halved when phase-correct mode is enabled. </p>
732
733 </div>
734 </div>
735 <a id="gad6cf6d9237144234732a50eb6d5e4fe9" name="gad6cf6d9237144234732a50eb6d5e4fe9"></a>
736 <h2 class="memtitle"><span class="permalink"><a href="#gad6cf6d9237144234732a50eb6d5e4fe9">&#9670;&nbsp;</a></span>pwm_config_set_wrap()</h2>
737
738 <div class="memitem">
739 <div class="memproto">
740 <table class="mlabels">
741   <tr>
742   <td class="mlabels-left">
743       <table class="memname">
744         <tr>
745           <td class="memname">static void pwm_config_set_wrap </td>
746           <td>(</td>
747           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
748           <td class="paramname"><em>c</em>, </td>
749         </tr>
750         <tr>
751           <td class="paramkey"></td>
752           <td></td>
753           <td class="paramtype">uint16_t&#160;</td>
754           <td class="paramname"><em>wrap</em>&#160;</td>
755         </tr>
756         <tr>
757           <td></td>
758           <td>)</td>
759           <td></td><td></td>
760         </tr>
761       </table>
762   </td>
763   <td class="mlabels-right">
764 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
765   </tr>
766 </table>
767 </div><div class="memdoc">
768
769 <p>Set PWM counter wrap value in a PWM configuration. </p>
770 <p >Set the highest value the counter will reach before returning to 0. Also known as TOP.</p>
771 <dl class="params"><dt>Parameters</dt><dd>
772   <table class="params">
773     <tr><td class="paramname">c</td><td>PWM configuration struct to modify </td></tr>
774     <tr><td class="paramname">wrap</td><td>Value to set wrap to </td></tr>
775   </table>
776   </dd>
777 </dl>
778
779 </div>
780 </div>
781 <a id="ga457ee599e471a8da59c42f5c26710ff6" name="ga457ee599e471a8da59c42f5c26710ff6"></a>
782 <h2 class="memtitle"><span class="permalink"><a href="#ga457ee599e471a8da59c42f5c26710ff6">&#9670;&nbsp;</a></span>pwm_force_irq()</h2>
783
784 <div class="memitem">
785 <div class="memproto">
786 <table class="mlabels">
787   <tr>
788   <td class="mlabels-left">
789       <table class="memname">
790         <tr>
791           <td class="memname">static void pwm_force_irq </td>
792           <td>(</td>
793           <td class="paramtype">uint&#160;</td>
794           <td class="paramname"><em>slice_num</em></td><td>)</td>
795           <td></td>
796         </tr>
797       </table>
798   </td>
799   <td class="mlabels-right">
800 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
801   </tr>
802 </table>
803 </div><div class="memdoc">
804
805 <p>Force PWM interrupt for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350) </p>
806 <dl class="params"><dt>Parameters</dt><dd>
807   <table class="params">
808     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
809   </table>
810   </dd>
811 </dl>
812
813 </div>
814 </div>
815 <a id="ga5630f7a5331a0b118ce0a288897b75cc" name="ga5630f7a5331a0b118ce0a288897b75cc"></a>
816 <h2 class="memtitle"><span class="permalink"><a href="#ga5630f7a5331a0b118ce0a288897b75cc">&#9670;&nbsp;</a></span>pwm_force_irq0()</h2>
817
818 <div class="memitem">
819 <div class="memproto">
820 <table class="mlabels">
821   <tr>
822   <td class="mlabels-left">
823       <table class="memname">
824         <tr>
825           <td class="memname">static void pwm_force_irq0 </td>
826           <td>(</td>
827           <td class="paramtype">uint&#160;</td>
828           <td class="paramname"><em>slice_num</em></td><td>)</td>
829           <td></td>
830         </tr>
831       </table>
832   </td>
833   <td class="mlabels-right">
834 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
835   </tr>
836 </table>
837 </div><div class="memdoc">
838
839 <p>Force PWM interrupt via PWM_IRQ_WRAP_0. </p>
840 <dl class="params"><dt>Parameters</dt><dd>
841   <table class="params">
842     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
843   </table>
844   </dd>
845 </dl>
846
847 </div>
848 </div>
849 <a id="ga157c8b11483967714823187725a5ed5a" name="ga157c8b11483967714823187725a5ed5a"></a>
850 <h2 class="memtitle"><span class="permalink"><a href="#ga157c8b11483967714823187725a5ed5a">&#9670;&nbsp;</a></span>pwm_get_counter()</h2>
851
852 <div class="memitem">
853 <div class="memproto">
854 <table class="mlabels">
855   <tr>
856   <td class="mlabels-left">
857       <table class="memname">
858         <tr>
859           <td class="memname">static uint16_t pwm_get_counter </td>
860           <td>(</td>
861           <td class="paramtype">uint&#160;</td>
862           <td class="paramname"><em>slice_num</em></td><td>)</td>
863           <td></td>
864         </tr>
865       </table>
866   </td>
867   <td class="mlabels-right">
868 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
869   </tr>
870 </table>
871 </div><div class="memdoc">
872
873 <p>Get PWM counter. </p>
874 <p >Get current value of PWM counter</p>
875 <dl class="params"><dt>Parameters</dt><dd>
876   <table class="params">
877     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
878   </table>
879   </dd>
880 </dl>
881 <dl class="section return"><dt>Returns</dt><dd>Current value of the PWM counter </dd></dl>
882
883 </div>
884 </div>
885 <a id="gad76f94a6dd6133c52284b6be8ae98e16" name="gad76f94a6dd6133c52284b6be8ae98e16"></a>
886 <h2 class="memtitle"><span class="permalink"><a href="#gad76f94a6dd6133c52284b6be8ae98e16">&#9670;&nbsp;</a></span>pwm_get_default_config()</h2>
887
888 <div class="memitem">
889 <div class="memproto">
890 <table class="mlabels">
891   <tr>
892   <td class="mlabels-left">
893       <table class="memname">
894         <tr>
895           <td class="memname">static <a class="el" href="structpwm__config.html">pwm_config</a> pwm_get_default_config </td>
896           <td>(</td>
897           <td class="paramtype">void&#160;</td>
898           <td class="paramname"></td><td>)</td>
899           <td></td>
900         </tr>
901       </table>
902   </td>
903   <td class="mlabels-right">
904 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
905   </tr>
906 </table>
907 </div><div class="memdoc">
908
909 <p>Get a set of default values for PWM configuration. </p>
910 <p >PWM config is free-running at system clock speed, no phase correction, wrapping at 0xffff, with standard polarities for channels A and B.</p>
911 <dl class="section return"><dt>Returns</dt><dd>Set of default values. </dd></dl>
912
913 </div>
914 </div>
915 <a id="ga2f600a7192ecd69a8680be367e8d0a00" name="ga2f600a7192ecd69a8680be367e8d0a00"></a>
916 <h2 class="memtitle"><span class="permalink"><a href="#ga2f600a7192ecd69a8680be367e8d0a00">&#9670;&nbsp;</a></span>pwm_get_dreq()</h2>
917
918 <div class="memitem">
919 <div class="memproto">
920 <table class="mlabels">
921   <tr>
922   <td class="mlabels-left">
923       <table class="memname">
924         <tr>
925           <td class="memname">static uint pwm_get_dreq </td>
926           <td>(</td>
927           <td class="paramtype">uint&#160;</td>
928           <td class="paramname"><em>slice_num</em></td><td>)</td>
929           <td></td>
930         </tr>
931       </table>
932   </td>
933   <td class="mlabels-right">
934 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
935   </tr>
936 </table>
937 </div><div class="memdoc">
938
939 <p>Return the DREQ to use for pacing transfers to a particular PWM slice. </p>
940 <dl class="params"><dt>Parameters</dt><dd>
941   <table class="params">
942     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
943   </table>
944   </dd>
945 </dl>
946
947 </div>
948 </div>
949 <a id="ga1c21d122b5605a374644b07d6c7205e6" name="ga1c21d122b5605a374644b07d6c7205e6"></a>
950 <h2 class="memtitle"><span class="permalink"><a href="#ga1c21d122b5605a374644b07d6c7205e6">&#9670;&nbsp;</a></span>pwm_get_irq0_status_mask()</h2>
951
952 <div class="memitem">
953 <div class="memproto">
954 <table class="mlabels">
955   <tr>
956   <td class="mlabels-left">
957       <table class="memname">
958         <tr>
959           <td class="memname">static uint32_t pwm_get_irq0_status_mask </td>
960           <td>(</td>
961           <td class="paramtype">void&#160;</td>
962           <td class="paramname"></td><td>)</td>
963           <td></td>
964         </tr>
965       </table>
966   </td>
967   <td class="mlabels-right">
968 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
969   </tr>
970 </table>
971 </div><div class="memdoc">
972
973 <p>Get PWM interrupt status, raw for the PWM_IRQ_WRAP_0. </p>
974 <dl class="section return"><dt>Returns</dt><dd>Bitmask of all PWM interrupts currently set </dd></dl>
975
976 </div>
977 </div>
978 <a id="ga565a6b6d19b60b10f5a91b11152cc8c2" name="ga565a6b6d19b60b10f5a91b11152cc8c2"></a>
979 <h2 class="memtitle"><span class="permalink"><a href="#ga565a6b6d19b60b10f5a91b11152cc8c2">&#9670;&nbsp;</a></span>pwm_get_irq_status_mask()</h2>
980
981 <div class="memitem">
982 <div class="memproto">
983 <table class="mlabels">
984   <tr>
985   <td class="mlabels-left">
986       <table class="memname">
987         <tr>
988           <td class="memname">static uint32_t pwm_get_irq_status_mask </td>
989           <td>(</td>
990           <td class="paramtype">void&#160;</td>
991           <td class="paramname"></td><td>)</td>
992           <td></td>
993         </tr>
994       </table>
995   </td>
996   <td class="mlabels-right">
997 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
998   </tr>
999 </table>
1000 </div><div class="memdoc">
1001
1002 <p>Get PWM interrupt status, raw for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350) </p>
1003 <dl class="section return"><dt>Returns</dt><dd>Bitmask of all PWM interrupts currently set </dd></dl>
1004
1005 </div>
1006 </div>
1007 <a id="ga96ba504fe00cb8e0d88f0730cdfdaafc" name="ga96ba504fe00cb8e0d88f0730cdfdaafc"></a>
1008 <h2 class="memtitle"><span class="permalink"><a href="#ga96ba504fe00cb8e0d88f0730cdfdaafc">&#9670;&nbsp;</a></span>pwm_gpio_to_channel()</h2>
1009
1010 <div class="memitem">
1011 <div class="memproto">
1012 <table class="mlabels">
1013   <tr>
1014   <td class="mlabels-left">
1015       <table class="memname">
1016         <tr>
1017           <td class="memname">static uint pwm_gpio_to_channel </td>
1018           <td>(</td>
1019           <td class="paramtype">uint&#160;</td>
1020           <td class="paramname"><em>gpio</em></td><td>)</td>
1021           <td></td>
1022         </tr>
1023       </table>
1024   </td>
1025   <td class="mlabels-right">
1026 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1027   </tr>
1028 </table>
1029 </div><div class="memdoc">
1030
1031 <p>Determine the PWM channel that is attached to the specified GPIO. </p>
1032 <p >Each slice 0 to 7 has two channels, A and B.</p>
1033 <dl class="section return"><dt>Returns</dt><dd>The PWM channel that controls the specified GPIO. </dd></dl>
1034
1035 </div>
1036 </div>
1037 <a id="ga8b2117d67a544f64c001f4f32c723eef" name="ga8b2117d67a544f64c001f4f32c723eef"></a>
1038 <h2 class="memtitle"><span class="permalink"><a href="#ga8b2117d67a544f64c001f4f32c723eef">&#9670;&nbsp;</a></span>pwm_gpio_to_slice_num()</h2>
1039
1040 <div class="memitem">
1041 <div class="memproto">
1042 <table class="mlabels">
1043   <tr>
1044   <td class="mlabels-left">
1045       <table class="memname">
1046         <tr>
1047           <td class="memname">static uint pwm_gpio_to_slice_num </td>
1048           <td>(</td>
1049           <td class="paramtype">uint&#160;</td>
1050           <td class="paramname"><em>gpio</em></td><td>)</td>
1051           <td></td>
1052         </tr>
1053       </table>
1054   </td>
1055   <td class="mlabels-right">
1056 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1057   </tr>
1058 </table>
1059 </div><div class="memdoc">
1060
1061 <p>Determine the PWM slice that is attached to the specified GPIO. </p>
1062 <dl class="section return"><dt>Returns</dt><dd>The PWM slice number that controls the specified GPIO. </dd></dl>
1063
1064 </div>
1065 </div>
1066 <a id="ga01d3e90bb7aa9a8b6884eddbfbebc175" name="ga01d3e90bb7aa9a8b6884eddbfbebc175"></a>
1067 <h2 class="memtitle"><span class="permalink"><a href="#ga01d3e90bb7aa9a8b6884eddbfbebc175">&#9670;&nbsp;</a></span>pwm_init()</h2>
1068
1069 <div class="memitem">
1070 <div class="memproto">
1071 <table class="mlabels">
1072   <tr>
1073   <td class="mlabels-left">
1074       <table class="memname">
1075         <tr>
1076           <td class="memname">static void pwm_init </td>
1077           <td>(</td>
1078           <td class="paramtype">uint&#160;</td>
1079           <td class="paramname"><em>slice_num</em>, </td>
1080         </tr>
1081         <tr>
1082           <td class="paramkey"></td>
1083           <td></td>
1084           <td class="paramtype"><a class="el" href="structpwm__config.html">pwm_config</a> *&#160;</td>
1085           <td class="paramname"><em>c</em>, </td>
1086         </tr>
1087         <tr>
1088           <td class="paramkey"></td>
1089           <td></td>
1090           <td class="paramtype">bool&#160;</td>
1091           <td class="paramname"><em>start</em>&#160;</td>
1092         </tr>
1093         <tr>
1094           <td></td>
1095           <td>)</td>
1096           <td></td><td></td>
1097         </tr>
1098       </table>
1099   </td>
1100   <td class="mlabels-right">
1101 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1102   </tr>
1103 </table>
1104 </div><div class="memdoc">
1105
1106 <p>Initialise a PWM with settings from a configuration object. </p>
1107 <p >Use the <a class="el" href="group__hardware__pwm.html#gad76f94a6dd6133c52284b6be8ae98e16">pwm_get_default_config()</a> function to initialise a config structure, make changes as needed using the pwm_config_* functions, then call this function to set up the PWM.</p>
1108 <dl class="params"><dt>Parameters</dt><dd>
1109   <table class="params">
1110     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1111     <tr><td class="paramname">c</td><td>The configuration to use </td></tr>
1112     <tr><td class="paramname">start</td><td>If true the PWM will be started running once configured. If false you will need to start manually using <a class="el" href="group__hardware__pwm.html#ga216496c331542eb57199018fa86b4408">pwm_set_enabled()</a> or <a class="el" href="group__hardware__pwm.html#ga257ea7fd33fcf33815a01dd279ca578d">pwm_set_mask_enabled()</a> </td></tr>
1113   </table>
1114   </dd>
1115 </dl>
1116
1117 </div>
1118 </div>
1119 <a id="ga4ddb2ef5ee40a1f59d35b0f4966fced1" name="ga4ddb2ef5ee40a1f59d35b0f4966fced1"></a>
1120 <h2 class="memtitle"><span class="permalink"><a href="#ga4ddb2ef5ee40a1f59d35b0f4966fced1">&#9670;&nbsp;</a></span>pwm_irqn_force()</h2>
1121
1122 <div class="memitem">
1123 <div class="memproto">
1124 <table class="mlabels">
1125   <tr>
1126   <td class="mlabels-left">
1127       <table class="memname">
1128         <tr>
1129           <td class="memname">static void pwm_irqn_force </td>
1130           <td>(</td>
1131           <td class="paramtype">uint&#160;</td>
1132           <td class="paramname"><em>irq_index</em>, </td>
1133         </tr>
1134         <tr>
1135           <td class="paramkey"></td>
1136           <td></td>
1137           <td class="paramtype">uint&#160;</td>
1138           <td class="paramname"><em>slice_num</em>&#160;</td>
1139         </tr>
1140         <tr>
1141           <td></td>
1142           <td>)</td>
1143           <td></td><td></td>
1144         </tr>
1145       </table>
1146   </td>
1147   <td class="mlabels-right">
1148 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1149   </tr>
1150 </table>
1151 </div><div class="memdoc">
1152
1153 <p>Force PWM interrupt via PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1. </p>
1154 <dl class="params"><dt>Parameters</dt><dd>
1155   <table class="params">
1156     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 for PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1 </td></tr>
1157     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1158   </table>
1159   </dd>
1160 </dl>
1161
1162 </div>
1163 </div>
1164 <a id="gab23895c8c5a1d73d73e4f1f32e4d255e" name="gab23895c8c5a1d73d73e4f1f32e4d255e"></a>
1165 <h2 class="memtitle"><span class="permalink"><a href="#gab23895c8c5a1d73d73e4f1f32e4d255e">&#9670;&nbsp;</a></span>pwm_irqn_get_status_mask()</h2>
1166
1167 <div class="memitem">
1168 <div class="memproto">
1169 <table class="mlabels">
1170   <tr>
1171   <td class="mlabels-left">
1172       <table class="memname">
1173         <tr>
1174           <td class="memname">static uint32_t pwm_irqn_get_status_mask </td>
1175           <td>(</td>
1176           <td class="paramtype">uint&#160;</td>
1177           <td class="paramname"><em>irq_index</em></td><td>)</td>
1178           <td></td>
1179         </tr>
1180       </table>
1181   </td>
1182   <td class="mlabels-right">
1183 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1184   </tr>
1185 </table>
1186 </div><div class="memdoc">
1187
1188 <p>Get PWM interrupt status, raw for either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1. </p>
1189 <dl class="params"><dt>Parameters</dt><dd>
1190   <table class="params">
1191     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 for PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1 </td></tr>
1192   </table>
1193   </dd>
1194 </dl>
1195 <dl class="section return"><dt>Returns</dt><dd>Bitmask of all PWM interrupts currently set </dd></dl>
1196
1197 </div>
1198 </div>
1199 <a id="ga2ea24b74474d2a7095ab1a9e409fa85e" name="ga2ea24b74474d2a7095ab1a9e409fa85e"></a>
1200 <h2 class="memtitle"><span class="permalink"><a href="#ga2ea24b74474d2a7095ab1a9e409fa85e">&#9670;&nbsp;</a></span>pwm_irqn_set_slice_enabled()</h2>
1201
1202 <div class="memitem">
1203 <div class="memproto">
1204 <table class="mlabels">
1205   <tr>
1206   <td class="mlabels-left">
1207       <table class="memname">
1208         <tr>
1209           <td class="memname">static void pwm_irqn_set_slice_enabled </td>
1210           <td>(</td>
1211           <td class="paramtype">uint&#160;</td>
1212           <td class="paramname"><em>irq_index</em>, </td>
1213         </tr>
1214         <tr>
1215           <td class="paramkey"></td>
1216           <td></td>
1217           <td class="paramtype">uint&#160;</td>
1218           <td class="paramname"><em>slice_num</em>, </td>
1219         </tr>
1220         <tr>
1221           <td class="paramkey"></td>
1222           <td></td>
1223           <td class="paramtype">bool&#160;</td>
1224           <td class="paramname"><em>enabled</em>&#160;</td>
1225         </tr>
1226         <tr>
1227           <td></td>
1228           <td>)</td>
1229           <td></td><td></td>
1230         </tr>
1231       </table>
1232   </td>
1233   <td class="mlabels-right">
1234 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1235   </tr>
1236 </table>
1237 </div><div class="memdoc">
1238
1239 <p>Enable PWM instance interrupt via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1. </p>
1240 <p >Used to enable a single PWM instance interrupt.</p>
1241 <p >Note there is only one PWM_IRQ_WRAP on RP2040.</p>
1242 <dl class="params"><dt>Parameters</dt><dd>
1243   <table class="params">
1244     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 for PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1 </td></tr>
1245     <tr><td class="paramname">slice_num</td><td>PWM block to enable/disable </td></tr>
1246     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1247   </table>
1248   </dd>
1249 </dl>
1250
1251 </div>
1252 </div>
1253 <a id="ga6c5a284b10961cd0f73e22684df691f0" name="ga6c5a284b10961cd0f73e22684df691f0"></a>
1254 <h2 class="memtitle"><span class="permalink"><a href="#ga6c5a284b10961cd0f73e22684df691f0">&#9670;&nbsp;</a></span>pwm_irqn_set_slice_mask_enabled()</h2>
1255
1256 <div class="memitem">
1257 <div class="memproto">
1258 <table class="mlabels">
1259   <tr>
1260   <td class="mlabels-left">
1261       <table class="memname">
1262         <tr>
1263           <td class="memname">static void pwm_irqn_set_slice_mask_enabled </td>
1264           <td>(</td>
1265           <td class="paramtype">uint&#160;</td>
1266           <td class="paramname"><em>irq_index</em>, </td>
1267         </tr>
1268         <tr>
1269           <td class="paramkey"></td>
1270           <td></td>
1271           <td class="paramtype">uint&#160;</td>
1272           <td class="paramname"><em>slice_mask</em>, </td>
1273         </tr>
1274         <tr>
1275           <td class="paramkey"></td>
1276           <td></td>
1277           <td class="paramtype">bool&#160;</td>
1278           <td class="paramname"><em>enabled</em>&#160;</td>
1279         </tr>
1280         <tr>
1281           <td></td>
1282           <td>)</td>
1283           <td></td><td></td>
1284         </tr>
1285       </table>
1286   </td>
1287   <td class="mlabels-right">
1288 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1289   </tr>
1290 </table>
1291 </div><div class="memdoc">
1292
1293 <p>Enable PWM instance interrupts via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1. </p>
1294 <p >Used to enable a single PWM instance interrupt.</p>
1295 <p >Note there is only one PWM_IRQ_WRAP on RP2040.</p>
1296 <dl class="params"><dt>Parameters</dt><dd>
1297   <table class="params">
1298     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 for PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1 </td></tr>
1299     <tr><td class="paramname">slice_mask</td><td>Bitmask of all the blocks to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. </td></tr>
1300     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1301   </table>
1302   </dd>
1303 </dl>
1304
1305 </div>
1306 </div>
1307 <a id="ga0dec65009d8c0738677818b680fd2ad9" name="ga0dec65009d8c0738677818b680fd2ad9"></a>
1308 <h2 class="memtitle"><span class="permalink"><a href="#ga0dec65009d8c0738677818b680fd2ad9">&#9670;&nbsp;</a></span>pwm_retard_count()</h2>
1309
1310 <div class="memitem">
1311 <div class="memproto">
1312 <table class="mlabels">
1313   <tr>
1314   <td class="mlabels-left">
1315       <table class="memname">
1316         <tr>
1317           <td class="memname">static void pwm_retard_count </td>
1318           <td>(</td>
1319           <td class="paramtype">uint&#160;</td>
1320           <td class="paramname"><em>slice_num</em></td><td>)</td>
1321           <td></td>
1322         </tr>
1323       </table>
1324   </td>
1325   <td class="mlabels-right">
1326 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1327   </tr>
1328 </table>
1329 </div><div class="memdoc">
1330
1331 <p>Retard PWM count. </p>
1332 <p >Retard the phase of a running counter by 1 count</p>
1333 <p >This function will return once the retardation is complete.</p>
1334 <dl class="params"><dt>Parameters</dt><dd>
1335   <table class="params">
1336     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1337   </table>
1338   </dd>
1339 </dl>
1340
1341 </div>
1342 </div>
1343 <a id="gae7064c88717eee935e50138f5b0ae2b7" name="gae7064c88717eee935e50138f5b0ae2b7"></a>
1344 <h2 class="memtitle"><span class="permalink"><a href="#gae7064c88717eee935e50138f5b0ae2b7">&#9670;&nbsp;</a></span>pwm_set_both_levels()</h2>
1345
1346 <div class="memitem">
1347 <div class="memproto">
1348 <table class="mlabels">
1349   <tr>
1350   <td class="mlabels-left">
1351       <table class="memname">
1352         <tr>
1353           <td class="memname">static void pwm_set_both_levels </td>
1354           <td>(</td>
1355           <td class="paramtype">uint&#160;</td>
1356           <td class="paramname"><em>slice_num</em>, </td>
1357         </tr>
1358         <tr>
1359           <td class="paramkey"></td>
1360           <td></td>
1361           <td class="paramtype">uint16_t&#160;</td>
1362           <td class="paramname"><em>level_a</em>, </td>
1363         </tr>
1364         <tr>
1365           <td class="paramkey"></td>
1366           <td></td>
1367           <td class="paramtype">uint16_t&#160;</td>
1368           <td class="paramname"><em>level_b</em>&#160;</td>
1369         </tr>
1370         <tr>
1371           <td></td>
1372           <td>)</td>
1373           <td></td><td></td>
1374         </tr>
1375       </table>
1376   </td>
1377   <td class="mlabels-right">
1378 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1379   </tr>
1380 </table>
1381 </div><div class="memdoc">
1382
1383 <p>Set PWM counter compare values. </p>
1384 <p >Set the value of the PWM counter compare values, A and B.</p>
1385 <p >The counter compare register is double-buffered in hardware. This means that, when the PWM is running, a write to the counter compare values does not take effect until the next time the PWM slice wraps (or, in phase-correct mode, the next time the slice reaches 0). If the PWM is not running, the write is latched in immediately.</p>
1386 <dl class="params"><dt>Parameters</dt><dd>
1387   <table class="params">
1388     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1389     <tr><td class="paramname">level_a</td><td>Value to set compare A to. When the counter reaches this value the A output is deasserted </td></tr>
1390     <tr><td class="paramname">level_b</td><td>Value to set compare B to. When the counter reaches this value the B output is deasserted </td></tr>
1391   </table>
1392   </dd>
1393 </dl>
1394
1395 </div>
1396 </div>
1397 <a id="ga18a2b3bbc240d1a9b36526d69c06ec3d" name="ga18a2b3bbc240d1a9b36526d69c06ec3d"></a>
1398 <h2 class="memtitle"><span class="permalink"><a href="#ga18a2b3bbc240d1a9b36526d69c06ec3d">&#9670;&nbsp;</a></span>pwm_set_chan_level()</h2>
1399
1400 <div class="memitem">
1401 <div class="memproto">
1402 <table class="mlabels">
1403   <tr>
1404   <td class="mlabels-left">
1405       <table class="memname">
1406         <tr>
1407           <td class="memname">static void pwm_set_chan_level </td>
1408           <td>(</td>
1409           <td class="paramtype">uint&#160;</td>
1410           <td class="paramname"><em>slice_num</em>, </td>
1411         </tr>
1412         <tr>
1413           <td class="paramkey"></td>
1414           <td></td>
1415           <td class="paramtype">uint&#160;</td>
1416           <td class="paramname"><em>chan</em>, </td>
1417         </tr>
1418         <tr>
1419           <td class="paramkey"></td>
1420           <td></td>
1421           <td class="paramtype">uint16_t&#160;</td>
1422           <td class="paramname"><em>level</em>&#160;</td>
1423         </tr>
1424         <tr>
1425           <td></td>
1426           <td>)</td>
1427           <td></td><td></td>
1428         </tr>
1429       </table>
1430   </td>
1431   <td class="mlabels-right">
1432 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1433   </tr>
1434 </table>
1435 </div><div class="memdoc">
1436
1437 <p>Set the current PWM counter compare value for one channel. </p>
1438 <p >Set the value of the PWM counter compare value, for either channel A or channel B.</p>
1439 <p >The counter compare register is double-buffered in hardware. This means that, when the PWM is running, a write to the counter compare values does not take effect until the next time the PWM slice wraps (or, in phase-correct mode, the next time the slice reaches 0). If the PWM is not running, the write is latched in immediately.</p>
1440 <dl class="params"><dt>Parameters</dt><dd>
1441   <table class="params">
1442     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1443     <tr><td class="paramname">chan</td><td>Which channel to update. 0 for A, 1 for B. </td></tr>
1444     <tr><td class="paramname">level</td><td>new level for the selected output </td></tr>
1445   </table>
1446   </dd>
1447 </dl>
1448
1449 </div>
1450 </div>
1451 <a id="ga94782fc53adb07a3594ae0939d9a2e3e" name="ga94782fc53adb07a3594ae0939d9a2e3e"></a>
1452 <h2 class="memtitle"><span class="permalink"><a href="#ga94782fc53adb07a3594ae0939d9a2e3e">&#9670;&nbsp;</a></span>pwm_set_clkdiv()</h2>
1453
1454 <div class="memitem">
1455 <div class="memproto">
1456 <table class="mlabels">
1457   <tr>
1458   <td class="mlabels-left">
1459       <table class="memname">
1460         <tr>
1461           <td class="memname">static void pwm_set_clkdiv </td>
1462           <td>(</td>
1463           <td class="paramtype">uint&#160;</td>
1464           <td class="paramname"><em>slice_num</em>, </td>
1465         </tr>
1466         <tr>
1467           <td class="paramkey"></td>
1468           <td></td>
1469           <td class="paramtype">float&#160;</td>
1470           <td class="paramname"><em>divider</em>&#160;</td>
1471         </tr>
1472         <tr>
1473           <td></td>
1474           <td>)</td>
1475           <td></td><td></td>
1476         </tr>
1477       </table>
1478   </td>
1479   <td class="mlabels-right">
1480 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1481   </tr>
1482 </table>
1483 </div><div class="memdoc">
1484
1485 <p>Set PWM clock divider. </p>
1486 <p >Set the clock divider. Counter increment will be on sysclock divided by this value, taking into account the gating.</p>
1487 <dl class="params"><dt>Parameters</dt><dd>
1488   <table class="params">
1489     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1490     <tr><td class="paramname">divider</td><td>Floating point clock divider, 1.f &lt;= value &lt; 256.f </td></tr>
1491   </table>
1492   </dd>
1493 </dl>
1494
1495 </div>
1496 </div>
1497 <a id="ga0da8e86adb7de041a6b8607b36aee442" name="ga0da8e86adb7de041a6b8607b36aee442"></a>
1498 <h2 class="memtitle"><span class="permalink"><a href="#ga0da8e86adb7de041a6b8607b36aee442">&#9670;&nbsp;</a></span>pwm_set_clkdiv_int_frac()</h2>
1499
1500 <div class="memitem">
1501 <div class="memproto">
1502 <table class="mlabels">
1503   <tr>
1504   <td class="mlabels-left">
1505       <table class="memname">
1506         <tr>
1507           <td class="memname">static void pwm_set_clkdiv_int_frac </td>
1508           <td>(</td>
1509           <td class="paramtype">uint&#160;</td>
1510           <td class="paramname"><em>slice_num</em>, </td>
1511         </tr>
1512         <tr>
1513           <td class="paramkey"></td>
1514           <td></td>
1515           <td class="paramtype">uint8_t&#160;</td>
1516           <td class="paramname"><em>integer</em>, </td>
1517         </tr>
1518         <tr>
1519           <td class="paramkey"></td>
1520           <td></td>
1521           <td class="paramtype">uint8_t&#160;</td>
1522           <td class="paramname"><em>fract</em>&#160;</td>
1523         </tr>
1524         <tr>
1525           <td></td>
1526           <td>)</td>
1527           <td></td><td></td>
1528         </tr>
1529       </table>
1530   </td>
1531   <td class="mlabels-right">
1532 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1533   </tr>
1534 </table>
1535 </div><div class="memdoc">
1536
1537 <p>Set PWM clock divider using an 8:4 fractional value. </p>
1538 <p >Set the clock divider. Counter increment will be on sysclock divided by this value, taking into account the gating.</p>
1539 <dl class="params"><dt>Parameters</dt><dd>
1540   <table class="params">
1541     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1542     <tr><td class="paramname">integer</td><td>8 bit integer part of the clock divider </td></tr>
1543     <tr><td class="paramname">fract</td><td>4 bit fractional part of the clock divider </td></tr>
1544   </table>
1545   </dd>
1546 </dl>
1547
1548 </div>
1549 </div>
1550 <a id="ga1ee213ebb13b98dc81e60a512f696227" name="ga1ee213ebb13b98dc81e60a512f696227"></a>
1551 <h2 class="memtitle"><span class="permalink"><a href="#ga1ee213ebb13b98dc81e60a512f696227">&#9670;&nbsp;</a></span>pwm_set_clkdiv_mode()</h2>
1552
1553 <div class="memitem">
1554 <div class="memproto">
1555 <table class="mlabels">
1556   <tr>
1557   <td class="mlabels-left">
1558       <table class="memname">
1559         <tr>
1560           <td class="memname">static void pwm_set_clkdiv_mode </td>
1561           <td>(</td>
1562           <td class="paramtype">uint&#160;</td>
1563           <td class="paramname"><em>slice_num</em>, </td>
1564         </tr>
1565         <tr>
1566           <td class="paramkey"></td>
1567           <td></td>
1568           <td class="paramtype">enum <a class="el" href="group__hardware__pwm.html#ga0a00197703c8606641488cfff3f660e6">pwm_clkdiv_mode</a>&#160;</td>
1569           <td class="paramname"><em>mode</em>&#160;</td>
1570         </tr>
1571         <tr>
1572           <td></td>
1573           <td>)</td>
1574           <td></td><td></td>
1575         </tr>
1576       </table>
1577   </td>
1578   <td class="mlabels-right">
1579 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1580   </tr>
1581 </table>
1582 </div><div class="memdoc">
1583
1584 <p>Set PWM divider mode. </p>
1585 <dl class="params"><dt>Parameters</dt><dd>
1586   <table class="params">
1587     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1588     <tr><td class="paramname">mode</td><td>Required divider mode </td></tr>
1589   </table>
1590   </dd>
1591 </dl>
1592
1593 </div>
1594 </div>
1595 <a id="ga5179ec971146ab611b9232587e945769" name="ga5179ec971146ab611b9232587e945769"></a>
1596 <h2 class="memtitle"><span class="permalink"><a href="#ga5179ec971146ab611b9232587e945769">&#9670;&nbsp;</a></span>pwm_set_counter()</h2>
1597
1598 <div class="memitem">
1599 <div class="memproto">
1600 <table class="mlabels">
1601   <tr>
1602   <td class="mlabels-left">
1603       <table class="memname">
1604         <tr>
1605           <td class="memname">static void pwm_set_counter </td>
1606           <td>(</td>
1607           <td class="paramtype">uint&#160;</td>
1608           <td class="paramname"><em>slice_num</em>, </td>
1609         </tr>
1610         <tr>
1611           <td class="paramkey"></td>
1612           <td></td>
1613           <td class="paramtype">uint16_t&#160;</td>
1614           <td class="paramname"><em>c</em>&#160;</td>
1615         </tr>
1616         <tr>
1617           <td></td>
1618           <td>)</td>
1619           <td></td><td></td>
1620         </tr>
1621       </table>
1622   </td>
1623   <td class="mlabels-right">
1624 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1625   </tr>
1626 </table>
1627 </div><div class="memdoc">
1628
1629 <p>Set PWM counter. </p>
1630 <p >Set the value of the PWM counter</p>
1631 <dl class="params"><dt>Parameters</dt><dd>
1632   <table class="params">
1633     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1634     <tr><td class="paramname">c</td><td>Value to set the PWM counter to </td></tr>
1635   </table>
1636   </dd>
1637 </dl>
1638
1639 </div>
1640 </div>
1641 <a id="ga216496c331542eb57199018fa86b4408" name="ga216496c331542eb57199018fa86b4408"></a>
1642 <h2 class="memtitle"><span class="permalink"><a href="#ga216496c331542eb57199018fa86b4408">&#9670;&nbsp;</a></span>pwm_set_enabled()</h2>
1643
1644 <div class="memitem">
1645 <div class="memproto">
1646 <table class="mlabels">
1647   <tr>
1648   <td class="mlabels-left">
1649       <table class="memname">
1650         <tr>
1651           <td class="memname">static void pwm_set_enabled </td>
1652           <td>(</td>
1653           <td class="paramtype">uint&#160;</td>
1654           <td class="paramname"><em>slice_num</em>, </td>
1655         </tr>
1656         <tr>
1657           <td class="paramkey"></td>
1658           <td></td>
1659           <td class="paramtype">bool&#160;</td>
1660           <td class="paramname"><em>enabled</em>&#160;</td>
1661         </tr>
1662         <tr>
1663           <td></td>
1664           <td>)</td>
1665           <td></td><td></td>
1666         </tr>
1667       </table>
1668   </td>
1669   <td class="mlabels-right">
1670 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1671   </tr>
1672 </table>
1673 </div><div class="memdoc">
1674
1675 <p>Enable/Disable PWM. </p>
1676 <p >When a PWM is disabled, it halts its counter, and the output pins are left high or low depending on exactly when the counter is halted. When re-enabled the PWM resumes immediately from where it left off.</p>
1677 <p >If the PWM's output pins need to be low when halted:</p>
1678 <ul>
1679 <li>The counter compare can be set to zero whilst the PWM is enabled, and then the PWM disabled once both pins are seen to be low</li>
1680 <li>The GPIO output overrides can be used to force the actual pins low</li>
1681 <li>The PWM can be run for one cycle (i.e. enabled then immediately disabled) with a TOP of 0, count of 0 and counter compare of 0, to force the pins low when the PWM has already been halted. The same method can be used with a counter compare value of 1 to force a pin high.</li>
1682 </ul>
1683 <p >Note that, when disabled, the PWM can still be advanced one count at a time by pulsing the PH_ADV bit in its CSR. The output pins transition as though the PWM were enabled.</p>
1684 <dl class="params"><dt>Parameters</dt><dd>
1685   <table class="params">
1686     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
1687     <tr><td class="paramname">enabled</td><td>true to enable the specified PWM, false to disable. </td></tr>
1688   </table>
1689   </dd>
1690 </dl>
1691
1692 </div>
1693 </div>
1694 <a id="ga279d1ba7dcc8f19619f389317efb41fd" name="ga279d1ba7dcc8f19619f389317efb41fd"></a>
1695 <h2 class="memtitle"><span class="permalink"><a href="#ga279d1ba7dcc8f19619f389317efb41fd">&#9670;&nbsp;</a></span>pwm_set_gpio_level()</h2>
1696
1697 <div class="memitem">
1698 <div class="memproto">
1699 <table class="mlabels">
1700   <tr>
1701   <td class="mlabels-left">
1702       <table class="memname">
1703         <tr>
1704           <td class="memname">static void pwm_set_gpio_level </td>
1705           <td>(</td>
1706           <td class="paramtype">uint&#160;</td>
1707           <td class="paramname"><em>gpio</em>, </td>
1708         </tr>
1709         <tr>
1710           <td class="paramkey"></td>
1711           <td></td>
1712           <td class="paramtype">uint16_t&#160;</td>
1713           <td class="paramname"><em>level</em>&#160;</td>
1714         </tr>
1715         <tr>
1716           <td></td>
1717           <td>)</td>
1718           <td></td><td></td>
1719         </tr>
1720       </table>
1721   </td>
1722   <td class="mlabels-right">
1723 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1724   </tr>
1725 </table>
1726 </div><div class="memdoc">
1727
1728 <p>Helper function to set the PWM level for the slice and channel associated with a GPIO. </p>
1729 <p >Look up the correct slice (0 to 7) and channel (A or B) for a given GPIO, and update the corresponding counter compare field.</p>
1730 <p >This PWM slice should already have been configured and set running. Also be careful of multiple GPIOs mapping to the same slice and channel (if GPIOs have a difference of 16).</p>
1731 <p >The counter compare register is double-buffered in hardware. This means that, when the PWM is running, a write to the counter compare values does not take effect until the next time the PWM slice wraps (or, in phase-correct mode, the next time the slice reaches 0). If the PWM is not running, the write is latched in immediately.</p>
1732 <dl class="params"><dt>Parameters</dt><dd>
1733   <table class="params">
1734     <tr><td class="paramname">gpio</td><td>GPIO to set level of </td></tr>
1735     <tr><td class="paramname">level</td><td>PWM level for this GPIO </td></tr>
1736   </table>
1737   </dd>
1738 </dl>
1739
1740 </div>
1741 </div>
1742 <a id="ga79aa7a5ac3e6960ed1c8eda99cddb1a9" name="ga79aa7a5ac3e6960ed1c8eda99cddb1a9"></a>
1743 <h2 class="memtitle"><span class="permalink"><a href="#ga79aa7a5ac3e6960ed1c8eda99cddb1a9">&#9670;&nbsp;</a></span>pwm_set_irq0_enabled()</h2>
1744
1745 <div class="memitem">
1746 <div class="memproto">
1747 <table class="mlabels">
1748   <tr>
1749   <td class="mlabels-left">
1750       <table class="memname">
1751         <tr>
1752           <td class="memname">static void pwm_set_irq0_enabled </td>
1753           <td>(</td>
1754           <td class="paramtype">uint&#160;</td>
1755           <td class="paramname"><em>slice_num</em>, </td>
1756         </tr>
1757         <tr>
1758           <td class="paramkey"></td>
1759           <td></td>
1760           <td class="paramtype">bool&#160;</td>
1761           <td class="paramname"><em>enabled</em>&#160;</td>
1762         </tr>
1763         <tr>
1764           <td></td>
1765           <td>)</td>
1766           <td></td><td></td>
1767         </tr>
1768       </table>
1769   </td>
1770   <td class="mlabels-right">
1771 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1772   </tr>
1773 </table>
1774 </div><div class="memdoc">
1775
1776 <p>Enable PWM instance interrupt via PWM_IRQ_WRAP_0. </p>
1777 <p >Used to enable a single PWM instance interrupt.</p>
1778 <dl class="params"><dt>Parameters</dt><dd>
1779   <table class="params">
1780     <tr><td class="paramname">slice_num</td><td>PWM block to enable/disable </td></tr>
1781     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1782   </table>
1783   </dd>
1784 </dl>
1785
1786 </div>
1787 </div>
1788 <a id="gade21c4c94d2dce96bb4992d818909f0e" name="gade21c4c94d2dce96bb4992d818909f0e"></a>
1789 <h2 class="memtitle"><span class="permalink"><a href="#gade21c4c94d2dce96bb4992d818909f0e">&#9670;&nbsp;</a></span>pwm_set_irq0_mask_enabled()</h2>
1790
1791 <div class="memitem">
1792 <div class="memproto">
1793 <table class="mlabels">
1794   <tr>
1795   <td class="mlabels-left">
1796       <table class="memname">
1797         <tr>
1798           <td class="memname">static void pwm_set_irq0_mask_enabled </td>
1799           <td>(</td>
1800           <td class="paramtype">uint32_t&#160;</td>
1801           <td class="paramname"><em>slice_mask</em>, </td>
1802         </tr>
1803         <tr>
1804           <td class="paramkey"></td>
1805           <td></td>
1806           <td class="paramtype">bool&#160;</td>
1807           <td class="paramname"><em>enabled</em>&#160;</td>
1808         </tr>
1809         <tr>
1810           <td></td>
1811           <td>)</td>
1812           <td></td><td></td>
1813         </tr>
1814       </table>
1815   </td>
1816   <td class="mlabels-right">
1817 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1818   </tr>
1819 </table>
1820 </div><div class="memdoc">
1821
1822 <p>Enable multiple PWM instance interrupts via PWM_IRQ_WRAP_0. </p>
1823 <p >Use this to enable multiple PWM interrupts at once.</p>
1824 <dl class="params"><dt>Parameters</dt><dd>
1825   <table class="params">
1826     <tr><td class="paramname">slice_mask</td><td>Bitmask of all the blocks to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. </td></tr>
1827     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1828   </table>
1829   </dd>
1830 </dl>
1831
1832 </div>
1833 </div>
1834 <a id="ga093a3c371dda3aa2291331147337265e" name="ga093a3c371dda3aa2291331147337265e"></a>
1835 <h2 class="memtitle"><span class="permalink"><a href="#ga093a3c371dda3aa2291331147337265e">&#9670;&nbsp;</a></span>pwm_set_irq_enabled()</h2>
1836
1837 <div class="memitem">
1838 <div class="memproto">
1839 <table class="mlabels">
1840   <tr>
1841   <td class="mlabels-left">
1842       <table class="memname">
1843         <tr>
1844           <td class="memname">static void pwm_set_irq_enabled </td>
1845           <td>(</td>
1846           <td class="paramtype">uint&#160;</td>
1847           <td class="paramname"><em>slice_num</em>, </td>
1848         </tr>
1849         <tr>
1850           <td class="paramkey"></td>
1851           <td></td>
1852           <td class="paramtype">bool&#160;</td>
1853           <td class="paramname"><em>enabled</em>&#160;</td>
1854         </tr>
1855         <tr>
1856           <td></td>
1857           <td>)</td>
1858           <td></td><td></td>
1859         </tr>
1860       </table>
1861   </td>
1862   <td class="mlabels-right">
1863 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1864   </tr>
1865 </table>
1866 </div><div class="memdoc">
1867
1868 <p>Enable PWM instance interrupt via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350) </p>
1869 <p >Used to enable a single PWM instance interrupt.</p>
1870 <p >Note there is only one PWM_IRQ_WRAP on RP2040.</p>
1871 <dl class="params"><dt>Parameters</dt><dd>
1872   <table class="params">
1873     <tr><td class="paramname">slice_num</td><td>PWM block to enable/disable </td></tr>
1874     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1875   </table>
1876   </dd>
1877 </dl>
1878
1879 </div>
1880 </div>
1881 <a id="gac32a9b468ddbd49bad6ebff6789fd215" name="gac32a9b468ddbd49bad6ebff6789fd215"></a>
1882 <h2 class="memtitle"><span class="permalink"><a href="#gac32a9b468ddbd49bad6ebff6789fd215">&#9670;&nbsp;</a></span>pwm_set_irq_mask_enabled()</h2>
1883
1884 <div class="memitem">
1885 <div class="memproto">
1886 <table class="mlabels">
1887   <tr>
1888   <td class="mlabels-left">
1889       <table class="memname">
1890         <tr>
1891           <td class="memname">static void pwm_set_irq_mask_enabled </td>
1892           <td>(</td>
1893           <td class="paramtype">uint32_t&#160;</td>
1894           <td class="paramname"><em>slice_mask</em>, </td>
1895         </tr>
1896         <tr>
1897           <td class="paramkey"></td>
1898           <td></td>
1899           <td class="paramtype">bool&#160;</td>
1900           <td class="paramname"><em>enabled</em>&#160;</td>
1901         </tr>
1902         <tr>
1903           <td></td>
1904           <td>)</td>
1905           <td></td><td></td>
1906         </tr>
1907       </table>
1908   </td>
1909   <td class="mlabels-right">
1910 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1911   </tr>
1912 </table>
1913 </div><div class="memdoc">
1914
1915 <p>Enable multiple PWM instance interrupts via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350) </p>
1916 <p >Use this to enable multiple PWM interrupts at once.</p>
1917 <p >Note there is only one PWM_IRQ_WRAP on RP2040.</p>
1918 <dl class="params"><dt>Parameters</dt><dd>
1919   <table class="params">
1920     <tr><td class="paramname">slice_mask</td><td>Bitmask of all the blocks to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. </td></tr>
1921     <tr><td class="paramname">enabled</td><td>true to enable, false to disable </td></tr>
1922   </table>
1923   </dd>
1924 </dl>
1925
1926 </div>
1927 </div>
1928 <a id="ga257ea7fd33fcf33815a01dd279ca578d" name="ga257ea7fd33fcf33815a01dd279ca578d"></a>
1929 <h2 class="memtitle"><span class="permalink"><a href="#ga257ea7fd33fcf33815a01dd279ca578d">&#9670;&nbsp;</a></span>pwm_set_mask_enabled()</h2>
1930
1931 <div class="memitem">
1932 <div class="memproto">
1933 <table class="mlabels">
1934   <tr>
1935   <td class="mlabels-left">
1936       <table class="memname">
1937         <tr>
1938           <td class="memname">static void pwm_set_mask_enabled </td>
1939           <td>(</td>
1940           <td class="paramtype">uint32_t&#160;</td>
1941           <td class="paramname"><em>mask</em></td><td>)</td>
1942           <td></td>
1943         </tr>
1944       </table>
1945   </td>
1946   <td class="mlabels-right">
1947 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1948   </tr>
1949 </table>
1950 </div><div class="memdoc">
1951
1952 <p>Enable/Disable multiple PWM slices simultaneously. </p>
1953 <dl class="params"><dt>Parameters</dt><dd>
1954   <table class="params">
1955     <tr><td class="paramname">mask</td><td>Bitmap of PWMs to enable/disable. Bits 0 to 7 enable slices 0-7 respectively </td></tr>
1956   </table>
1957   </dd>
1958 </dl>
1959
1960 </div>
1961 </div>
1962 <a id="gab12ab09d76aed43a36f973232718fdd6" name="gab12ab09d76aed43a36f973232718fdd6"></a>
1963 <h2 class="memtitle"><span class="permalink"><a href="#gab12ab09d76aed43a36f973232718fdd6">&#9670;&nbsp;</a></span>pwm_set_output_polarity()</h2>
1964
1965 <div class="memitem">
1966 <div class="memproto">
1967 <table class="mlabels">
1968   <tr>
1969   <td class="mlabels-left">
1970       <table class="memname">
1971         <tr>
1972           <td class="memname">static void pwm_set_output_polarity </td>
1973           <td>(</td>
1974           <td class="paramtype">uint&#160;</td>
1975           <td class="paramname"><em>slice_num</em>, </td>
1976         </tr>
1977         <tr>
1978           <td class="paramkey"></td>
1979           <td></td>
1980           <td class="paramtype">bool&#160;</td>
1981           <td class="paramname"><em>a</em>, </td>
1982         </tr>
1983         <tr>
1984           <td class="paramkey"></td>
1985           <td></td>
1986           <td class="paramtype">bool&#160;</td>
1987           <td class="paramname"><em>b</em>&#160;</td>
1988         </tr>
1989         <tr>
1990           <td></td>
1991           <td>)</td>
1992           <td></td><td></td>
1993         </tr>
1994       </table>
1995   </td>
1996   <td class="mlabels-right">
1997 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1998   </tr>
1999 </table>
2000 </div><div class="memdoc">
2001
2002 <p>Set PWM output polarity. </p>
2003 <dl class="params"><dt>Parameters</dt><dd>
2004   <table class="params">
2005     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
2006     <tr><td class="paramname">a</td><td>true to invert output A </td></tr>
2007     <tr><td class="paramname">b</td><td>true to invert output B </td></tr>
2008   </table>
2009   </dd>
2010 </dl>
2011
2012 </div>
2013 </div>
2014 <a id="gacb2a1995f0bfdb12345607b903c3f11e" name="gacb2a1995f0bfdb12345607b903c3f11e"></a>
2015 <h2 class="memtitle"><span class="permalink"><a href="#gacb2a1995f0bfdb12345607b903c3f11e">&#9670;&nbsp;</a></span>pwm_set_phase_correct()</h2>
2016
2017 <div class="memitem">
2018 <div class="memproto">
2019 <table class="mlabels">
2020   <tr>
2021   <td class="mlabels-left">
2022       <table class="memname">
2023         <tr>
2024           <td class="memname">static void pwm_set_phase_correct </td>
2025           <td>(</td>
2026           <td class="paramtype">uint&#160;</td>
2027           <td class="paramname"><em>slice_num</em>, </td>
2028         </tr>
2029         <tr>
2030           <td class="paramkey"></td>
2031           <td></td>
2032           <td class="paramtype">bool&#160;</td>
2033           <td class="paramname"><em>phase_correct</em>&#160;</td>
2034         </tr>
2035         <tr>
2036           <td></td>
2037           <td>)</td>
2038           <td></td><td></td>
2039         </tr>
2040       </table>
2041   </td>
2042   <td class="mlabels-right">
2043 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2044   </tr>
2045 </table>
2046 </div><div class="memdoc">
2047
2048 <p>Set PWM phase correct on/off. </p>
2049 <dl class="params"><dt>Parameters</dt><dd>
2050   <table class="params">
2051     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
2052     <tr><td class="paramname">phase_correct</td><td>true to set phase correct modulation, false to set trailing edge</td></tr>
2053   </table>
2054   </dd>
2055 </dl>
2056 <p>Setting phase control to true means that instead of wrapping back to zero when the wrap point is reached, the PWM starts counting back down. The output frequency is halved when phase-correct mode is enabled. </p>
2057
2058 </div>
2059 </div>
2060 <a id="ga6f8fe346e6912cfab3d36b00043a3627" name="ga6f8fe346e6912cfab3d36b00043a3627"></a>
2061 <h2 class="memtitle"><span class="permalink"><a href="#ga6f8fe346e6912cfab3d36b00043a3627">&#9670;&nbsp;</a></span>pwm_set_wrap()</h2>
2062
2063 <div class="memitem">
2064 <div class="memproto">
2065 <table class="mlabels">
2066   <tr>
2067   <td class="mlabels-left">
2068       <table class="memname">
2069         <tr>
2070           <td class="memname">static void pwm_set_wrap </td>
2071           <td>(</td>
2072           <td class="paramtype">uint&#160;</td>
2073           <td class="paramname"><em>slice_num</em>, </td>
2074         </tr>
2075         <tr>
2076           <td class="paramkey"></td>
2077           <td></td>
2078           <td class="paramtype">uint16_t&#160;</td>
2079           <td class="paramname"><em>wrap</em>&#160;</td>
2080         </tr>
2081         <tr>
2082           <td></td>
2083           <td>)</td>
2084           <td></td><td></td>
2085         </tr>
2086       </table>
2087   </td>
2088   <td class="mlabels-right">
2089 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2090   </tr>
2091 </table>
2092 </div><div class="memdoc">
2093
2094 <p>Set the current PWM counter wrap value. </p>
2095 <p >Set the highest value the counter will reach before returning to 0. Also known as TOP.</p>
2096 <p >The counter wrap value is double-buffered in hardware. This means that, when the PWM is running, a write to the counter wrap value does not take effect until after the next time the PWM slice wraps (or, in phase-correct mode, the next time the slice reaches 0). If the PWM is not running, the write is latched in immediately.</p>
2097 <dl class="params"><dt>Parameters</dt><dd>
2098   <table class="params">
2099     <tr><td class="paramname">slice_num</td><td>PWM slice number </td></tr>
2100     <tr><td class="paramname">wrap</td><td>Value to set wrap to </td></tr>
2101   </table>
2102   </dd>
2103 </dl>
2104
2105 </div>
2106 </div>
2107 </div><!-- contents -->
2108 </div><!-- doc-content -->
2109
2110         <script src="main.js"></script>
2111 </body>
2112 </html>
This page took 0.160922 seconds and 4 git commands to generate.