STM32串口中断接收数据到数组遇到的问题

2019-07-14 20:20发布

本帖最后由 07071624 于 2016-10-5 22:02 编辑

tica, SimSun, sans-serif">在下最近在做一个项目,需要用串口调试助手向板子发送如:112233445566778899AA(10对16进制数)的数字串。

想在串口3中断程序中得到CmdCode[0]=11,CmdCode[1]=22.……CmdCode[8]=99,CmdCode[9]=AA。

也就是说想把这112233445566778899AA(10对16进制数)的数字串分配到一个10个元素的数组中。


为了验证能否达到此目的,我将此10个元素中任意一个元素,如第7个元素USART_SendData(USART3,CmdCode[6]);发送到电脑,如“USART_SendData(USART3,CmdCode[6]);”,

结果发送上来的在串口调试助手中得到的是00000000000000000000,也就是说并没有将这一串16进制数分到每个数组的元素中。

我写的程序如下所示,我百思不得其解,请高手指点我一下。谢谢了

u8 CmdCode[10] ;

void USART3_IRQHandler(void)
{
u8 CmdIndex;//i;

        if(USART_GetITStatus(USART3, USART_IT_RXNE)==SET)
        {
                USART_ClearITPendingBit(USART3, USART_IT_RXNE);

                                   for(CmdIndex = 0;CmdIndex < 10;CmdIndex++)
                {
                    CmdCode[CmdIndex] = USART_ReceiveData(USART3);
      
                }


                USART_SendData(USART3,CmdCode[6]);//我为了验证是否分配成功,把数组的任意一位元素发到串口中,看是否能成功

                    }

                 if(USART_GetITStatus(USART3, USART_IT_TXE)==SET)
        {
                USART_ClearITPendingBit(USART3, USART_IT_TXE);
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
07071624
1楼-- · 2019-07-15 00:30
亼亽 发表于 2016-10-6 09:38
void USART3_IRQHandler(void)这个函数是接收到一个字节就进入一次的
所以你在中断里边运行

谢谢你的指点,我就是想实现这个功能,你能指点我该怎么写这个程序吗
HARRY007
2楼-- · 2019-07-15 05:24
if( CmdIndex <= MAX )
{
    CmdCode[CmdIndex++] = USART_ReceiveData(USART3);
}
xxb5262
3楼-- · 2019-07-15 05:57
请问你弄好了吗,我现在也需要这样子 取数据,求教一下
zhj1163979310
4楼-- · 2019-07-15 08:16
                                 
xxb5262
5楼-- · 2019-07-15 11:46
 精彩回答 2  元偷偷看……
a838899
6楼-- · 2019-07-15 14:53
学习啊   看起来不错

一周热门 更多>