stm32串口
发布网友
发布时间:2022-04-26 07:36
我来回答
共3个回答
热心网友
时间:2022-06-25 09:19
你好,在配置串口时,开启串口接受中断,在中断中读取串口数据,然后根据此数据调用不同的功能函数
/****************************************************************
* @name USART1_IRQHandler
* @brief 串口1中断
* @note 接受来自发送端的数据,并根据数据调用函数即可
*****************************************************************/
void USART1_IRQHandler(void)
{
u8 Res;
//接收到的数据必须是0x0d 0x0a结尾
if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET )
{
Res = USART_ReceiveData(USART1);//读取接收到的数据
/*---------- 以下部分参考返回值定义表 ----------*/
switch( Res )
{
case '1'://dosomething
break;
default :break;
}
if( ( USART_RX_STA & 0x8000 ) == 0 )
{
if( USART_RX_STA & 0x4000 )
{
if( Res != 0x0a )USART_RX_STA = 0;
else USART_RX_STA |= 0x8000;
}
else
{
if( Res == 0x0d )USART_RX_STA |= 0x4000;
else
{
USART_RX_BUF[ USART_RX_STA & 0X3FFF ] = Res ;
USART_RX_STA++;
if( USART_RX_STA > ( USART_REC_LEN - 1 ) )
USART_RX_STA = 0;
}
}
}
}
}
热心网友
时间:2022-06-25 09:19
一般,串口收到数据会产生接收中断,在串口的中断处理函数里面读取串口收到的数据内容并保存下来,之后在程序中处理该数据就行了。
热心网友
时间:2022-06-25 09:20
这个有啥好问的啊,直接把接收到数据放到数组里面就可以了啊,然后程序读取数组里面的数据进行判断,做出相应的处理就可以了啊