]> begriffs open source - cmsis/blob - main/Core/group__NVIC__gr.html
Update main branch documentation
[cmsis] / main / Core / group__NVIC__gr.html
1 <!-- HTML header for doxygen 1.9.6-->
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" lang="en-US">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=11"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>CMSIS-Core (Cortex-M): Interrupts and Exceptions (NVIC)</title>
9 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
12 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
13 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="jquery.js"></script>
15 <script type="text/javascript" src="dynsections.js"></script>
16 <script type="text/javascript" src="printComponentTabs.js"></script>
17 <script type="text/javascript" src="footer.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="navtree.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="resize.js"></script>
21 <script type="text/javascript" src="navtreedata.js"></script>
22 <script type="text/javascript" src="navtree.js"></script>
23 <link href="search/search.css" rel="stylesheet" type="text/css"/>
24 <script type="text/javascript" src="search/searchdata.js"></script>
25 <script type="text/javascript" src="search/search.js"></script>
26 <script type="text/javascript">
27 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
28   $(document).ready(function() { init_search(); });
29 /* @license-end */
30 </script>
31 <script type="text/javascript" src="darkmode_toggle.js"></script>
32 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
33 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
34 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
35 <link href="version.css" rel="stylesheet" type="text/css" />
36 <script type="text/javascript" src="../../version.js"></script>
37 </head>
38 <body>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40 <div id="titlearea">
41 <table cellspacing="0" cellpadding="0">
42  <tbody>
43  <tr style="height: 55px;">
44   <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
45   <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
46    <div id="projectname">CMSIS-Core (Cortex-M)
47    &#160;<span id="projectnumber"><script type="text/javascript">
48      <!--
49      writeHeader.call(this);
50      writeVersionDropdown.call(this, "CMSIS-Core (Cortex-M)");
51      //-->
52     </script>
53    </span>
54    </div>
55    <div id="projectbrief">CMSIS-Core support for Cortex-M processor-based devices</div>
56   </td>
57    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
58         <span class="left">
59           <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
60           <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
61                onfocus="searchBox.OnSearchFieldFocus(true)" 
62                onblur="searchBox.OnSearchFieldFocus(false)" 
63                onkeyup="searchBox.OnSearchFieldChange(event)"/>
64           </span><span class="right">
65             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
66           </span>
67         </div>
68 </td>
69   <!--END !PROJECT_NAME-->
70  </tr>
71  </tbody>
72 </table>
73 </div>
74 <!-- end header part -->
75 <div id="CMSISnav" class="tabs1">
76   <ul class="tablist">
77     <script type="text/javascript">
78       writeComponentTabs.call(this);
79     </script>
80   </ul>
81 </div>
82 <script type="text/javascript">
83   writeSubComponentTabs.call(this);
84 </script>
85 <!-- Generated by Doxygen 1.9.6 -->
86 <script type="text/javascript">
87 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
88 var searchBox = new SearchBox("searchBox", "search/",'.html');
89 /* @license-end */
90 </script>
91 </div><!-- top -->
92 <div id="side-nav" class="ui-resizable side-nav-resizable">
93   <div id="nav-tree">
94     <div id="nav-tree-contents">
95       <div id="nav-sync" class="sync"></div>
96     </div>
97   </div>
98   <div id="splitbar" style="-moz-user-select:none;" 
99        class="ui-resizable-handle">
100   </div>
101 </div>
102 <script type="text/javascript">
103 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
104 $(document).ready(function(){initNavTree('group__NVIC__gr.html',''); initResizable(); });
105 /* @license-end */
106 </script>
107 <div id="doc-content">
108 <!-- window showing the filter options -->
109 <div id="MSearchSelectWindow"
110      onmouseover="return searchBox.OnSearchSelectShow()"
111      onmouseout="return searchBox.OnSearchSelectHide()"
112      onkeydown="return searchBox.OnSearchSelectKey(event)">
113 </div>
114
115 <!-- iframe showing the search results (closed by default) -->
116 <div id="MSearchResultsWindow">
117 <div id="MSearchResults">
118 <div class="SRPage">
119 <div id="SRIndex">
120 <div id="SRResults"></div>
121 <div class="SRStatus" id="Loading">Loading...</div>
122 <div class="SRStatus" id="Searching">Searching...</div>
123 <div class="SRStatus" id="NoMatches">No Matches</div>
124 </div>
125 </div>
126 </div>
127 </div>
128
129 <div class="header">
130   <div class="summary">
131 <a href="#define-members">Macros</a> &#124;
132 <a href="#enum-members">Enumerations</a> &#124;
133 <a href="#func-members">Functions</a>  </div>
134   <div class="headertitle"><div class="title">Interrupts and Exceptions (NVIC)</div></div>
135 </div><!--header-->
136 <div class="contents">
137
138 <p>Functions to access the Nested Vector Interrupt Controller (NVIC).  
139 <a href="#details">More...</a></p>
140 <table class="memberdecls">
141 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
142 Macros</h2></td></tr>
143 <tr class="memitem:gadc48b4ed09386aab48fa6b9c96d9034c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gadc48b4ed09386aab48fa6b9c96d9034c">CMSIS_NVIC_VIRTUAL</a></td></tr>
144 <tr class="memdesc:gadc48b4ed09386aab48fa6b9c96d9034c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtualization of the NVIC API.  <br /></td></tr>
145 <tr class="separator:gadc48b4ed09386aab48fa6b9c96d9034c"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:gad01d3aa220b50ef141b06c93888b268d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gad01d3aa220b50ef141b06c93888b268d">CMSIS_VECTAB_VIRTUAL</a></td></tr>
147 <tr class="memdesc:gad01d3aa220b50ef141b06c93888b268d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtualization of interrupt vector table access functions.  <br /></td></tr>
148 <tr class="separator:gad01d3aa220b50ef141b06c93888b268d"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 </table><table class="memberdecls">
150 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
151 Enumerations</h2></td></tr>
152 <tr class="memitem:ga7e1129cd8a196f4284d41db3e82ad5c8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> { <br />
153 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8ade177d9c70c89e084093024b932a4e30">NonMaskableInt_IRQn</a> = -14
154 , <br />
155 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8ab1a222a34a32f0ef5ac65e714efc1f85">HardFault_IRQn</a> = -13
156 , <br />
157 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a33ff1cf7098de65d61b6354fee6cd5aa">MemoryManagement_IRQn</a> = -12
158 , <br />
159 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a8693500eff174f16119e96234fee73af">BusFault_IRQn</a> = -11
160 , <br />
161 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a6895237c9443601ac832efa635dd8bbf">UsageFault_IRQn</a> = -10
162 , <br />
163 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a9cda5594d898247bfa9d16ad966724da">SecureFault_IRQn</a> = -9
164 , <br />
165 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a4ce820b3cc6cf3a796b41aadc0cf1237">SVCall_IRQn</a> = -5
166 , <br />
167 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a8e033fcef7aed98a31c60a7de206722c">DebugMonitor_IRQn</a> = -4
168 , <br />
169 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a03c3cc89984928816d81793fc7bce4a2">PendSV_IRQn</a> = -2
170 , <br />
171 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a6dbff8f8543325f3474cbae2446776e7">SysTick_IRQn</a> = -1
172 , <br />
173 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8aa62e040960b4beb6cba107e4703c12d2">WWDG_STM_IRQn</a> = 0
174 , <br />
175 &#160;&#160;<a class="el" href="group__NVIC__gr.html#gga7e1129cd8a196f4284d41db3e82ad5c8a853e0f318108110e0527f29733d11f86">PVD_STM_IRQn</a> = 1
176 <br />
177  }</td></tr>
178 <tr class="memdesc:ga7e1129cd8a196f4284d41db3e82ad5c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of IRQn numbers.  <a href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">More...</a><br /></td></tr>
179 <tr class="separator:ga7e1129cd8a196f4284d41db3e82ad5c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
180 </table><table class="memberdecls">
181 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
182 Functions</h2></td></tr>
183 <tr class="memitem:gad78f447e891789b4d8f2e5b21eeda354"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354">NVIC_SetPriorityGrouping</a> (uint32_t PriorityGroup)</td></tr>
184 <tr class="memdesc:gad78f447e891789b4d8f2e5b21eeda354"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].  <br /></td></tr>
185 <tr class="separator:gad78f447e891789b4d8f2e5b21eeda354"><td class="memSeparator" colspan="2">&#160;</td></tr>
186 <tr class="memitem:gaa81b19849367d3cdb95ac108c500fa78"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78">NVIC_GetPriorityGrouping</a> (void)</td></tr>
187 <tr class="memdesc:gaa81b19849367d3cdb95ac108c500fa78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].  <br /></td></tr>
188 <tr class="separator:gaa81b19849367d3cdb95ac108c500fa78"><td class="memSeparator" colspan="2">&#160;</td></tr>
189 <tr class="memitem:ga530ad9fda2ed1c8b70e439ecfe80591f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga530ad9fda2ed1c8b70e439ecfe80591f">NVIC_EnableIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
190 <tr class="memdesc:ga530ad9fda2ed1c8b70e439ecfe80591f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable a device specific interrupt.  <br /></td></tr>
191 <tr class="separator:ga530ad9fda2ed1c8b70e439ecfe80591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
192 <tr class="memitem:ga72f102d31af0ee4aa7a6fb7a180840f3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga72f102d31af0ee4aa7a6fb7a180840f3">NVIC_GetEnableIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
193 <tr class="memdesc:ga72f102d31af0ee4aa7a6fb7a180840f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a device specific interrupt enable status.  <br /></td></tr>
194 <tr class="separator:ga72f102d31af0ee4aa7a6fb7a180840f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
195 <tr class="memitem:ga736ba13a76eb37ef6e2c253be8b0331c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga736ba13a76eb37ef6e2c253be8b0331c">NVIC_DisableIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
196 <tr class="memdesc:ga736ba13a76eb37ef6e2c253be8b0331c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable a device specific interrupt.  <br /></td></tr>
197 <tr class="separator:ga736ba13a76eb37ef6e2c253be8b0331c"><td class="memSeparator" colspan="2">&#160;</td></tr>
198 <tr class="memitem:ga95a8329a680b051ecf3ee8f516acc662"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga95a8329a680b051ecf3ee8f516acc662">NVIC_GetPendingIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
199 <tr class="memdesc:ga95a8329a680b051ecf3ee8f516acc662"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the pending device specific interrupt.  <br /></td></tr>
200 <tr class="separator:ga95a8329a680b051ecf3ee8f516acc662"><td class="memSeparator" colspan="2">&#160;</td></tr>
201 <tr class="memitem:ga3b885147ef9965ecede49614de8df9d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga3b885147ef9965ecede49614de8df9d2">NVIC_SetPendingIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
202 <tr class="memdesc:ga3b885147ef9965ecede49614de8df9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a device specific interrupt to pending.  <br /></td></tr>
203 <tr class="separator:ga3b885147ef9965ecede49614de8df9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
204 <tr class="memitem:ga382ad6bedd6eecfdabd1b94dd128a01a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga382ad6bedd6eecfdabd1b94dd128a01a">NVIC_ClearPendingIRQ</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
205 <tr class="memdesc:ga382ad6bedd6eecfdabd1b94dd128a01a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a device specific interrupt from pending.  <br /></td></tr>
206 <tr class="separator:ga382ad6bedd6eecfdabd1b94dd128a01a"><td class="memSeparator" colspan="2">&#160;</td></tr>
207 <tr class="memitem:gadf4252e600661fd762cfc0d1a9f5b892"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gadf4252e600661fd762cfc0d1a9f5b892">NVIC_GetActive</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
208 <tr class="memdesc:gadf4252e600661fd762cfc0d1a9f5b892"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the device specific interrupt active status [not for Cortex-M0, Cortex-M0+, or SC000].  <br /></td></tr>
209 <tr class="separator:gadf4252e600661fd762cfc0d1a9f5b892"><td class="memSeparator" colspan="2">&#160;</td></tr>
210 <tr class="memitem:ga5bb7f43ad92937c039dee3d36c3c2798"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798">NVIC_SetPriority</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn, uint32_t priority)</td></tr>
211 <tr class="memdesc:ga5bb7f43ad92937c039dee3d36c3c2798"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the priority for an interrupt.  <br /></td></tr>
212 <tr class="separator:ga5bb7f43ad92937c039dee3d36c3c2798"><td class="memSeparator" colspan="2">&#160;</td></tr>
213 <tr class="memitem:gab18fb9f6c5f4c70fdd73047f0f7c8395"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395">NVIC_GetPriority</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
214 <tr class="memdesc:gab18fb9f6c5f4c70fdd73047f0f7c8395"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the priority of an interrupt.  <br /></td></tr>
215 <tr class="separator:gab18fb9f6c5f4c70fdd73047f0f7c8395"><td class="memSeparator" colspan="2">&#160;</td></tr>
216 <tr class="memitem:ga0688c59605b119c53c71b2505ab23eb5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga0688c59605b119c53c71b2505ab23eb5">NVIC_EncodePriority</a> (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)</td></tr>
217 <tr class="memdesc:ga0688c59605b119c53c71b2505ab23eb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encodes Priority [not for Cortex-M0, Cortex-M0+, or SC000].  <br /></td></tr>
218 <tr class="separator:ga0688c59605b119c53c71b2505ab23eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
219 <tr class="memitem:gad3cbca1be7a4726afa9448a9acd89377"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gad3cbca1be7a4726afa9448a9acd89377">NVIC_DecodePriority</a> (uint32_t Priority, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)</td></tr>
220 <tr class="memdesc:gad3cbca1be7a4726afa9448a9acd89377"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode the interrupt priority [not for Cortex-M0, Cortex-M0+, or SC000].  <br /></td></tr>
221 <tr class="separator:gad3cbca1be7a4726afa9448a9acd89377"><td class="memSeparator" colspan="2">&#160;</td></tr>
222 <tr class="memitem:gaebee9cad6724a5bac1857f0f1fb6d6af"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gaebee9cad6724a5bac1857f0f1fb6d6af">NVIC_GetVector</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
223 <tr class="memdesc:gaebee9cad6724a5bac1857f0f1fb6d6af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read Interrupt Vector [not for Cortex-M0, SC000].  <br /></td></tr>
224 <tr class="separator:gaebee9cad6724a5bac1857f0f1fb6d6af"><td class="memSeparator" colspan="2">&#160;</td></tr>
225 <tr class="memitem:gab43c1c59d5c081f1bc725237f4b1f916"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gab43c1c59d5c081f1bc725237f4b1f916">NVIC_SetVector</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn, uint32_t vector)</td></tr>
226 <tr class="memdesc:gab43c1c59d5c081f1bc725237f4b1f916"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify Interrupt Vector [not for Cortex-M0, SC000].  <br /></td></tr>
227 <tr class="separator:gab43c1c59d5c081f1bc725237f4b1f916"><td class="memSeparator" colspan="2">&#160;</td></tr>
228 <tr class="memitem:ga1b47d17e90b6a03e7bd1ec6a0d549b46"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga1b47d17e90b6a03e7bd1ec6a0d549b46">NVIC_SystemReset</a> (void)</td></tr>
229 <tr class="memdesc:ga1b47d17e90b6a03e7bd1ec6a0d549b46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the system.  <br /></td></tr>
230 <tr class="separator:ga1b47d17e90b6a03e7bd1ec6a0d549b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
231 <tr class="memitem:ga62b37611e1ccbac47d747c98ef302746"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga62b37611e1ccbac47d747c98ef302746">NVIC_GetTargetState</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
232 <tr class="memdesc:ga62b37611e1ccbac47d747c98ef302746"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Interrupt Target State.  <br /></td></tr>
233 <tr class="separator:ga62b37611e1ccbac47d747c98ef302746"><td class="memSeparator" colspan="2">&#160;</td></tr>
234 <tr class="memitem:gaf46218d01a6a3b70666ad0492a7f950a"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#gaf46218d01a6a3b70666ad0492a7f950a">NVIC_SetTargetState</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
235 <tr class="memdesc:gaf46218d01a6a3b70666ad0492a7f950a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set Interrupt Target State.  <br /></td></tr>
236 <tr class="separator:gaf46218d01a6a3b70666ad0492a7f950a"><td class="memSeparator" colspan="2">&#160;</td></tr>
237 <tr class="memitem:ga44b31316872e91bda1af7e17173de24b"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NVIC__gr.html#ga44b31316872e91bda1af7e17173de24b">NVIC_ClearTargetState</a> (<a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a> IRQn)</td></tr>
238 <tr class="memdesc:ga44b31316872e91bda1af7e17173de24b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear Interrupt Target State.  <br /></td></tr>
239 <tr class="separator:ga44b31316872e91bda1af7e17173de24b"><td class="memSeparator" colspan="2">&#160;</td></tr>
240 </table>
241 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
242 <p>Functions to access the Nested Vector Interrupt Controller (NVIC). </p>
243 <p>This section explains how to use interrupts and exceptions and access functions for the Nested Vector Interrupt Controller (NVIC).</p>
244 <p>Arm provides a template file <b>startup_<em>device</em></b> for each supported compiler. The file must be adapted by the silicon vendor to include interrupt vectors for all device-specific interrupt handlers. Each interrupt handler is defined as a <b><em>weak</em></b> function to an dummy handler. These interrupt handlers can be used directly in application software without being adapted by the programmer.</p>
245 <p>The table below lists the core exception vectors of the various Cortex-M processors.</p>
246 <table class="cmtable" summary="Core Exception Name">
247 <tr>
248 <th>Exception Vector </th><th>Handler Function </th><th>IRQn<br  />
249 Value </th><th title="Cortex-M0/M0+
250 \iline 23 \ilinebr and SC000
251 \iline 25 \ilinebr       ">Armv6-M </th><th title="Cortex-M3/M4/M7
252 \iline 28 \ilinebr and SC300
253 \iline 30 \ilinebr       ">Armv7-M  </th><th title="Cortex-M23">Armv8-M<br  />
254 Baseline </th><th title="Cortex-M33/M35P">Armv8-M<br  />
255 Mainline </th><th>Armv8.1-M<br  />
256 Mainline  </th><th>Description  </th></tr>
257 <tr>
258 <td><b>NonMaskableInt_IRQn</b> </td><td>NMI_Handler </td><td>-14 </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Non Maskable Interrupt  </td></tr>
259 <tr>
260 <td><b>HardFault_IRQn</b> </td><td>HardFault_Handler </td><td>-13 </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Hard Fault Interrupt  </td></tr>
261 <tr>
262 <td><b>MemoryManagement_IRQn</b> </td><td>MemManage_Handler </td><td>-12 </td><td><center>&mdash;</center> </td><td><center>&radic;</center>  </td><td><center>&mdash;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Memory Management Interrupt  </td></tr>
263 <tr>
264 <td><b>BusFault_IRQn</b> </td><td>BusFault_Handler </td><td>-11 </td><td><center>&mdash;</center> </td><td><center>&radic;</center>  </td><td><center>&mdash;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Bus Fault Interrupt  </td></tr>
265 <tr>
266 <td><b>UsageFault_IRQn</b> </td><td>UsageFault_Handler </td><td>-10 </td><td><center>&mdash;</center> </td><td><center>&radic;</center>  </td><td><center>&mdash;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Usage Fault Interrupt   </td></tr>
267 <tr>
268 <td><b>SecureFault_IRQn</b> </td><td>SecureFault_Handler </td><td>-9 </td><td><center>&mdash;</center> </td><td><center>&mdash;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td>Secure Fault Interrupt   </td></tr>
269 <tr>
270 <td><b>SVCall_IRQn</b> </td><td>SVC_Handler </td><td>-5 </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>SVC Interrupt   </td></tr>
271 <tr>
272 <td><b>DebugMonitor_IRQn</b> </td><td>DebugMon_Handler </td><td>-4 </td><td><center>&mdash;</center> </td><td><center>&radic;</center>  </td><td><center>&mdash;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Debug Monitor Interrupt  </td></tr>
273 <tr>
274 <td><b>PendSV_IRQn</b> </td><td>PendSV_Handler </td><td>-2 </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>Pend SV Interrupt  </td></tr>
275 <tr>
276 <td><b>SysTick_IRQn</b> </td><td>SysTick_Handler </td><td>-1 </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td><center>&radic;</center> </td><td><center>&radic;</center> </td><td><center>&radic;</center>  </td><td>System Tick Interrupt  </td></tr>
277 </table>
278 <h1><a class="anchor" id="autotoc_md1"></a>
279 Vector Table</h1>
280 <p>The Vector Table defines the entry addresses of the processor exceptions and the device specific interrupts. It is typically located at the beginning of the program memory, however <a class="el" href="using_pg.html#using_vtor">Using Interrupt Vector Remap</a> it can be relocated to RAM. The symbol <b>__Vectors</b> is the address of the vector table in the startup code and the register <b>SCB-&gt;VTOR</b> holds the start address of the vector table.</p>
281 <p>An Armv8-M implementation with TrustZone provides two vector tables:</p><ul>
282 <li>vector table for Secure handlers</li>
283 <li>vector table for Non-Secure handlers</li>
284 </ul>
285 <p>Refer to <a class="el" href="using_TrustZone_pg.html#Model_TrustZone">Programmers Model with TrustZone</a> for more information. </p>
286 <h2><a class="anchor" id="autotoc_md2"></a>
287 Processor Exceptions</h2>
288 <p>At the beginning of the vector table, the initial stack value and the exception vectors of the processor are defined. The vector table below shows the exception vectors of a Armv8-M Mainline processor. Other processor variants may have fewer vectors.</p>
289 <div class="fragment"><div class="line">__Vectors       DCD     __initial_sp              ; Top of Stack initialization</div>
290 <div class="line">                DCD     Reset_Handler             ; Reset Handler</div>
291 <div class="line">                DCD     NMI_Handler               ; NMI Handler</div>
292 <div class="line">                DCD     HardFault_Handler         ; Hard Fault Handler</div>
293 <div class="line">                DCD     MemManage_Handler         ; MPU Fault Handler</div>
294 <div class="line">                DCD     BusFault_Handler          ; Bus Fault Handler</div>
295 <div class="line">                DCD     UsageFault_Handler        ; Usage Fault Handler</div>
296 <div class="line">                DCD     SecureFault_Handler       ; Secure Fault Handler</div>
297 <div class="line">                DCD     0                         ; Reserved</div>
298 <div class="line">                DCD     0                         ; Reserved</div>
299 <div class="line">                DCD     0                         ; Reserved</div>
300 <div class="line">                DCD     SVC_Handler               ; SVC Handler</div>
301 <div class="line">                DCD     DebugMon_Handler          ; Debug Monitor Handler</div>
302 <div class="line">                DCD     0                         ; Reserved</div>
303 <div class="line">                DCD     PendSV_Handler            ; PendSV Handler</div>
304 <div class="line">                DCD     SysTick_Handler           ; SysTick Handler</div>
305 </div><!-- fragment --><h2><a class="anchor" id="autotoc_md3"></a>
306 Device Specific Vectors</h2>
307 <p>Following the processor exception vectors, the vector table contains also the device specific interrupt vectors.</p>
308 <div class="fragment"><div class="line">; device specific interrupts</div>
309 <div class="line">                DCD     WWDG_IRQHandler           ; Window Watchdog</div>
310 <div class="line">                DCD     PVD_IRQHandler            ; PVD through EXTI Line detect</div>
311 <div class="line">                DCD     TAMPER_IRQHandler         ; Tamper</div>
312 </div><!-- fragment --><p>All device specific interrupts should have a default interrupt handler function that can be overwritten in user code. Below is an example for this default handler function.</p>
313 <div class="fragment"><div class="line">Default_Handler PROC</div>
314 <div class="line">                EXPORT WWDG_IRQHandler   [WEAK]</div>
315 <div class="line">                EXPORT PVD_IRQHandler    [WEAK]</div>
316 <div class="line">                EXPORT TAMPER_IRQHandler [WEAK]</div>
317 <div class="line">                :</div>
318 <div class="line">                :</div>
319 <div class="line">                WWDG_IRQHandler</div>
320 <div class="line">                PVD_IRQHandler</div>
321 <div class="line">                TAMPER_IRQHandler</div>
322 <div class="line">                :</div>
323 <div class="line">                :</div>
324 <div class="line">                B .</div>
325 <div class="line">                ENDP</div>
326 </div><!-- fragment --><p>The user application may simply define an interrupt handler function by using the handler name as shown below.</p>
327 <div class="fragment"><div class="line"><span class="keywordtype">void</span> WWDG_IRQHandler(<span class="keywordtype">void</span>)</div>
328 <div class="line">{</div>
329 <div class="line">  ...</div>
330 <div class="line">}</div>
331 </div><!-- fragment --><h1><a class="anchor" id="autotoc_md4"></a>
332 NVIC Function Usage</h1>
333 <p>The code below shows the usage of various CMSIS NVIC functions with an LPC1700 device.</p>
334 <h2><a class="anchor" id="autotoc_md5"></a>
335 Code Example 1</h2>
336 <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;LPC17xx.h&quot;</span></div>
337 <div class="line"> </div>
338 <div class="line">uint32_t priorityGroup;                                     <span class="comment">/* Variables to store priority group and priority*/</span></div>
339 <div class="line">uint32_t priority;</div>
340 <div class="line">uint32_t preemptPriority;</div>
341 <div class="line">uint32_t subPriority;</div>
342 <div class="line"> </div>
343 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>)  {</div>
344 <div class="line">  <a class="code hl_function" href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354">NVIC_SetPriorityGrouping</a>(5);                              <span class="comment">/* Set priority group to 5:</span></div>
345 <div class="line"><span class="comment">                                                               Bit[7..6] preempt priority Bits,</span></div>
346 <div class="line"><span class="comment">                                                               Bit[5..3] subpriority Bits</span></div>
347 <div class="line"><span class="comment">                                                               (valid for five priority bits)*/</span></div>
348 <div class="line"> </div>
349 <div class="line">  priorityGroup =  <a class="code hl_function" href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78">NVIC_GetPriorityGrouping</a>();              <span class="comment">/* Get used priority grouping*/</span></div>
350 <div class="line"> </div>
351 <div class="line">  priority = <a class="code hl_function" href="group__NVIC__gr.html#ga0688c59605b119c53c71b2505ab23eb5">NVIC_EncodePriority</a>(priorityGroup, 1, 6);      <span class="comment">/* Encode priority with 6 for subpriority and 1 for preempt priority</span></div>
352 <div class="line"><span class="comment">                                                               Note: priority depends on the used priority grouping*/</span></div>
353 <div class="line">  <a class="code hl_function" href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798">NVIC_SetPriority</a>(UART0_IRQn, priority);                   <span class="comment">/* Set new priority*/</span></div>
354 <div class="line"> </div>
355 <div class="line">  priority =  <a class="code hl_function" href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395">NVIC_GetPriority</a>(UART0_IRQn);                 <span class="comment">/* Retrieve priority again*/</span></div>
356 <div class="line">  <a class="code hl_function" href="group__NVIC__gr.html#gad3cbca1be7a4726afa9448a9acd89377">NVIC_DecodePriority</a>(priority, priorityGroup, &amp;preemptPriority, &amp;subPriority);</div>
357 <div class="line"> </div>
358 <div class="line">  <span class="keywordflow">while</span>(1);</div>
359 <div class="line">}</div>
360 <div class="ttc" id="agroup__NVIC__gr_html_ga0688c59605b119c53c71b2505ab23eb5"><div class="ttname"><a href="group__NVIC__gr.html#ga0688c59605b119c53c71b2505ab23eb5">NVIC_EncodePriority</a></div><div class="ttdeci">uint32_t NVIC_EncodePriority(uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)</div><div class="ttdoc">Encodes Priority [not for Cortex-M0, Cortex-M0+, or SC000].</div></div>
361 <div class="ttc" id="agroup__NVIC__gr_html_ga5bb7f43ad92937c039dee3d36c3c2798"><div class="ttname"><a href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798">NVIC_SetPriority</a></div><div class="ttdeci">void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)</div><div class="ttdoc">Set the priority for an interrupt.</div></div>
362 <div class="ttc" id="agroup__NVIC__gr_html_gaa81b19849367d3cdb95ac108c500fa78"><div class="ttname"><a href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78">NVIC_GetPriorityGrouping</a></div><div class="ttdeci">uint32_t NVIC_GetPriorityGrouping(void)</div><div class="ttdoc">Read the priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].</div></div>
363 <div class="ttc" id="agroup__NVIC__gr_html_gab18fb9f6c5f4c70fdd73047f0f7c8395"><div class="ttname"><a href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395">NVIC_GetPriority</a></div><div class="ttdeci">uint32_t NVIC_GetPriority(IRQn_Type IRQn)</div><div class="ttdoc">Get the priority of an interrupt.</div></div>
364 <div class="ttc" id="agroup__NVIC__gr_html_gad3cbca1be7a4726afa9448a9acd89377"><div class="ttname"><a href="group__NVIC__gr.html#gad3cbca1be7a4726afa9448a9acd89377">NVIC_DecodePriority</a></div><div class="ttdeci">void NVIC_DecodePriority(uint32_t Priority, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority)</div><div class="ttdoc">Decode the interrupt priority [not for Cortex-M0, Cortex-M0+, or SC000].</div></div>
365 <div class="ttc" id="agroup__NVIC__gr_html_gad78f447e891789b4d8f2e5b21eeda354"><div class="ttname"><a href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354">NVIC_SetPriorityGrouping</a></div><div class="ttdeci">void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)</div><div class="ttdoc">Set priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].</div></div>
366 </div><!-- fragment --><h2><a class="anchor" id="autotoc_md6"></a>
367 Code Example 2</h2>
368 <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;LPC17xx.h&quot;</span></div>
369 <div class="line"> </div>
370 <div class="line">uint32_t active;                                            <span class="comment">/* Variable to store interrupt active state*/</span></div>
371 <div class="line"> </div>
372 <div class="line"><span class="keywordtype">void</span> TIMER0_IRQHandler(<span class="keywordtype">void</span>)  {                             <span class="comment">/* Timer 0 interrupt handler */</span></div>
373 <div class="line"> </div>
374 <div class="line">  <span class="keywordflow">if</span> (LPC_TIM0-&gt;IR &amp; (1 &lt;&lt; 0))  {                           <span class="comment">/* Check if interrupt for match channel 0 occurred*/</span></div>
375 <div class="line">    LPC_TIM0-&gt;IR |= (1 &lt;&lt; 0);                               <span class="comment">/* Acknowledge interrupt for match channel 0 occurred*/</span></div>
376 <div class="line">  }</div>
377 <div class="line">  active = <a class="code hl_function" href="group__NVIC__gr.html#gadf4252e600661fd762cfc0d1a9f5b892">NVIC_GetActive</a>(TIMER0_IRQn);                     <span class="comment">/* Get interrupt active state of timer 0*/</span></div>
378 <div class="line">}</div>
379 <div class="line"> </div>
380 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
381 <div class="line">                                                            <span class="comment">/* Set match channel register MR0 to 1 millisecond*/</span></div>
382 <div class="line">  LPC_TIM0-&gt;MR0 = (((<a class="code hl_variable" href="group__system__init__gr.html#gaa3cd3e43291e81e795d642b79b6088e6">SystemCoreClock</a> / 1000) / 4) - 1);     <span class="comment">/* 1 ms?*/</span></div>
383 <div class="line"> </div>
384 <div class="line">  LPC_TIM0-&gt;MCR = (3 &lt;&lt; 0);                                 <span class="comment">/* Enable interrupt and reset for match channel MR0*/</span></div>
385 <div class="line">  <a class="code hl_function" href="group__NVIC__gr.html#ga530ad9fda2ed1c8b70e439ecfe80591f">NVIC_EnableIRQ</a>(TIMER0_IRQn);                              <span class="comment">/* Enable NVIC interrupt for timer 0*/</span></div>
386 <div class="line">  LPC_TIM0-&gt;TCR = (1 &lt;&lt; 0);                                 <span class="comment">/* Enable timer 0*/</span></div>
387 <div class="line"> </div>
388 <div class="line">  <span class="keywordflow">while</span>(1);</div>
389 <div class="line">}</div>
390 <div class="ttc" id="agroup__NVIC__gr_html_ga530ad9fda2ed1c8b70e439ecfe80591f"><div class="ttname"><a href="group__NVIC__gr.html#ga530ad9fda2ed1c8b70e439ecfe80591f">NVIC_EnableIRQ</a></div><div class="ttdeci">void NVIC_EnableIRQ(IRQn_Type IRQn)</div><div class="ttdoc">Enable a device specific interrupt.</div></div>
391 <div class="ttc" id="agroup__NVIC__gr_html_gadf4252e600661fd762cfc0d1a9f5b892"><div class="ttname"><a href="group__NVIC__gr.html#gadf4252e600661fd762cfc0d1a9f5b892">NVIC_GetActive</a></div><div class="ttdeci">uint32_t NVIC_GetActive(IRQn_Type IRQn)</div><div class="ttdoc">Get the device specific interrupt active status [not for Cortex-M0, Cortex-M0+, or SC000].</div></div>
392 <div class="ttc" id="agroup__system__init__gr_html_gaa3cd3e43291e81e795d642b79b6088e6"><div class="ttname"><a href="group__system__init__gr.html#gaa3cd3e43291e81e795d642b79b6088e6">SystemCoreClock</a></div><div class="ttdeci">uint32_t SystemCoreClock</div><div class="ttdoc">Variable to hold the system core clock value.</div><div class="ttdef"><b>Definition:</b> Ref_SystemAndClock.txt:68</div></div>
393 </div><!-- fragment --><h1><a class="anchor" id="autotoc_md7"></a>
394 NVIC API Virtualization</h1>
395 <p>The CMSIS-Core has provisions for overriding NVIC APIs as required for implementing secure systems that control access to peripherals and related interrupts. These overrides allow an operating system to control the access privileges of application code to critical interrupts.</p>
396 <p>The NVIC function virtualization is enabled with the following #define symbols:</p><ul>
397 <li><a class="el" href="group__NVIC__gr.html#gadc48b4ed09386aab48fa6b9c96d9034c">CMSIS_NVIC_VIRTUAL</a> enables overriding the CMSIS-Core (Cortex-M) NVIC functions.</li>
398 <li><a class="el" href="group__NVIC__gr.html#gad01d3aa220b50ef141b06c93888b268d">CMSIS_VECTAB_VIRTUAL</a> enables overriding the CMSIS-Core (Cortex-M) interrupt vector table access functions. </li>
399 </ul>
400 <h2 class="groupheader">Macro Definition Documentation</h2>
401 <a id="gadc48b4ed09386aab48fa6b9c96d9034c" name="gadc48b4ed09386aab48fa6b9c96d9034c"></a>
402 <h2 class="memtitle"><span class="permalink"><a href="#gadc48b4ed09386aab48fa6b9c96d9034c">&#9670;&#160;</a></span>CMSIS_NVIC_VIRTUAL</h2>
403
404 <div class="memitem">
405 <div class="memproto">
406       <table class="memname">
407         <tr>
408           <td class="memname">#define CMSIS_NVIC_VIRTUAL</td>
409         </tr>
410       </table>
411 </div><div class="memdoc">
412
413 <p>Virtualization of the NVIC API. </p>
414 <p>When <a class="el" href="group__NVIC__gr.html#gadc48b4ed09386aab48fa6b9c96d9034c">CMSIS_NVIC_VIRTUAL</a> is defined, the NVIC access functions in the table below must be implemented for virtualizing NVIC access. These functions should be implemented in a separate source module. The original CMSIS-Core __NVIC functions are always available independent of <a class="el" href="group__NVIC__gr.html#gadc48b4ed09386aab48fa6b9c96d9034c">CMSIS_NVIC_VIRTUAL</a>.</p>
415 <table class="markdownTable">
416 <tr class="markdownTableHead">
417 <th class="markdownTableHeadNone">NVIC Access Functions   </th><th class="markdownTableHeadNone">CMSIS-Core Functions    </th></tr>
418 <tr class="markdownTableRowOdd">
419 <td class="markdownTableBodyNone">NVIC_EnableIRQ   </td><td class="markdownTableBodyNone">__NVIC_EnableIRQ    </td></tr>
420 <tr class="markdownTableRowEven">
421 <td class="markdownTableBodyNone">NVIC_GetEnableIRQ   </td><td class="markdownTableBodyNone">__NVIC_GetEnableIRQ    </td></tr>
422 <tr class="markdownTableRowOdd">
423 <td class="markdownTableBodyNone">NVIC_DisableIRQ   </td><td class="markdownTableBodyNone">__NVIC_DisableIRQ    </td></tr>
424 <tr class="markdownTableRowEven">
425 <td class="markdownTableBodyNone">NVIC_GetPendingIRQ   </td><td class="markdownTableBodyNone">__NVIC_GetPendingIRQ    </td></tr>
426 <tr class="markdownTableRowOdd">
427 <td class="markdownTableBodyNone">NVIC_SetPendingIRQ   </td><td class="markdownTableBodyNone">__NVIC_SetPendingIRQ    </td></tr>
428 <tr class="markdownTableRowEven">
429 <td class="markdownTableBodyNone">NVIC_ClearPendingIRQ   </td><td class="markdownTableBodyNone">__NVIC_ClearPendingIRQ    </td></tr>
430 <tr class="markdownTableRowOdd">
431 <td class="markdownTableBodyNone">NVIC_GetActive   </td><td class="markdownTableBodyNone">__NVIC_GetActive    </td></tr>
432 <tr class="markdownTableRowEven">
433 <td class="markdownTableBodyNone">NVIC_SetPriority   </td><td class="markdownTableBodyNone">__NVIC_SetPriority    </td></tr>
434 <tr class="markdownTableRowOdd">
435 <td class="markdownTableBodyNone">NVIC_GetPriority   </td><td class="markdownTableBodyNone">__NVIC_GetPriority    </td></tr>
436 <tr class="markdownTableRowEven">
437 <td class="markdownTableBodyNone">NVIC_SetPriorityGrouping   </td><td class="markdownTableBodyNone">__NVIC_SetPriorityGrouping    </td></tr>
438 <tr class="markdownTableRowOdd">
439 <td class="markdownTableBodyNone">NVIC_GetPriorityGrouping   </td><td class="markdownTableBodyNone">__NVIC_GetPriorityGrouping   </td></tr>
440 </table>
441
442 </div>
443 </div>
444 <a id="gad01d3aa220b50ef141b06c93888b268d" name="gad01d3aa220b50ef141b06c93888b268d"></a>
445 <h2 class="memtitle"><span class="permalink"><a href="#gad01d3aa220b50ef141b06c93888b268d">&#9670;&#160;</a></span>CMSIS_VECTAB_VIRTUAL</h2>
446
447 <div class="memitem">
448 <div class="memproto">
449       <table class="memname">
450         <tr>
451           <td class="memname">#define CMSIS_VECTAB_VIRTUAL</td>
452         </tr>
453       </table>
454 </div><div class="memdoc">
455
456 <p>Virtualization of interrupt vector table access functions. </p>
457 <p>When <a class="el" href="group__NVIC__gr.html#gadc48b4ed09386aab48fa6b9c96d9034c">CMSIS_NVIC_VIRTUAL</a> is defined, the functions in the table below must be replaced to virtualize the API access functions to the interrupt vector table. The NVIC vector table API should be implemented in a separate source module. This allows, for example, alternate implementations to relocate the vector table from flash to RAM on the first vector table update.</p>
458 <p>The original CMSIS-Core functions are always available, but prefixed with __NVIC.</p>
459 <table class="markdownTable">
460 <tr class="markdownTableHead">
461 <th class="markdownTableHeadNone">Interrupt Vector Table Access   </th><th class="markdownTableHeadNone">CMSIS-Core Functions    </th></tr>
462 <tr class="markdownTableRowOdd">
463 <td class="markdownTableBodyNone">NVIC_GetVector   </td><td class="markdownTableBodyNone">__NVIC_GetVector    </td></tr>
464 <tr class="markdownTableRowEven">
465 <td class="markdownTableBodyNone">NVIC_SetVector   </td><td class="markdownTableBodyNone">__NVIC_SetVector   </td></tr>
466 </table>
467
468 </div>
469 </div>
470 <h2 class="groupheader">Enumeration Type Documentation</h2>
471 <a id="ga7e1129cd8a196f4284d41db3e82ad5c8" name="ga7e1129cd8a196f4284d41db3e82ad5c8"></a>
472 <h2 class="memtitle"><span class="permalink"><a href="#ga7e1129cd8a196f4284d41db3e82ad5c8">&#9670;&#160;</a></span>IRQn_Type</h2>
473
474 <div class="memitem">
475 <div class="memproto">
476       <table class="memname">
477         <tr>
478           <td class="memname">enum <a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a></td>
479         </tr>
480       </table>
481 </div><div class="memdoc">
482
483 <p>Definition of IRQn numbers. </p>
484 <p>The core exception enumeration names for IRQn values are defined in the <a class="el" href="device_h_pg.html">Device Header File &lt;Device.h&gt;</a>.</p>
485 <ul>
486 <li>Negative IRQn values represent processor core exceptions (internal interrupts).</li>
487 <li>Positive IRQn values represent device-specific exceptions (external interrupts).</li>
488 <li>The first device-specific interrupt has the IRQn value 0.</li>
489 </ul>
490 <p>The table below describes the core exception names and their availability in various Cortex-M cores. </p>
491 <table class="fieldtable">
492 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8ade177d9c70c89e084093024b932a4e30" name="gga7e1129cd8a196f4284d41db3e82ad5c8ade177d9c70c89e084093024b932a4e30"></a>NonMaskableInt_IRQn&#160;</td><td class="fielddoc"><p>Exception 2: Non Maskable Interrupt. </p>
493 </td></tr>
494 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8ab1a222a34a32f0ef5ac65e714efc1f85" name="gga7e1129cd8a196f4284d41db3e82ad5c8ab1a222a34a32f0ef5ac65e714efc1f85"></a>HardFault_IRQn&#160;</td><td class="fielddoc"><p>Exception 3: Hard Fault Interrupt. </p>
495 </td></tr>
496 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a33ff1cf7098de65d61b6354fee6cd5aa" name="gga7e1129cd8a196f4284d41db3e82ad5c8a33ff1cf7098de65d61b6354fee6cd5aa"></a>MemoryManagement_IRQn&#160;</td><td class="fielddoc"><p>Exception 4: Memory Management Interrupt [not on Cortex-M0 variants]. </p>
497 </td></tr>
498 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a8693500eff174f16119e96234fee73af" name="gga7e1129cd8a196f4284d41db3e82ad5c8a8693500eff174f16119e96234fee73af"></a>BusFault_IRQn&#160;</td><td class="fielddoc"><p>Exception 5: Bus Fault Interrupt [not on Cortex-M0 variants]. </p>
499 </td></tr>
500 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a6895237c9443601ac832efa635dd8bbf" name="gga7e1129cd8a196f4284d41db3e82ad5c8a6895237c9443601ac832efa635dd8bbf"></a>UsageFault_IRQn&#160;</td><td class="fielddoc"><p>Exception 6: Usage Fault Interrupt [not on Cortex-M0 variants]. </p>
501 </td></tr>
502 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a9cda5594d898247bfa9d16ad966724da" name="gga7e1129cd8a196f4284d41db3e82ad5c8a9cda5594d898247bfa9d16ad966724da"></a>SecureFault_IRQn&#160;</td><td class="fielddoc"><p>Exception 7: Secure Fault Interrupt [only on Armv8-M]. </p>
503 </td></tr>
504 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a4ce820b3cc6cf3a796b41aadc0cf1237" name="gga7e1129cd8a196f4284d41db3e82ad5c8a4ce820b3cc6cf3a796b41aadc0cf1237"></a>SVCall_IRQn&#160;</td><td class="fielddoc"><p>Exception 11: SVC Interrupt. </p>
505 </td></tr>
506 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a8e033fcef7aed98a31c60a7de206722c" name="gga7e1129cd8a196f4284d41db3e82ad5c8a8e033fcef7aed98a31c60a7de206722c"></a>DebugMonitor_IRQn&#160;</td><td class="fielddoc"><p>Exception 12: Debug Monitor Interrupt [not on Cortex-M0 variants]. </p>
507 </td></tr>
508 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a03c3cc89984928816d81793fc7bce4a2" name="gga7e1129cd8a196f4284d41db3e82ad5c8a03c3cc89984928816d81793fc7bce4a2"></a>PendSV_IRQn&#160;</td><td class="fielddoc"><p>Exception 14: Pend SV Interrupt [not on Cortex-M0 variants]. </p>
509 </td></tr>
510 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a6dbff8f8543325f3474cbae2446776e7" name="gga7e1129cd8a196f4284d41db3e82ad5c8a6dbff8f8543325f3474cbae2446776e7"></a>SysTick_IRQn&#160;</td><td class="fielddoc"><p>Exception 15: System Tick Interrupt. </p>
511 </td></tr>
512 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8aa62e040960b4beb6cba107e4703c12d2" name="gga7e1129cd8a196f4284d41db3e82ad5c8aa62e040960b4beb6cba107e4703c12d2"></a>WWDG_STM_IRQn&#160;</td><td class="fielddoc"><p>Device Interrupt 0: Window WatchDog Interrupt. </p>
513 </td></tr>
514 <tr><td class="fieldname"><a id="gga7e1129cd8a196f4284d41db3e82ad5c8a853e0f318108110e0527f29733d11f86" name="gga7e1129cd8a196f4284d41db3e82ad5c8a853e0f318108110e0527f29733d11f86"></a>PVD_STM_IRQn&#160;</td><td class="fielddoc"><p>Device Interrupt 1: PVD through EXTI Line detection Interrupt. </p>
515 </td></tr>
516 </table>
517
518 </div>
519 </div>
520 <h2 class="groupheader">Function Documentation</h2>
521 <a id="ga382ad6bedd6eecfdabd1b94dd128a01a" name="ga382ad6bedd6eecfdabd1b94dd128a01a"></a>
522 <h2 class="memtitle"><span class="permalink"><a href="#ga382ad6bedd6eecfdabd1b94dd128a01a">&#9670;&#160;</a></span>NVIC_ClearPendingIRQ()</h2>
523
524 <div class="memitem">
525 <div class="memproto">
526       <table class="memname">
527         <tr>
528           <td class="memname">void NVIC_ClearPendingIRQ </td>
529           <td>(</td>
530           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
531           <td class="paramname"><em>IRQn</em></td><td>)</td>
532           <td></td>
533         </tr>
534       </table>
535 </div><div class="memdoc">
536
537 <p>Clear a device specific interrupt from pending. </p>
538 <p>This function removes the pending state of the specified device specific interrupt <em>IRQn</em>. <em>IRQn</em> cannot be a negative number.</p>
539 <dl class="params"><dt>Parameters</dt><dd>
540   <table class="params">
541     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
542   </table>
543   </dd>
544 </dl>
545 <dl class="section remark"><dt>Remarks</dt><dd><ul>
546 <li>IRQn must not be negative.</li>
547 <li>The registers that control the status of interrupts are called SETPEND and CLRPEND.</li>
548 <li>An interrupt can have the status pending though it is not active.</li>
549 </ul>
550 </dd></dl>
551 <dl class="section see"><dt>See also</dt><dd><ul>
552 <li><a class="el" href="group__NVIC__gr.html#ga3b885147ef9965ecede49614de8df9d2">NVIC_SetPendingIRQ</a>; <a class="el" href="group__NVIC__gr.html#ga95a8329a680b051ecf3ee8f516acc662" title="Get the pending device specific interrupt.">NVIC_GetPendingIRQ</a></li>
553 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
554 </ul>
555 </dd></dl>
556
557 </div>
558 </div>
559 <a id="ga44b31316872e91bda1af7e17173de24b" name="ga44b31316872e91bda1af7e17173de24b"></a>
560 <h2 class="memtitle"><span class="permalink"><a href="#ga44b31316872e91bda1af7e17173de24b">&#9670;&#160;</a></span>NVIC_ClearTargetState()</h2>
561
562 <div class="memitem">
563 <div class="memproto">
564       <table class="memname">
565         <tr>
566           <td class="memname">uint32_t NVIC_ClearTargetState </td>
567           <td>(</td>
568           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
569           <td class="paramname"><em>IRQn</em></td><td>)</td>
570           <td></td>
571         </tr>
572       </table>
573 </div><div class="memdoc">
574
575 <p>Clear Interrupt Target State. </p>
576 <p>Clears the interrupt target field in the non-secure NVIC when in secure state. </p><dl class="params"><dt>Parameters</dt><dd>
577   <table class="params">
578     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>External interrupt number. Value cannot be negative. </td></tr>
579   </table>
580   </dd>
581 </dl>
582 <dl class="section return"><dt>Returns</dt><dd><ul>
583 <li>0 if interrupt is assigned to Secure</li>
584 <li>1 if interrupt is assigned to Non Secure </li>
585 </ul>
586 </dd></dl>
587 <dl class="section remark"><dt>Remarks</dt><dd><ul>
588 <li>Only available for Armv8-M in secure state.</li>
589 </ul>
590 </dd></dl>
591 <dl class="section see"><dt>See also</dt><dd><ul>
592 <li><a class="el" href="group__NVIC__gr.html#ga62b37611e1ccbac47d747c98ef302746">NVIC_GetTargetState</a>; <a class="el" href="group__NVIC__gr.html#gaf46218d01a6a3b70666ad0492a7f950a" title="Set Interrupt Target State.">NVIC_SetTargetState</a>; </li>
593 </ul>
594 </dd></dl>
595
596 </div>
597 </div>
598 <a id="gad3cbca1be7a4726afa9448a9acd89377" name="gad3cbca1be7a4726afa9448a9acd89377"></a>
599 <h2 class="memtitle"><span class="permalink"><a href="#gad3cbca1be7a4726afa9448a9acd89377">&#9670;&#160;</a></span>NVIC_DecodePriority()</h2>
600
601 <div class="memitem">
602 <div class="memproto">
603       <table class="memname">
604         <tr>
605           <td class="memname">void NVIC_DecodePriority </td>
606           <td>(</td>
607           <td class="paramtype">uint32_t&#160;</td>
608           <td class="paramname"><em>Priority</em>, </td>
609         </tr>
610         <tr>
611           <td class="paramkey"></td>
612           <td></td>
613           <td class="paramtype">uint32_t&#160;</td>
614           <td class="paramname"><em>PriorityGroup</em>, </td>
615         </tr>
616         <tr>
617           <td class="paramkey"></td>
618           <td></td>
619           <td class="paramtype">uint32_t *&#160;</td>
620           <td class="paramname"><em>pPreemptPriority</em>, </td>
621         </tr>
622         <tr>
623           <td class="paramkey"></td>
624           <td></td>
625           <td class="paramtype">uint32_t *&#160;</td>
626           <td class="paramname"><em>pSubPriority</em>&#160;</td>
627         </tr>
628         <tr>
629           <td></td>
630           <td>)</td>
631           <td></td><td></td>
632         </tr>
633       </table>
634 </div><div class="memdoc">
635
636 <p>Decode the interrupt priority [not for Cortex-M0, Cortex-M0+, or SC000]. </p>
637 <p>This function decodes an interrupt priority value with the priority group <em>PriorityGroup</em> to preemptive priority value <em>pPreemptPriority</em> and subpriority value <em>pSubPriority</em>. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.</p>
638 <dl class="params"><dt>Parameters</dt><dd>
639   <table class="params">
640     <tr><td class="paramdir">[in]</td><td class="paramname">Priority</td><td>Priority </td></tr>
641     <tr><td class="paramdir">[in]</td><td class="paramname">PriorityGroup</td><td>Priority group </td></tr>
642     <tr><td class="paramdir">[out]</td><td class="paramname">*pPreemptPriority</td><td>Preemptive priority value (starting from 0) </td></tr>
643     <tr><td class="paramdir">[out]</td><td class="paramname">*pSubPriority</td><td>Subpriority value (starting from 0)</td></tr>
644   </table>
645   </dd>
646 </dl>
647 <dl class="section remark"><dt>Remarks</dt><dd><ul>
648 <li>not for Cortex-M0, Cortex-M0+, or SC000.</li>
649 </ul>
650 </dd></dl>
651 <dl class="section see"><dt>See also</dt><dd><ul>
652 <li><a class="el" href="group__NVIC__gr.html#ga0688c59605b119c53c71b2505ab23eb5">NVIC_EncodePriority</a>; <a class="el" href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395" title="Get the priority of an interrupt.">NVIC_GetPriority</a>; <a class="el" href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78" title="Read the priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].">NVIC_GetPriorityGrouping</a>;</li>
653 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
654 </ul>
655 </dd></dl>
656
657 </div>
658 </div>
659 <a id="ga736ba13a76eb37ef6e2c253be8b0331c" name="ga736ba13a76eb37ef6e2c253be8b0331c"></a>
660 <h2 class="memtitle"><span class="permalink"><a href="#ga736ba13a76eb37ef6e2c253be8b0331c">&#9670;&#160;</a></span>NVIC_DisableIRQ()</h2>
661
662 <div class="memitem">
663 <div class="memproto">
664       <table class="memname">
665         <tr>
666           <td class="memname">void NVIC_DisableIRQ </td>
667           <td>(</td>
668           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
669           <td class="paramname"><em>IRQn</em></td><td>)</td>
670           <td></td>
671         </tr>
672       </table>
673 </div><div class="memdoc">
674
675 <p>Disable a device specific interrupt. </p>
676 <p>This function disables the specified device specific interrupt <em>IRQn</em>. <em>IRQn</em> cannot be a negative value.</p>
677 <dl class="params"><dt>Parameters</dt><dd>
678   <table class="params">
679     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Number of the external interrupt to disable</td></tr>
680   </table>
681   </dd>
682 </dl>
683 <dl class="section remark"><dt>Remarks</dt><dd><ul>
684 <li>IRQn must not be negative.</li>
685 <li>The registers that control the enabling and disabling of interrupts are called SETENA and CLRENA.</li>
686 </ul>
687 </dd></dl>
688 <dl class="section see"><dt>See also</dt><dd><ul>
689 <li><a class="el" href="group__NVIC__gr.html#ga530ad9fda2ed1c8b70e439ecfe80591f">NVIC_EnableIRQ</a></li>
690 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
691 </ul>
692 </dd></dl>
693
694 </div>
695 </div>
696 <a id="ga530ad9fda2ed1c8b70e439ecfe80591f" name="ga530ad9fda2ed1c8b70e439ecfe80591f"></a>
697 <h2 class="memtitle"><span class="permalink"><a href="#ga530ad9fda2ed1c8b70e439ecfe80591f">&#9670;&#160;</a></span>NVIC_EnableIRQ()</h2>
698
699 <div class="memitem">
700 <div class="memproto">
701       <table class="memname">
702         <tr>
703           <td class="memname">void NVIC_EnableIRQ </td>
704           <td>(</td>
705           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
706           <td class="paramname"><em>IRQn</em></td><td>)</td>
707           <td></td>
708         </tr>
709       </table>
710 </div><div class="memdoc">
711
712 <p>Enable a device specific interrupt. </p>
713 <p>This function enables the specified device specific interrupt <em>IRQn</em>. <em>IRQn</em> cannot be a negative value.</p>
714 <dl class="params"><dt>Parameters</dt><dd>
715   <table class="params">
716     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
717   </table>
718   </dd>
719 </dl>
720 <dl class="section remark"><dt>Remarks</dt><dd><ul>
721 <li>IRQn must not be negative.</li>
722 <li>The registers that control the enabling and disabling of interrupts are called SETENA and CLRENA.</li>
723 <li>The number of supported interrupts depends on the implementation of the chip designer and can be read form the Interrupt Controller Type Register (ICTR) in granularities of 32: <br  />
724  ICTR[4:0]<ul>
725 <li>0 - 32 interrupts supported</li>
726 <li>1 - 64 interrupts supported</li>
727 <li>...</li>
728 </ul>
729 </li>
730 </ul>
731 </dd></dl>
732 <dl class="section see"><dt>See also</dt><dd><ul>
733 <li><a class="el" href="group__NVIC__gr.html#ga736ba13a76eb37ef6e2c253be8b0331c">NVIC_DisableIRQ</a>; <a class="el" href="structSCnSCB__Type.html" title="Structure type to access the System Control and ID Register not in the SCB.">SCnSCB_Type</a>;</li>
734 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
735 </ul>
736 </dd></dl>
737
738 </div>
739 </div>
740 <a id="ga0688c59605b119c53c71b2505ab23eb5" name="ga0688c59605b119c53c71b2505ab23eb5"></a>
741 <h2 class="memtitle"><span class="permalink"><a href="#ga0688c59605b119c53c71b2505ab23eb5">&#9670;&#160;</a></span>NVIC_EncodePriority()</h2>
742
743 <div class="memitem">
744 <div class="memproto">
745       <table class="memname">
746         <tr>
747           <td class="memname">uint32_t NVIC_EncodePriority </td>
748           <td>(</td>
749           <td class="paramtype">uint32_t&#160;</td>
750           <td class="paramname"><em>PriorityGroup</em>, </td>
751         </tr>
752         <tr>
753           <td class="paramkey"></td>
754           <td></td>
755           <td class="paramtype">uint32_t&#160;</td>
756           <td class="paramname"><em>PreemptPriority</em>, </td>
757         </tr>
758         <tr>
759           <td class="paramkey"></td>
760           <td></td>
761           <td class="paramtype">uint32_t&#160;</td>
762           <td class="paramname"><em>SubPriority</em>&#160;</td>
763         </tr>
764         <tr>
765           <td></td>
766           <td>)</td>
767           <td></td><td></td>
768         </tr>
769       </table>
770 </div><div class="memdoc">
771
772 <p>Encodes Priority [not for Cortex-M0, Cortex-M0+, or SC000]. </p>
773 <p>This function encodes the priority for an interrupt with the priority group <em>PriorityGroup</em>, preemptive priority value <em>PreemptPriority</em>, and subpriority value <em>SubPriority</em>. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.</p>
774 <dl class="params"><dt>Parameters</dt><dd>
775   <table class="params">
776     <tr><td class="paramdir">[in]</td><td class="paramname">PriorityGroup</td><td>Priority group </td></tr>
777     <tr><td class="paramdir">[in]</td><td class="paramname">PreemptPriority</td><td>Preemptive priority value (starting from 0) </td></tr>
778     <tr><td class="paramdir">[in]</td><td class="paramname">SubPriority</td><td>Subpriority value (starting from 0)</td></tr>
779   </table>
780   </dd>
781 </dl>
782 <dl class="section return"><dt>Returns</dt><dd>Encoded priority for the interrupt</dd></dl>
783 <dl class="section remark"><dt>Remarks</dt><dd><ul>
784 <li>not for Cortex-M0, Cortex-M0+, or SC000.</li>
785 </ul>
786 </dd></dl>
787 <dl class="section see"><dt>See also</dt><dd><ul>
788 <li><a class="el" href="group__NVIC__gr.html#gad3cbca1be7a4726afa9448a9acd89377">NVIC_DecodePriority</a>; <a class="el" href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798" title="Set the priority for an interrupt.">NVIC_SetPriority</a>;</li>
789 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
790 </ul>
791 </dd></dl>
792
793 </div>
794 </div>
795 <a id="gadf4252e600661fd762cfc0d1a9f5b892" name="gadf4252e600661fd762cfc0d1a9f5b892"></a>
796 <h2 class="memtitle"><span class="permalink"><a href="#gadf4252e600661fd762cfc0d1a9f5b892">&#9670;&#160;</a></span>NVIC_GetActive()</h2>
797
798 <div class="memitem">
799 <div class="memproto">
800       <table class="memname">
801         <tr>
802           <td class="memname">uint32_t NVIC_GetActive </td>
803           <td>(</td>
804           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
805           <td class="paramname"><em>IRQn</em></td><td>)</td>
806           <td></td>
807         </tr>
808       </table>
809 </div><div class="memdoc">
810
811 <p>Get the device specific interrupt active status [not for Cortex-M0, Cortex-M0+, or SC000]. </p>
812 <p>This function reads the Interrupt Active Register (NVIC_IABR0-NVIC_IABR7) in NVIC and returns the active bit of the interrupt <em>IRQn</em>.</p>
813 <dl class="params"><dt>Parameters</dt><dd>
814   <table class="params">
815     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
816   </table>
817   </dd>
818 </dl>
819 <dl class="section return"><dt>Returns</dt><dd><ul>
820 <li>0 Interrupt is not active</li>
821 <li>1 Interrupt is active, or active and pending</li>
822 </ul>
823 </dd></dl>
824 <dl class="section remark"><dt>Remarks</dt><dd><ul>
825 <li>not for Cortex-M0, Cortex-M0+, or SC000.</li>
826 <li>IRQn must not be negative.</li>
827 <li>Each external interrupt has an active status bit. When the processor starts the interrupt handler the bit is set to 1 and cleared when the interrupt return is executed.</li>
828 <li>When an ISR is preempted and the processor executes another interrupt handler, the previous interrupt is still defined as active.</li>
829 </ul>
830 </dd></dl>
831 <dl class="section see"><dt>See also</dt><dd><ul>
832 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
833 </ul>
834 </dd></dl>
835
836 </div>
837 </div>
838 <a id="ga72f102d31af0ee4aa7a6fb7a180840f3" name="ga72f102d31af0ee4aa7a6fb7a180840f3"></a>
839 <h2 class="memtitle"><span class="permalink"><a href="#ga72f102d31af0ee4aa7a6fb7a180840f3">&#9670;&#160;</a></span>NVIC_GetEnableIRQ()</h2>
840
841 <div class="memitem">
842 <div class="memproto">
843       <table class="memname">
844         <tr>
845           <td class="memname">uint32_t NVIC_GetEnableIRQ </td>
846           <td>(</td>
847           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
848           <td class="paramname"><em>IRQn</em></td><td>)</td>
849           <td></td>
850         </tr>
851       </table>
852 </div><div class="memdoc">
853
854 <p>Get a device specific interrupt enable status. </p>
855 <p>This function returns the interrupt enable status for the specified device specific interrupt <em>IRQn</em>. <em>IRQn</em> cannot be a negative value.</p>
856 <dl class="params"><dt>Parameters</dt><dd>
857   <table class="params">
858     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
859   </table>
860   </dd>
861 </dl>
862 <dl class="section return"><dt>Returns</dt><dd><ul>
863 <li>0 Interrupt is not enabled</li>
864 <li>1 Interrupt is enabled</li>
865 </ul>
866 </dd></dl>
867 <dl class="section remark"><dt>Remarks</dt><dd><ul>
868 <li>IRQn must not be negative.</li>
869 <li>The registers that control the enabling and disabling of interrupts are called SETENA and CLRENA.</li>
870 </ul>
871 </dd></dl>
872 <dl class="section see"><dt>See also</dt><dd><ul>
873 <li><a class="el" href="group__NVIC__gr.html#ga530ad9fda2ed1c8b70e439ecfe80591f">NVIC_EnableIRQ</a>; <a class="el" href="group__NVIC__gr.html#ga736ba13a76eb37ef6e2c253be8b0331c" title="Disable a device specific interrupt.">NVIC_DisableIRQ</a>;</li>
874 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
875 </ul>
876 </dd></dl>
877
878 </div>
879 </div>
880 <a id="ga95a8329a680b051ecf3ee8f516acc662" name="ga95a8329a680b051ecf3ee8f516acc662"></a>
881 <h2 class="memtitle"><span class="permalink"><a href="#ga95a8329a680b051ecf3ee8f516acc662">&#9670;&#160;</a></span>NVIC_GetPendingIRQ()</h2>
882
883 <div class="memitem">
884 <div class="memproto">
885       <table class="memname">
886         <tr>
887           <td class="memname">uint32_t NVIC_GetPendingIRQ </td>
888           <td>(</td>
889           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
890           <td class="paramname"><em>IRQn</em></td><td>)</td>
891           <td></td>
892         </tr>
893       </table>
894 </div><div class="memdoc">
895
896 <p>Get the pending device specific interrupt. </p>
897 <p>This function returns the pending status of the specified device specific interrupt <em>IRQn</em>.</p>
898 <dl class="params"><dt>Parameters</dt><dd>
899   <table class="params">
900     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
901   </table>
902   </dd>
903 </dl>
904 <dl class="section return"><dt>Returns</dt><dd><ul>
905 <li>0 Interrupt is not pending</li>
906 <li>1 Interrupt is pending</li>
907 </ul>
908 </dd></dl>
909 <dl class="section remark"><dt>Remarks</dt><dd><ul>
910 <li>IRQn must not be negative.</li>
911 <li>The registers that control the status of interrupts are called SETPEND and CLRPEND.</li>
912 </ul>
913 </dd></dl>
914 <dl class="section see"><dt>See also</dt><dd><ul>
915 <li><a class="el" href="group__NVIC__gr.html#ga3b885147ef9965ecede49614de8df9d2">NVIC_SetPendingIRQ</a>; <a class="el" href="group__NVIC__gr.html#ga382ad6bedd6eecfdabd1b94dd128a01a" title="Clear a device specific interrupt from pending.">NVIC_ClearPendingIRQ</a></li>
916 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
917 </ul>
918 </dd></dl>
919
920 </div>
921 </div>
922 <a id="gab18fb9f6c5f4c70fdd73047f0f7c8395" name="gab18fb9f6c5f4c70fdd73047f0f7c8395"></a>
923 <h2 class="memtitle"><span class="permalink"><a href="#gab18fb9f6c5f4c70fdd73047f0f7c8395">&#9670;&#160;</a></span>NVIC_GetPriority()</h2>
924
925 <div class="memitem">
926 <div class="memproto">
927       <table class="memname">
928         <tr>
929           <td class="memname">uint32_t NVIC_GetPriority </td>
930           <td>(</td>
931           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
932           <td class="paramname"><em>IRQn</em></td><td>)</td>
933           <td></td>
934         </tr>
935       </table>
936 </div><div class="memdoc">
937
938 <p>Get the priority of an interrupt. </p>
939 <p>This function reads the priority for the specified interrupt <em>IRQn</em>. <em>IRQn</em> can can specify any device specific interrupt, or processor exception.</p>
940 <p>The returned priority value is automatically aligned to the implemented priority bits of the microcontroller.</p>
941 <dl class="params"><dt>Parameters</dt><dd>
942   <table class="params">
943     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
944   </table>
945   </dd>
946 </dl>
947 <dl class="section return"><dt>Returns</dt><dd>Interrupt priority</dd></dl>
948 <dl class="section remark"><dt>Remarks</dt><dd><ul>
949 <li>Each external interrupt has an associated priority-level register.</li>
950 <li>Unimplemented bits are read as zero.</li>
951 </ul>
952 </dd></dl>
953 <dl class="section see"><dt>See also</dt><dd><ul>
954 <li><a class="el" href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798">NVIC_SetPriority</a>; <a class="el" href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78" title="Read the priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].">NVIC_GetPriorityGrouping</a>; <a class="el" href="group__Core__Register__gr.html#ga32da759f46e52c95bcfbde5012260667" title="Read the BASEPRI register [not for Cortex-M0, Cortex-M0+, or SC000].">__get_BASEPRI</a>;</li>
955 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
956 </ul>
957 </dd></dl>
958
959 </div>
960 </div>
961 <a id="gaa81b19849367d3cdb95ac108c500fa78" name="gaa81b19849367d3cdb95ac108c500fa78"></a>
962 <h2 class="memtitle"><span class="permalink"><a href="#gaa81b19849367d3cdb95ac108c500fa78">&#9670;&#160;</a></span>NVIC_GetPriorityGrouping()</h2>
963
964 <div class="memitem">
965 <div class="memproto">
966       <table class="memname">
967         <tr>
968           <td class="memname">uint32_t NVIC_GetPriorityGrouping </td>
969           <td>(</td>
970           <td class="paramtype">void&#160;</td>
971           <td class="paramname"></td><td>)</td>
972           <td></td>
973         </tr>
974       </table>
975 </div><div class="memdoc">
976
977 <p>Read the priority grouping [not for Cortex-M0, Cortex-M0+, or SC000]. </p>
978 <p>This function returns the priority grouping (flag PRIGROUP in AIRCR[10:8]).</p>
979 <dl class="section return"><dt>Returns</dt><dd>Priority grouping field</dd></dl>
980 <dl class="section remark"><dt>Remarks</dt><dd><ul>
981 <li>not for Cortex-M0, Cortex-M0+, or SC000.</li>
982 <li>By default, priority group setting is zero.</li>
983 </ul>
984 </dd></dl>
985 <dl class="section see"><dt>See also</dt><dd><ul>
986 <li><a class="el" href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354">NVIC_SetPriorityGrouping</a>; <a class="el" href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395" title="Get the priority of an interrupt.">NVIC_GetPriority</a>; <a class="el" href="structSCB__Type.html" title="Structure type to access the System Control Block (SCB).">SCB_Type</a></li>
987 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
988 </ul>
989 </dd></dl>
990
991 </div>
992 </div>
993 <a id="ga62b37611e1ccbac47d747c98ef302746" name="ga62b37611e1ccbac47d747c98ef302746"></a>
994 <h2 class="memtitle"><span class="permalink"><a href="#ga62b37611e1ccbac47d747c98ef302746">&#9670;&#160;</a></span>NVIC_GetTargetState()</h2>
995
996 <div class="memitem">
997 <div class="memproto">
998       <table class="memname">
999         <tr>
1000           <td class="memname">uint32_t NVIC_GetTargetState </td>
1001           <td>(</td>
1002           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1003           <td class="paramname"><em>IRQn</em></td><td>)</td>
1004           <td></td>
1005         </tr>
1006       </table>
1007 </div><div class="memdoc">
1008
1009 <p>Get Interrupt Target State. </p>
1010 <p>Reads the interrupt target field from the non-secure NVIC when in secure state. </p><dl class="params"><dt>Parameters</dt><dd>
1011   <table class="params">
1012     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>External interrupt number. Value cannot be negative. </td></tr>
1013   </table>
1014   </dd>
1015 </dl>
1016 <dl class="section return"><dt>Returns</dt><dd><ul>
1017 <li>0 if interrupt is assigned to Secure</li>
1018 <li>1 if interrupt is assigned to Non Secure </li>
1019 </ul>
1020 </dd></dl>
1021 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1022 <li>Only available for Armv8-M in secure state.</li>
1023 </ul>
1024 </dd></dl>
1025 <dl class="section see"><dt>See also</dt><dd><ul>
1026 <li><a class="el" href="group__NVIC__gr.html#ga44b31316872e91bda1af7e17173de24b">NVIC_ClearTargetState</a>; <a class="el" href="group__NVIC__gr.html#gaf46218d01a6a3b70666ad0492a7f950a" title="Set Interrupt Target State.">NVIC_SetTargetState</a>; </li>
1027 </ul>
1028 </dd></dl>
1029
1030 </div>
1031 </div>
1032 <a id="gaebee9cad6724a5bac1857f0f1fb6d6af" name="gaebee9cad6724a5bac1857f0f1fb6d6af"></a>
1033 <h2 class="memtitle"><span class="permalink"><a href="#gaebee9cad6724a5bac1857f0f1fb6d6af">&#9670;&#160;</a></span>NVIC_GetVector()</h2>
1034
1035 <div class="memitem">
1036 <div class="memproto">
1037       <table class="memname">
1038         <tr>
1039           <td class="memname">uint32_t NVIC_GetVector </td>
1040           <td>(</td>
1041           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1042           <td class="paramname"><em>IRQn</em></td><td>)</td>
1043           <td></td>
1044         </tr>
1045       </table>
1046 </div><div class="memdoc">
1047
1048 <p>Read Interrupt Vector [not for Cortex-M0, SC000]. </p>
1049 <p>This function allows to read the address of an interrupt handler function.</p>
1050 <dl class="params"><dt>Parameters</dt><dd>
1051   <table class="params">
1052     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
1053   </table>
1054   </dd>
1055 </dl>
1056 <dl class="section return"><dt>Returns</dt><dd>Address of interrupt handler function</dd></dl>
1057 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1058 <li>For using this function with Cortex-M0+ processor based devices, the SBC-&gt;VTOR register must be implemented.</li>
1059 </ul>
1060 </dd></dl>
1061 <dl class="section see"><dt>See also</dt><dd><ul>
1062 <li><a class="el" href="group__NVIC__gr.html#gab43c1c59d5c081f1bc725237f4b1f916">NVIC_SetVector</a></li>
1063 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1064 </ul>
1065 </dd></dl>
1066
1067 </div>
1068 </div>
1069 <a id="ga3b885147ef9965ecede49614de8df9d2" name="ga3b885147ef9965ecede49614de8df9d2"></a>
1070 <h2 class="memtitle"><span class="permalink"><a href="#ga3b885147ef9965ecede49614de8df9d2">&#9670;&#160;</a></span>NVIC_SetPendingIRQ()</h2>
1071
1072 <div class="memitem">
1073 <div class="memproto">
1074       <table class="memname">
1075         <tr>
1076           <td class="memname">void NVIC_SetPendingIRQ </td>
1077           <td>(</td>
1078           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1079           <td class="paramname"><em>IRQn</em></td><td>)</td>
1080           <td></td>
1081         </tr>
1082       </table>
1083 </div><div class="memdoc">
1084
1085 <p>Set a device specific interrupt to pending. </p>
1086 <p>This function sets the pending bit for the specified device specific interrupt <em>IRQn</em>. <em>IRQn</em> cannot be a negative value.</p>
1087 <dl class="params"><dt>Parameters</dt><dd>
1088   <table class="params">
1089     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number</td></tr>
1090   </table>
1091   </dd>
1092 </dl>
1093 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1094 <li>IRQn must not be negative.</li>
1095 <li>The registers that control the status of interrupts are called SETPEND and CLRPEND.</li>
1096 </ul>
1097 </dd></dl>
1098 <dl class="section see"><dt>See also</dt><dd><ul>
1099 <li><a class="el" href="group__NVIC__gr.html#ga95a8329a680b051ecf3ee8f516acc662">NVIC_GetPendingIRQ</a>; <a class="el" href="group__NVIC__gr.html#ga382ad6bedd6eecfdabd1b94dd128a01a" title="Clear a device specific interrupt from pending.">NVIC_ClearPendingIRQ</a></li>
1100 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1101 </ul>
1102 </dd></dl>
1103
1104 </div>
1105 </div>
1106 <a id="ga5bb7f43ad92937c039dee3d36c3c2798" name="ga5bb7f43ad92937c039dee3d36c3c2798"></a>
1107 <h2 class="memtitle"><span class="permalink"><a href="#ga5bb7f43ad92937c039dee3d36c3c2798">&#9670;&#160;</a></span>NVIC_SetPriority()</h2>
1108
1109 <div class="memitem">
1110 <div class="memproto">
1111       <table class="memname">
1112         <tr>
1113           <td class="memname">void NVIC_SetPriority </td>
1114           <td>(</td>
1115           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1116           <td class="paramname"><em>IRQn</em>, </td>
1117         </tr>
1118         <tr>
1119           <td class="paramkey"></td>
1120           <td></td>
1121           <td class="paramtype">uint32_t&#160;</td>
1122           <td class="paramname"><em>priority</em>&#160;</td>
1123         </tr>
1124         <tr>
1125           <td></td>
1126           <td>)</td>
1127           <td></td><td></td>
1128         </tr>
1129       </table>
1130 </div><div class="memdoc">
1131
1132 <p>Set the priority for an interrupt. </p>
1133 <p>Sets the priority for the interrupt specified by <em>IRQn</em>.<em>IRQn</em> can can specify any device specific interrupt, or processor exception. The <em>priority</em> specifies the interrupt priority value, whereby lower values indicate a higher priority. The default priority is 0 for every interrupt. This is the highest possible priority.</p>
1134 <p>The priority cannot be set for every core interrupt. HardFault and NMI have a fixed (negative) priority that is higher than any configurable exception or interrupt.</p>
1135 <dl class="params"><dt>Parameters</dt><dd>
1136   <table class="params">
1137     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt Number </td></tr>
1138     <tr><td class="paramdir">[in]</td><td class="paramname">priority</td><td>Priority to set</td></tr>
1139   </table>
1140   </dd>
1141 </dl>
1142 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1143 <li>The number of priority levels is configurable and depends on the implementation of the chip designer. To determine the number of bits implemented for interrupt priority-level registers, write <em>0xFF</em> to one of the priority-level register, then read back the value. For example, if the minimum number of 3 bits have been implemented, the read-back value is <em>0xE0</em>.</li>
1144 <li>Writes to unimplemented bits are ignored.</li>
1145 <li><b>For Cortex-M0</b>:<ul>
1146 <li>Dynamic switching of interrupt priority levels is not supported. The priority level of an interrupt should not be changed after it has been enabled.</li>
1147 <li>Supports 0 to 192 priority levels.</li>
1148 <li>Priority-level registers are 2 bit wide, occupying the two MSBs. Each Interrupt Priority Level Register is 1-byte wide.</li>
1149 </ul>
1150 </li>
1151 <li><b>For Cortex-M3, Cortex-M4, and Cortex-M7</b>:<ul>
1152 <li>Dynamic switching of interrupt priority levels is supported.</li>
1153 <li>Supports 0 to 255 priority levels.</li>
1154 <li>Priority-level registers have a maximum width of 8 bits and a minimum of 3 bits. Each register can be further divided into preempt priority level and subpriority level.</li>
1155 </ul>
1156 </li>
1157 </ul>
1158 </dd></dl>
1159 <dl class="section see"><dt>See also</dt><dd><ul>
1160 <li><a class="el" href="group__NVIC__gr.html#gab18fb9f6c5f4c70fdd73047f0f7c8395">NVIC_GetPriority</a>; <a class="el" href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354" title="Set priority grouping [not for Cortex-M0, Cortex-M0+, or SC000].">NVIC_SetPriorityGrouping</a>; <a class="el" href="group__Core__Register__gr.html#ga360c73eb7ffb16088556f9278953b882" title="Set the BASEPRI register [not for Cortex-M0, Cortex-M0+, or SC000].">__set_BASEPRI</a>;</li>
1161 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1162 </ul>
1163 </dd></dl>
1164
1165 </div>
1166 </div>
1167 <a id="gad78f447e891789b4d8f2e5b21eeda354" name="gad78f447e891789b4d8f2e5b21eeda354"></a>
1168 <h2 class="memtitle"><span class="permalink"><a href="#gad78f447e891789b4d8f2e5b21eeda354">&#9670;&#160;</a></span>NVIC_SetPriorityGrouping()</h2>
1169
1170 <div class="memitem">
1171 <div class="memproto">
1172       <table class="memname">
1173         <tr>
1174           <td class="memname">void NVIC_SetPriorityGrouping </td>
1175           <td>(</td>
1176           <td class="paramtype">uint32_t&#160;</td>
1177           <td class="paramname"><em>PriorityGroup</em></td><td>)</td>
1178           <td></td>
1179         </tr>
1180       </table>
1181 </div><div class="memdoc">
1182
1183 <p>Set priority grouping [not for Cortex-M0, Cortex-M0+, or SC000]. </p>
1184 <p>The function sets the priority grouping <em>PriorityGroup</em> using the required unlock sequence. <em>PriorityGroup</em> is assigned to the field PRIGROUP (register AIRCR[10:8]). This field determines the split of group priority from subpriority. Only values from 0..7 are used. In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.</p>
1185 <dl class="params"><dt>Parameters</dt><dd>
1186   <table class="params">
1187     <tr><td class="paramdir">[in]</td><td class="paramname">PriorityGroup</td><td>Priority group</td></tr>
1188   </table>
1189   </dd>
1190 </dl>
1191 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1192 <li>not for Cortex-M0, Cortex-M0+, or SC000.</li>
1193 <li>By default, priority group setting is zero.</li>
1194 </ul>
1195 </dd></dl>
1196 <dl class="section see"><dt>See also</dt><dd><ul>
1197 <li><a class="el" href="group__NVIC__gr.html#gaa81b19849367d3cdb95ac108c500fa78">NVIC_GetPriorityGrouping</a>; <a class="el" href="group__NVIC__gr.html#ga5bb7f43ad92937c039dee3d36c3c2798" title="Set the priority for an interrupt.">NVIC_SetPriority</a>; <a class="el" href="structSCB__Type.html" title="Structure type to access the System Control Block (SCB).">SCB_Type</a></li>
1198 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1199 </ul>
1200 </dd></dl>
1201
1202 </div>
1203 </div>
1204 <a id="gaf46218d01a6a3b70666ad0492a7f950a" name="gaf46218d01a6a3b70666ad0492a7f950a"></a>
1205 <h2 class="memtitle"><span class="permalink"><a href="#gaf46218d01a6a3b70666ad0492a7f950a">&#9670;&#160;</a></span>NVIC_SetTargetState()</h2>
1206
1207 <div class="memitem">
1208 <div class="memproto">
1209       <table class="memname">
1210         <tr>
1211           <td class="memname">uint32_t NVIC_SetTargetState </td>
1212           <td>(</td>
1213           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1214           <td class="paramname"><em>IRQn</em></td><td>)</td>
1215           <td></td>
1216         </tr>
1217       </table>
1218 </div><div class="memdoc">
1219
1220 <p>Set Interrupt Target State. </p>
1221 <p>Sets the interrupt target field in the non-secure NVIC when in secure state. </p><dl class="params"><dt>Parameters</dt><dd>
1222   <table class="params">
1223     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>External interrupt number. Value cannot be negative. </td></tr>
1224   </table>
1225   </dd>
1226 </dl>
1227 <dl class="section return"><dt>Returns</dt><dd><ul>
1228 <li>0 if interrupt is assigned to Secure</li>
1229 <li>1 if interrupt is assigned to Non Secure </li>
1230 </ul>
1231 </dd></dl>
1232 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1233 <li>Only available for Armv8-M in secure state.</li>
1234 </ul>
1235 </dd></dl>
1236 <dl class="section see"><dt>See also</dt><dd><ul>
1237 <li><a class="el" href="group__NVIC__gr.html#ga44b31316872e91bda1af7e17173de24b">NVIC_ClearTargetState</a>; <a class="el" href="group__NVIC__gr.html#ga62b37611e1ccbac47d747c98ef302746" title="Get Interrupt Target State.">NVIC_GetTargetState</a>; </li>
1238 </ul>
1239 </dd></dl>
1240
1241 </div>
1242 </div>
1243 <a id="gab43c1c59d5c081f1bc725237f4b1f916" name="gab43c1c59d5c081f1bc725237f4b1f916"></a>
1244 <h2 class="memtitle"><span class="permalink"><a href="#gab43c1c59d5c081f1bc725237f4b1f916">&#9670;&#160;</a></span>NVIC_SetVector()</h2>
1245
1246 <div class="memitem">
1247 <div class="memproto">
1248       <table class="memname">
1249         <tr>
1250           <td class="memname">void NVIC_SetVector </td>
1251           <td>(</td>
1252           <td class="paramtype"><a class="el" href="group__NVIC__gr.html#ga7e1129cd8a196f4284d41db3e82ad5c8">IRQn_Type</a>&#160;</td>
1253           <td class="paramname"><em>IRQn</em>, </td>
1254         </tr>
1255         <tr>
1256           <td class="paramkey"></td>
1257           <td></td>
1258           <td class="paramtype">uint32_t&#160;</td>
1259           <td class="paramname"><em>vector</em>&#160;</td>
1260         </tr>
1261         <tr>
1262           <td></td>
1263           <td>)</td>
1264           <td></td><td></td>
1265         </tr>
1266       </table>
1267 </div><div class="memdoc">
1268
1269 <p>Modify Interrupt Vector [not for Cortex-M0, SC000]. </p>
1270 <p>This function allows to change the address of an interrupt handler function.</p>
1271 <dl class="params"><dt>Parameters</dt><dd>
1272   <table class="params">
1273     <tr><td class="paramdir">[in]</td><td class="paramname">IRQn</td><td>Interrupt number </td></tr>
1274     <tr><td class="paramdir">[in]</td><td class="paramname">vector</td><td>Address of new interrupt handler function</td></tr>
1275   </table>
1276   </dd>
1277 </dl>
1278 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1279 <li>Usage of this function requires vector relocation to RAM. Refer to <a class="el" href="using_pg.html#using_vtor">Using Interrupt Vector Remap</a> for more information.</li>
1280 </ul>
1281 </dd></dl>
1282 <ul>
1283 <li>For using this function with Cortex-M0+ processor based devices, the SBC-&gt;VTOR register must be implemented.</li>
1284 </ul>
1285 <dl class="section see"><dt>See also</dt><dd><ul>
1286 <li><a class="el" href="group__NVIC__gr.html#gaebee9cad6724a5bac1857f0f1fb6d6af">NVIC_GetVector</a></li>
1287 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1288 </ul>
1289 </dd></dl>
1290
1291 </div>
1292 </div>
1293 <a id="ga1b47d17e90b6a03e7bd1ec6a0d549b46" name="ga1b47d17e90b6a03e7bd1ec6a0d549b46"></a>
1294 <h2 class="memtitle"><span class="permalink"><a href="#ga1b47d17e90b6a03e7bd1ec6a0d549b46">&#9670;&#160;</a></span>NVIC_SystemReset()</h2>
1295
1296 <div class="memitem">
1297 <div class="memproto">
1298       <table class="memname">
1299         <tr>
1300           <td class="memname">void NVIC_SystemReset </td>
1301           <td>(</td>
1302           <td class="paramtype">void&#160;</td>
1303           <td class="paramname"></td><td>)</td>
1304           <td></td>
1305         </tr>
1306       </table>
1307 </div><div class="memdoc">
1308
1309 <p>Reset the system. </p>
1310 <p>This function requests a system reset by setting the SYSRESETREQ flag in the AIRCR register.</p>
1311 <dl class="section remark"><dt>Remarks</dt><dd><ul>
1312 <li>In most microcontroller designs, setting the SYSRESETREQ flag resets the processor and most parts of the system, but should not affect the debug system.</li>
1313 </ul>
1314 </dd></dl>
1315 <dl class="section see"><dt>See also</dt><dd><ul>
1316 <li><a class="el" href="index.html#ref_man_sec">ref_man_sec</a> </li>
1317 </ul>
1318 </dd></dl>
1319
1320 </div>
1321 </div>
1322 </div><!-- contents -->
1323 </div><!-- doc-content -->
1324 <!-- start footer part -->
1325 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1326   <ul>
1327     <li class="footer">
1328       <script type="text/javascript">
1329         <!--
1330         writeFooter.call(this);
1331         //-->
1332       </script> 
1333     </li>
1334   </ul>
1335 </div>
1336 </body>
1337 </html>