关于串口接收字符串新手求教

2019-07-20 00:30发布

本帖最后由 Lixdong 于 2019-7-17 14:27 编辑

新手求教,调试结果如图 企业微信截图_15633301829249.png 接受第二个也是存到a 接受第二个也是存到a
串口发送2435,串口只能接受到24程序就运行不下去了,还都是存到a,变量RS232_RX_CNT的值也不增加,请问程序有什么BUG吗?
下面是串口中断程序
u8 RS232_RX_BUF[200];          //接收缓冲,最大200个字节.
u8 RS232_RX_CNT=0;                        //接收到的数据长度
void USART2_IRQHandler(void)                        //串口2中断服务程序
{
        
        u8 Res;

        u8 a,b,c,d;
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收到数据
        {
               

                Res =USART_ReceiveData(USART2);//(USART2->DR);        //读取接收到的数据
                if(RS232_RX_CNT<64)
                {
                        RS232_RX_BUF[RS232_RX_CNT]=Res;                //记录接收到的值
                        RS232_RX_CNT++;                                                //接收数据增加1
                }
                a=RS232_RX_BUF[0];
                b=RS232_RX_BUF[1];
                c=RS232_RX_BUF[2];
                d=RS232_RX_BUF[3];
                }
                RS232_RX_CNT=0;        

}
请问这个中断服务程序是正确的吗?若是不正确请帮忙修正一下,多谢!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
JerryYung
1楼-- · 2019-07-20 06:27
 精彩回答 2  元偷偷看……
Lixdong
2楼-- · 2019-07-20 10:00
JerryYung 发表于 2019-7-17 15:23
你的意思是想 ,发送 2435  ,然后中断中 abcd 分 别存

a  2

是的,但是只存了2个,还都是存到a里面了
Lixdong
3楼-- · 2019-07-20 10:43
JerryYung 发表于 2019-7-17 15:23
你的意思是想 ,发送 2435  ,然后中断中 abcd 分 别存

a  2

想通过串口助手发送存一个字符串,然后摘取里面的字符作为控制指令用
JerryYung
4楼-- · 2019-07-20 13:51
 精彩回答 2  元偷偷看……
Lixdong
5楼-- · 2019-07-20 14:04
JerryYung 发表于 2019-7-18 09:05
试下中断配置如下:
u8 a,b,c,d;

还是一样,下面加USART_SendData(USART2,Res);把res存的发回去,显示是2345
JerryYung
6楼-- · 2019-07-20 14:20
 精彩回答 2  元偷偷看……

一周热门 更多>