阿䨇 2024-04-16 17:14 采纳率: 0%
浏览 15

请教友友们怎么关掉跑马灯实验

我按照教学进行了跑马灯实验,成功了,到现在只要一开机就闪,想请教友友们怎么结束,回到最开始那个可以触屏的屏幕,还有好多小程序。

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-16 17:14
    关注

    引自免费微信小程序:皆我百晓生

    要关闭STM32上的跑马灯实验并恢复到初始状态,你需要修改你的程序代码,使其在初始化阶段不再执行闪烁功能,或者添加一个控制流程来停止闪烁。由于你没有提供具体的代码,我将为你提供一个通用的步骤和示例代码片段。

    首先,确认你的主循环(通常在main()函数中)中有一个条件判断,用于控制是否执行跑马灯的循环。例如,你可以定义一个全局布尔变量,用来作为开关,当这个变量为真时,执行跑马灯。

    这里是一个简单的伪代码示例,展示了如何实现这一逻辑:

    #include "stm32f1xx_hal.h" // 添加必要的头文件
    
    // 假设这是一个全局变量,用于控制跑马灯是否运行
    bool run_marquee = true;
    
    int main(void)
    {
        HAL_Init(); // 初始化HAL库
        SystemClock_Config(); // 设置系统时钟
    
        // 其他初始化代码...
    
        while (1)
        {
            if (run_marquee)
            {
                // 跑马灯代码块
                for (uint8_t i = 0; i < NUM_LEDS; ++i)
                {
                    GPIO_SetBits(GPIOD, LED_PORT[i]); // 点亮当前LED
                    HAL_Delay(MARQUEE_DELAY); // 延迟
                    GPIO_ResetBits(GPIOD, LED_PORT[i]); // 关闭当前LED
                }
            }
    
            // 检查是否有停止信号,比如按键输入或者其他中断
            if (CheckStopSignal())
            {
                run_marquee = false;
            }
    
            // 其他应用程序代码...
        }
    }
    
    // 假设这是检查停止信号的函数
    bool CheckStopSignal()
    {
        // 根据实际情况编写代码,可能是读取按键值、检查串口数据等
        return false; // 返回false表示没有检测到停止信号
    }
    

    根据你的硬件配置,你需要找到一种方法来触发CheckStopSignal()函数返回true,这样就可以退出跑马灯循环。这可能涉及到读取用户输入(如触摸屏或按钮),也可能涉及通过串口接收特定命令。你需要根据你的具体项目需求来实现这部分代码。

    如果你的代码已经存在,只需要按照上述思路调整,找到相应的部分并添加控制流程即可。如果你需要更详细的指导,请提供你的现有代码,以便我能给出更精确的建议。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月16日