找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1784|回复: 8
打印 上一主题 下一主题
收起左侧

问下大家 ,单片机程序仿真刚开始时可以进入while1循环

[复制链接]
跳转到指定楼层
楼主
ID:630212 发表于 2023-7-24 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
然后程序运行20s左右 主函数中while1 循环进不去了,这有可能是什么原因?有中断标志没关吗?导致频繁进入中断,
所以不能进入while1循环。还有其他可能的情况吗?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-7-24 16:17 | 只看该作者
既然你有能力知道进不去主循环while(1),为什么不告诉大家在哪里运行呢?
回复

使用道具 举报

板凳
ID:630212 发表于 2023-7-24 16:30 | 只看该作者
Hephaestus 发表于 2023-7-24 16:17
既然你有能力知道进不去主循环while(1),为什么不告诉大家在哪里运行呢?

我用的是stm32,他进不去while1循环时候一直在串口中断函数里面循环,
回复

使用道具 举报

地板
ID:630212 发表于 2023-7-24 16:32 | 只看该作者
Hephaestus 发表于 2023-7-24 16:17
既然你有能力知道进不去主循环while(1),为什么不告诉大家在哪里运行呢?

void USART1_IRQHandler(void)
{   
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                        //接收中断触发
        {

               
                if(Enable_rx_timeout_flag == 0)
                {
                        Enable_rx_timeout_flag = 1;
                        Rx_timeout_count = 0;
                        TIM_Cmd(TIM3,ENABLE);                                                                        //使能定时器3
                }
                Rx_timeout_count = 0;               
                               
        }       
       
        if(USART_GetITStatus(USART1,USART_IT_TXE) != RESET)                                //发送中断触发       
        {               
                Send_Data();
        }
}  

因为没有清除中断标志位?
回复

使用道具 举报

5#
ID:1015233 发表于 2023-7-24 16:33 | 只看该作者
程序死在中断里面了,不然打不断while(1)。建议用多用几个printf打印到电脑上,看程序真实运行到哪一步了,哪一步没运行
回复

使用道具 举报

6#
ID:320306 发表于 2023-7-24 16:39 | 只看该作者
是不是有别的中断,程序运行到中断里面去了?
回复

使用道具 举报

7#
ID:1089502 发表于 2023-7-24 16:44 | 只看该作者
在程序仿真开始时进入 while(1) 循环的一种可能原因是启动代码或初始化代码中存在错误。  请确保你在程序的开头正确设置了系统时钟和引脚功能。此外,还需要检查是否初始化了必要的外设和设置中断优先级以及全局中断使能。
回复

使用道具 举报

8#
ID:1089502 发表于 2023-7-24 16:44 | 只看该作者
在程序仿真开始时进入 while(1) 循环的一种可能原因是启动代码或初始化代码中存在错误。

请确保你在程序的开头正确设置了系统时钟和引脚功能。此外,还需要检查是否初始化了必要的外设和设置中断优先级以及全局中断使能。
回复

使用道具 举报

9#
ID:630212 发表于 2023-7-28 09:09 | 只看该作者
嘿嘿嘿l 发表于 2023-7-24 16:33
程序死在中断里面了,不然打不断while(1)。建议用多用几个printf打印到电脑上,看程序真实运行到哪一步了, ...

是,发现串口接收中断即使没有接收数据任务,串口接收中断也会被触发,进而打断while循环
网上查了下说是ORE标志位问题,目前正在解决
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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