OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2660|回复: 4

串口接收程序调试

[复制链接]

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2015-5-14
在线时间
6 小时
发表于 2016-11-11 15:40:16 | 显示全部楼层 |阅读模式
1金钱
void USART1_IRQHandler(void)
{
        uint8_t Res,i;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {        
               Res=USART_ReceiveData(USART1);        //读取接收到的数据
                USART_RX_BUF[i]=Res;
                i++;
        }
         
}
在主函数里有循环发送数组USART_RX_BUF[i]的程序
用串口调试助手发送数据后,没能刷新数组,反而停止显示
单步调试程序发现,一旦发送数据后,程序就停在串口中断里,或是跳到硬件错误中断
当我把变量i定义在函数外面,则能正常更新显示数组
这是什么问题呢?

最佳答案

查看完整内容[请看2#楼]

1,i必须定义成全局变量;2,i要初始化为0.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-11 15:40:17 | 显示全部楼层
1,i必须定义成全局变量;2,i要初始化为0.
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13102
金钱
13102
注册时间
2012-11-26
在线时间
3811 小时
发表于 2016-11-11 15:47:06 | 显示全部楼层
把i 定义为static   自己去百度  各种变量的生存时间
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13102
金钱
13102
注册时间
2012-11-26
在线时间
3811 小时
发表于 2016-11-11 15:47:57 | 显示全部楼层
但是你这跳到硬件中断,是蛮神奇的
学无止境
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2016-11-11 16:01:25 | 显示全部楼层
i都没有初始化,系统取的随即值,然后就是数组越界,产生硬件中断
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表