OpenEdv-开源电子网

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

关于延时和中断的问题

[复制链接]

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-6-15
在线时间
0 小时
发表于 2013-3-22 16:47:58 | 显示全部楼层 |阅读模式
 for(x=0;x<7;x++)          
              {
               USART1->DR=q[x];
               while((USART1->SR&0X40)==0);//等待发送结束
              }
              USART1->CR1|=1<<2;
              USART1->CR1&=0xfff7;
              
              while(flag<4);
我想的是单片机发送完数据后,我就发送使能禁止,接受使能打开,然后等传感器给单片机发送数据。
我用JLIK在线调试时,发觉每次到
 while(flag<4);
时,就halt了,halt说明程序一直在这里执行,我用串口调试助手,用它来代替传感器,我按F10到
while(flag<4);
while指令已执行了一次,然后(在线调试时)等几秒钟,在通过串口调试助手,发送数据到单片机,发觉单片机没有接受到串口发来的数据,因为一直没有跳到中断服务函数
请问只是为什么,理论上,我用while时,是一直在等串口发送数据给单片机,(在线调试时)我就是没有立即发,晚了一会儿发,怎么就跳不到中断服务函数?
而我测试了一下,当执行到while指令之前,我用串口发数据给单片机,然后执行while,完全可以跳到中断服务函数啊。
原子哥求指导啊
用延时程序代替while时,也是一样,按道理,遇到中断应该跳出来啊
附:
我是用STM32和上位机通信,STM32发送数据给上位机,上位机发送数据给单片机,上位机发送四个字节给单片机,while的目的就是单片机接收到上位机发送的四个字节后执行下面的程序,如果没有接收到四个字节那么一直在等待
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-22 17:16:07 | 显示全部楼层
你的串口中断配置有问题吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2013-3-22
在线时间
0 小时
发表于 2013-3-22 17:26:16 | 显示全部楼层
您的中断设置不对导致的,自己检查看看吧,祝你好运!
http://mcu-web.taobao.com 有zigbee 无线电压、温湿度、继电器实验 zigbee自组网实验 stm32开发板 enc28j60以太网 web服务器
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 19:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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