【NUCLEO-L452RE测评】+串口中断接收
<div class='showpostmsg'><p>还是接着上一个实例来。因为我想找到FREERTOS实战中的真谛。</p><p>上一个STM32CUBEMX的工程也再,我点开就是了。</p>
<p>把USART2的串口中断打开:</p>
<p></p>
<p>然后点生成代码,直接用MDK打开生成的工程。</p>
<p>发现STM32L4xx_it.c中多了:</p>
<pre>
<code>
/**
* @brief This function handles USART2 global interrupt.
*/
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}</code></pre>
<p>我没有管而是去查了一下资料,因为HAL向来强调中断时间得短,搞个带__WEAK的回调函数来处理。</p>
<p>于是我就是主程序里加上这个回调函数:</p>
<pre>
<code>/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart2, uart2_rxbuf, 1, 100); // 把收到的字节原样发送出去
HAL_UART_Receive_IT(&huart2, uart2_rxbuf, 1); // 重新注册一次,要不然下次收不到了
}
/* USER CODE END 4 */</code></pre>
<p>再在主函数前面加个数组声明:</p>
<pre>
<code>/* USER CODE BEGIN PD */
uint8_t uart2_rxbuf;
/* USER CODE END PD */</code></pre>
<p>而声明接收几个数据在USART2的初始化后边加上:</p>
<pre>
<code>/* USER CODE BEGIN USART2_Init 2 */
HAL_UART_Receive_IT(&huart2, uart2_rxbuf, 8);
/* USER CODE END USART2_Init 2 */</code></pre>
<p>那么下载后运行如下:</p>
<p>我发送8个字符十六进制,也收到了十六进制。</p>
<p>然后我碰到个怪事。就是我变成ASC接收模式,我发的东东是小方块,可是我无论怎么按发射也打断不了FREERTOS发的东东。</p>
<p>想不明白这是怎么回事,截图如下:</p>
<p>这个我得好好想想,想也想不通。。。。。。。欲知想通了没能且听下回分解吧。</p>
<p> </p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p><strong><a href="https://bbs.eeworld.com.cn/elecplay/content/148" target="_blank">ST NUCLEO-L452RE测评</a></strong></p>
<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1151850-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1151850-1-1.html </a>、</p>
<p>U转串? 是不是这个东西的问题,我之前遇到过类似的,搞来搞起,坑比的U转串的问题。</p>
页:
[1]