<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Strangely, I got my first EXTI interrupt working two days ago.<div class=""><br class=""></div><div class="">Mine was on pin PB14 and goes low when active. Cube generated a bunch of code:</div><div class=""><br class=""></div><div class="">first, a file called mxconstants.h with:</div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span style="color: #931a68" class=""><b class="">#define</b></span> SOL2ST_Pin GPIO_PIN_14</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span style="color: #931a68" class=""><b class="">#define</b></span> SOL2ST_GPIO_Port GPIOB</div><div class=""><br class=""></div><div class="">and in gpio.c:</div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(78, 144, 114);" class=""><span style="color: #000000" class="">  </span>/*Configure GPIO pin : PtPin */</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">  GPIO_InitStruct.<span style="color: #0326cc" class="">Pin</span> = SOL2ST_Pin;</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">  GPIO_InitStruct.<span style="color: #0326cc" class="">Mode</span> = GPIO_MODE_IT_FALLING;</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">  GPIO_InitStruct.<span style="color: #0326cc" class="">Pull</span> = GPIO_NOPULL;</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">  HAL_GPIO_Init(SOL2ST_GPIO_Port, &GPIO_InitStruct);</div></div><div class=""><br class=""></div><div class="">in stm32f4xx_it.c:</div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(79, 118, 203);" class="">/**</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(79, 118, 203);" class="">* <span style="color: #91afcb" class="">@brief</span> This function handles EXTI line[15:10] interrupts.</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(79, 118, 203);" class="">*/</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span style="color: #931a68" class=""><b class="">void</b></span> <b class="">EXTI15_10_IRQHandler</b>(<span style="color: #931a68" class=""><b class="">void</b></span>)</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">{</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(78, 144, 114);" class=""><span style="color: #000000" class="">  </span>/* USER CODE BEGIN EXTI15_10_IRQn 0 */</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(78, 144, 114);" class=""><span style="color: #000000" class="">  </span>/* USER CODE END EXTI15_10_IRQn 0 */</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(78, 144, 114);" class=""><span style="color: #000000" class="">  </span>/* USER CODE BEGIN EXTI15_10_IRQn 1 */</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(78, 144, 114);" class=""><span style="color: #000000" class="">  </span>/* USER CODE END EXTI15_10_IRQn 1 */</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">}</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">For my code, I hook it using:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>status = <span style="color: #793d93" class=""><b class="">rtems_interrupt_handler_install</b></span>(<span style="text-decoration: underline" class="">EXTI15_10_IRQn</span>, <span style="color: #3933ff" class="">"EXTI"</span>, RTEMS_INTERRUPT_UNIQUE,</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span class="Apple-tab-span" style="white-space:pre">                       </span>(<span style="color: #006141" class="">rtems_interrupt_handler</span>) EXTI15_10_IRQHandler, <span style="text-decoration: underline" class="">NULL</span>);</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span class="Apple-tab-span" style="white-space:pre">      </span><span style="color: #931a68" class=""><b class="">if</b></span> (status != <span style="color: #0326cc" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(57, 51, 255);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre">          </span></span><span style="color: #793d93" class=""><b class="">printk</b></span><span style="color: #000000" class="">(</span>“EXTI interrupt install bombed with %d\n”<span style="color: #000000" class="">, status);</span></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>}</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><br class=""></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><br class=""></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">And catch the interrupt using:</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><span style="color: #931a68" class=""><b class="">void</b></span> <b class="">HAL_GPIO_EXTI_Callback</b>(<span style="color: #006141" class="">uint16_t</span> GPIO_Pin) {</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(79, 118, 203);" class=""> <span class="Apple-tab-span" style="white-space: pre;">    </span><span style="color: rgb(147, 26, 104);" class=""><b class="">if</b></span> (GPIO_Pin == SOL2ST_Pin) {</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New'; color: rgb(3, 38, 204);" class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>}</div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class="">}</div></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><br class=""></div><div style="margin: 0px; line-height: normal; font-family: 'Courier New';" class=""><br class=""></div><div class="">I hope this helps.</div><div class=""><br class=""></div><div class="">Andrei from The Great White North</div><div class="">(<a href="http://embedded.fm/blog" class="">embedded.fm/blog</a>)</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">On 2016-August-19, at 07:52, Ярослав Лещинский <<a href="mailto:midniwalker@gmail.com" class="">midniwalker@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi, everyone!<div class=""><br class=""></div><div class="">My battle with stm32 interrupts continues. Three month ago <span style="font-size:12.8px" class="">Andrei from The Great White North gave me some code advise:</span></div><div class=""><span style="font-size:12.8px" class=""><br class=""></span></div><div class=""><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex" class="gmail_quote">In my code I use interrupts for DMA with ADCs, and CAN using the HAL interrupt handler callback structure. <br class="">In this case, <span style="font-family:'Courier New'" class="">DMA2_Stream2_IRQHandler </span><wbr class="">calls<span style="font-family:'Courier New'" class=""> </span><span style="font-family:'Courier New'" class="">HAL_DMA_IRQHandler </span>in<span style="font-family:'Courier New'" class=""> <wbr class="">stm32f4xx_hal_dma.c </span>which figures what caused the interrupt and calls the appropriate callback.<br class="">In my ADC code I use this:<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">       </span></span>rtems_status_code<span style="" class=""> status;<br class=""></span><span style="white-space:pre-wrap" class="">      </span><span style="color:rgb(147,26,104)" class=""><b class="">const</b></span> <span style="color:rgb(147,26,104)" class=""><b class="">char</b></span> ADC1handlerName[] = <span style="color:rgb(57,51,255)" class="">"AD1r"</span>;<br class=""><span style="white-space:pre-wrap" class="">  </span>status = <span style="color:rgb(121,61,147)" class=""><b class="">rtems_interrupt_handler_<wbr class="">install</b></span>((<span style="color:rgb(0,97,65)" class="">rtems_vector_number</span>) <span style="text-decoration:underline" class="">DMA2_Stream2_IRQn</span>,<br class=""><span style="white-space:pre-wrap" class="">                    </span>ADC2handlerName, RTEMS_INTERRUPT_UNIQUE,<br class=""><span style="white-space:pre-wrap" class="">                        </span>(<span style="color:rgb(0,97,65)" class="">rtems_interrupt_handler</span>) DMA2_Stream2_IRQHandler, <span style="text-decoration:underline" class="">NULL</span>);<br class=""><span style="white-space:pre-wrap" class=""> </span><span style="color:rgb(147,26,104)" class=""><b class="">if</b></span> (status != <span style="color:rgb(3,38,204)" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">         </span></span><span style="color:rgb(121,61,147)" class=""><b class="">printk</b></span><span style="" class="">(</span>"interrupt handler install 2 failed with %d\n"<span style="" class="">, status);<br class=""></span><span style="white-space:pre-wrap" class="">  </span>}<br class=""><br class="">Later, I have the interrupt callbacks:<br class=""><span style="color:rgb(147,26,104)" class=""><b class="">void</b></span> <b class="">HAL_ADC_ConvCpltCallback</b>(<span style="color:rgb(0,97,65)" class="">ADC_<wbr class="">HandleTypeDef</span>* hadc) {<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">    </span></span>rtems_status_code<span style="" class=""> status;<br class=""></span><span style="white-space:pre-wrap" class="">      </span>status = <span style="color:rgb(121,61,147)" class=""><b class="">rtems_event_send</b></span>(ADCTaskId, RTEMS_EVENT_0);<br class=""><span style="white-space:pre-wrap" class="">     </span><span style="color:rgb(147,26,104)" class=""><b class="">if</b></span> (status != <span style="color:rgb(3,38,204)" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">         </span></span><span style="color:rgb(121,61,147)" class=""><b class="">printk</b></span><span style="" class="">(</span>"complete callback failed with %d"<span style="" class="">, status);<br class=""></span><span style="white-space:pre-wrap" class="">      </span>}<br class="">}<br class=""><span style="color:rgb(147,26,104)" class=""><b class="">void</b></span> <b class="">HAL_ADC_ConvHalfCpltCallback</b>(<span style="color:rgb(0,97,65)" class="">A<wbr class="">DC_HandleTypeDef</span>* hadc) {<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">  </span></span>rtems_status_code<span style="" class=""> status;<br class=""></span><span style="white-space:pre-wrap" class="">      </span>status = <span style="color:rgb(121,61,147)" class=""><b class="">rtems_event_send</b></span>(ADCTaskId, RTEMS_EVENT_1);<br class=""><span style="white-space:pre-wrap" class="">     </span><span style="color:rgb(147,26,104)" class=""><b class="">if</b></span> (status != <span style="color:rgb(3,38,204)" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {<br class=""><span style="" class=""><span style="white-space:pre-wrap" class="">         </span></span><span style="color:rgb(121,61,147)" class=""><b class="">printk</b></span><span style="" class="">(</span>"half complete callback failed with %d"<span style="" class="">, status);<br class=""></span><span style="white-space:pre-wrap" class=""> </span>}<br class="">}</blockquote></div><div style="font-size:12.8px;margin:0px;font-family:'Courier New'" class=""><br class=""></div><div style="font-size:12.8px;margin:0px;font-family:'Courier New'" class=""><br class=""></div>i was trying the same but only for EXTI driver and no result. I have such code:<br class=""><a href="http://pastebin.com/BZBNPRbg" class="">http://pastebin.com/BZBNPRbg</a><br class=""><br class="">After flashing, i received in console string "53", when i pushed the button - all stopped, only reset can brought him back to life.<div class=""><br class="">In C user guide i didn't find any references to  rtems_interrupt_handler_install, some info was about rtems_interrupt_catch, but when i try to use this, i received "undefined reference". </div><div class=""><br class=""></div><div class="">Maybe, someone can help me with that problem?</div><div class=""><br class=""></div><div class="">Thanks.</div><div class=""><br class=""></div><div class="">P.S. Sorry for my english.</div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2016-05-17 8:40 GMT+03:00 Ярослав Лещинский <span dir="ltr" class=""><<a href="mailto:midniwalker@gmail.com" target="_blank" class="">midniwalker@gmail.com</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr" class="">Andrei, thanks! </p>
<div class="gmail_quote">17 мая 2016 г. 8:31 пользователь  <<a href="mailto:groups@chichak.ca" target="_blank" class="">groups@chichak.ca</a>> написал:<div class=""><div class="h5"><br type="attribution" class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 2016-May-16, at 11:10, Ярослав Лещинский <<a href="mailto:midniwalker@gmail.com" target="_blank" class="">midniwalker@gmail.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class="">Hello. I'm try to use rtems with my stm board(stm32f4xx). And for now i have one problem: it's about ISR. The thing is, i have my own drivers, which uses isr(exti driver, uart and etc). I read rtems c-user manual properly,  but still can't understand clearly, how i can bring control to rtems signal manager via ASR. I'll be appreciated, if someone can give some advise.<br class=""><div class=""><br class=""></div><div class="">Yaroslavl.</div></div></div></blockquote><br class=""></div><div class="">In my code I use interrupts for DMA with ADCs, and CAN using the HAL interrupt handler callback structure. </div><div class=""><br class=""></div><div class="">In this case, <span style="font-family:'Courier New'" class="">DMA2_Stream2_IRQHandler </span><wbr class="">calls<span style="font-family:'Courier New'" class=""> </span><span style="font-family:'Courier New'" class="">HAL_DMA_IRQHandler </span>in<span style="font-family:'Courier New'" class=""> <wbr class="">stm32f4xx_hal_dma.c </span>which figures what caused the interrupt and calls the appropriate callback.</div><div class=""><br class=""></div><div class="">In my ADC code I use this:</div><div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(0,97,65)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">      </span></span>rtems_status_code<span style="" class=""> status;</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">    </span><span style="color:#931a68" class=""><b class="">const</b></span> <span style="color:#931a68" class=""><b class="">char</b></span> ADC1handlerName[] = <span style="color:#3933ff" class="">"AD1r"</span>;</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class=""> </span>status = <span style="color:#793d93" class=""><b class="">rtems_interrupt_handler_<wbr class="">install</b></span>((<span style="color:#006141" class="">rtems_vector_number</span>) <span style="text-decoration:underline" class="">DMA2_Stream2_IRQn</span>,</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">                    </span>ADC2handlerName, RTEMS_INTERRUPT_UNIQUE,</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">                 </span>(<span style="color:#006141" class="">rtems_interrupt_handler</span>) DMA2_Stream2_IRQHandler, <span style="text-decoration:underline" class="">NULL</span>);</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">    </span><span style="color:#931a68" class=""><b class="">if</b></span> (status != <span style="color:#0326cc" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(57,51,255)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">             </span></span><span style="color:#793d93" class=""><b class="">printk</b></span><span style="" class="">(</span>"interrupt handler install 2 failed with %d\n"<span style="" class="">, status);</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">   </span>}</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Later, I have the interrupt callbacks:</div><div class=""><br class=""></div></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="color:#931a68" class=""><b class="">void</b></span> <b class="">HAL_ADC_ConvCpltCallback</b>(<span style="color:#006141" class="">ADC_<wbr class="">HandleTypeDef</span>* hadc) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';min-height:14px" class=""><br class=""></div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(0,97,65)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">   </span></span>rtems_status_code<span style="" class=""> status;</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">    </span>status = <span style="color:#793d93" class=""><b class="">rtems_event_send</b></span>(ADCTaskId, RTEMS_EVENT_0);</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">   </span><span style="color:#931a68" class=""><b class="">if</b></span> (status != <span style="color:#0326cc" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(57,51,255)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">             </span></span><span style="color:#793d93" class=""><b class="">printk</b></span><span style="" class="">(</span>"complete callback failed with %d"<span style="" class="">, status);</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">       </span>}</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class="">}</div><div style="margin:0px;line-height:normal;font-family:'Courier New';min-height:14px" class=""><br class=""></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="color:#931a68" class=""><b class="">void</b></span> <b class="">HAL_ADC_ConvHalfCpltCallback</b>(<span style="color:#006141" class="">A<wbr class="">DC_HandleTypeDef</span>* hadc) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';min-height:14px" class=""><br class=""></div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(0,97,65)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">  </span></span>rtems_status_code<span style="" class=""> status;</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">    </span>status = <span style="color:#793d93" class=""><b class="">rtems_event_send</b></span>(ADCTaskId, RTEMS_EVENT_1);</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">   </span><span style="color:#931a68" class=""><b class="">if</b></span> (status != <span style="color:#0326cc" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(57,51,255)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">             </span></span><span style="color:#793d93" class=""><b class="">printk</b></span><span style="" class="">(</span>"half complete callback failed with %d"<span style="" class="">, status);</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">  </span>}</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class="">}</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">In my CAN code I use:</div><div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(0,97,65)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">    </span></span>rtems_status_code<span style="" class=""> status;</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New';min-height:14px" class=""><br class=""></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">   </span>status = <span style="color:#793d93" class=""><b class="">rtems_interrupt_handler_<wbr class="">install</b></span>(<span style="text-decoration:underline" class="">CAN1_RX0_IRQn</span>, <span style="color:#3933ff" class="">"CANR"</span>, RTEMS_INTERRUPT_UNIQUE,</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">                    </span>(<span style="color:#006141" class="">rtems_interrupt_handler</span>) CAN1_RX0_IRQHandler, <span style="text-decoration:underline" class="">NULL</span>);</div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">        </span><span style="color:#931a68" class=""><b class="">if</b></span> (status != <span style="color:#0326cc" class=""><i class="">RTEMS_SUCCESSFUL</i></span>) {</div><div style="margin:0px;line-height:normal;font-family:'Courier New';color:rgb(57,51,255)" class=""><span style="" class=""><span style="white-space:pre-wrap" class="">             </span></span><span style="color:#793d93" class=""><b class="">printk</b></span><span style="" class="">(</span>"Pressure task interrupt install bombed with %d\n"<span style="" class="">, status);</span></div><div style="margin:0px;line-height:normal;font-family:'Courier New'" class=""><span style="white-space:pre-wrap" class="">       </span>}</div></div><div class=""><br class=""></div><div class="">and use the two call back functions <b style="font-family:'Courier New'" class="">HAL_CAN_<wbr class="">RxCpltCallback</b> and <b style="font-family:'Courier New'" class="">HAL_CAN_<wbr class="">ErrorCallback i</b>n the same way as the ADC callbacks.</div><div class=""><br class=""></div><div class="">The symbol for external interrupt looks like <span style="text-decoration:underline;font-family:'Courier New'" class="">EXTI0_IRQn </span>and the UART would be like <span style="text-decoration:underline;font-family:'Courier New'" class="">USART2_IRQn.</span></div><div class=""><b style="font-family:'Courier New'" class=""><br class=""></b></div><div class=""><b style="font-family:'Courier New'" class=""><br class=""></b></div><div class="">Andrei from The Great White North.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b style="font-family:'Courier New'" class=""><br class=""></b></div><div class=""><b style="font-family:'Courier New'" class=""><br class=""></b></div></div></blockquote></div></div></div>
</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class=""><span class=""><div class=""><p class="">С уважением, Лещинский Ярослав.</p></div>+79814031224</span></div></div>
</div>
</div></blockquote></div><br class=""></div></div></body></html>