OpenEdv-开源电子网

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

进入串口接收中断,但标识无法置1

[复制链接]

5

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-24
在线时间
6 小时
发表于 2017-7-28 15:42:27 | 显示全部楼层 |阅读模式
2金钱
串口接收中断函数如下,但是无法使Rxflag=1
void USART1_IRQHandler(void)
{
    extern uint8_t ucTemp;
          extern uint8_t Rxflag;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
          Rxflag=1;
          ucTemp = USART_ReceiveData(USART1);


下面这段代码是例程中的部分函数,通讯协议是用STM32给模块发送“+++”,模块会回复“a”,STM32收到"a"后,又会回复模块"a",然后模块收到"a"后,会给STM32发送"+OK",STM32收到“+OK"就代表进入AT指令模式,STM32可以给模块发送AT指令了,但是下面这段代码 就是一直无法进入if(Rxflag),而且我觉得这段代码来实现协议也有问题

求大神解答一下,这个Rxflag进不去真的是困扰我好久了,在下万分感谢!!!!

Usart_SendString( macUSARTx,  "+++" );
usRxCount =        0;               
while(1)
{
if(Rxflag)
                 {
                                Rxflag=0;
                                if (usRxCount < sizeof(ucaRxBuf))
                                {
                                                ucaRxBuf[usRxCount++] = ucTemp;
                                               
                                          if(ATOKflag==1)
                                                {
                                                        if(ucTemp == 0X4B)//K
                                                        {
                                                                if(Temp==0X4F)//O
                                                                {
                                                                                SEND_OK=1;
                                                                }
                                                        }
                                                        Temp= ucTemp;
                                                }
                                                else
                                                {
                                                                if(usRxCount == 2)
                                                                {
                                                                        if(ucTemp==0X4F)
                                                                        {
                                                                                        ATOKflag=1;
                                                                                        SEND_OK=1;
                                                                        }
                                                                }
                                                                if(ucTemp == 0x61)
                                                                {
                                                                                        Usart_SendString( macUSARTx,  "a" );       
                                                                                        usRxCount =        0;                       
                                                                                        for (delay = 0; delay < maxdelay; delay++);                                                                                               
                                                                }
                                                }
                                }
                                else
                                {
                                                usRxCount = 0;
                                }
}

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-7-28 15:42:28 | 显示全部楼层
回复

使用道具 举报

5

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-24
在线时间
6 小时
 楼主| 发表于 2017-7-28 18:09:51 | 显示全部楼层
为什么我发不上来程序的附件
回复

使用道具 举报

5

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-24
在线时间
6 小时
 楼主| 发表于 2017-7-29 13:29:52 | 显示全部楼层

就是仿真怎么都不进if(Rxflag),但是我又能收到数据
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-7-29 23:03:51 | 显示全部楼层
卡弥萨玛 发表于 2017-7-29 13:29
就是仿真怎么都不进if(Rxflag),但是我又能收到数据

不满足条件才进不去啊,我去这都不知道?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-24
在线时间
6 小时
 楼主| 发表于 2017-7-31 12:15:00 | 显示全部楼层
正点原子 发表于 2017-7-29 23:03
不满足条件才进不去啊,我去这都不知道?

我知道不满足条件进不去啊 ,但是Rxflag=1这个是这要进入接收中断就会得到的啊,我既然接收到了数据,那我Rxflag为什么不能等于1
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-19 22:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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