Keil中编译无error(有warning),但程序无法运行的一种情况

news/2024/9/23 23:21:46/

问题

void Run_Led(void)
{HAL_GPIO_TogglePin(RUN_LED_GPIO_Port, RUN_LED_Pin);Delay_ms(500);
}void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask */char c;/* Infinite loop */for(;;){while(1)	  {	Run_Led;}...}

非常简单的一个程序,实现LED周期为500ms的闪烁。编译时没有error,只有4个warning。
一般都会直接忽略warning嘛(现在看来这是个非常不好的习惯)。
但是程序运行时板子上看不到LED在闪烁,很奇怪。

解答

在keil中进行调试,执行到Run_Led了,依然看不到LED在闪烁,单步运行试试,
哎!发现问题了,单步运行根本进不去Run_Led这个函数。
跳转到Run_Led定义看看,没问题啊,可以跳转过去;再回头看看while(1)中的程序,不对!Run_Led是个函数啊(又不是宏定义。。。),调用格式应该是Run_Led()才对。
于是改正,程序正常执行。

void Run_Led(void)
{HAL_GPIO_TogglePin(RUN_LED_GPIO_Port, RUN_LED_Pin);Delay_ms(500);
}void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask */char c;/* Infinite loop */for(;;){while(1)	  {	Run_Led();}...}

后续

虽然问题解决了,但还是得搞清楚一点:程序明明是有问题的,编译器为啥没有报错呢??
将程序改回错误的格式,再次编译,这次发现问题了:
在这里插入图片描述
编译器是有warning的。
以后得注意,不能总是忽略warning。
warning也有可能导致程序运行失败。

一个小错误,记录下来。防止再犯


http://www.ppmy.cn/news/1431935.html

相关文章

OpenHarmony实战开发-合理运行后台任务

简介 设备返回主界面、锁屏、应用切换等操作会使应用退至后台。为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控,包括进程挂起和进程终止。为了保障后台音乐播放、日历提醒等功能的正常使用,系统提供了受规范约束…

【行为型模型】迭代器模式

一、迭代器模式概述 迭代器模式定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。把游走的任务放在送代器上,而不是聚合上。这样简化了聚含的接口和实现,也让责任各得其所。(对象行为型) 迭代器模式的优缺点&…

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL 解决方案 1、确定自己电脑的位数; 2、右击MathType桌面图标,点击“打开文件所在位置”,然后找到MathPage.WLL ,复制一份进行…

图像处理基础知识

图像处理基础知识 图像 1、模拟图像 模拟图像,又称连续图像,是指在二维坐标系中连续变化的图像,即图像的像点是无限稠密的,同时具有灰度值(即图像从暗到亮的变化值)。 2、数字图像 数字图像&#xff0…

leetcode377--组合总数IV

1. 题意 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。 请你从 nums 中找出并返回总和为 target 的元素组合的个数 2. 题解 与爬楼梯相似, 只是一次可以爬的阶梯数变多了,爬楼梯一次只能 c l i b [ 1 , 2 ] clib[1,2…

[leetcode] 57. 插入区间

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列…

算法训练营第42天|一维背包问题 二维背包问题 LeetCode.416分割等和子集

二维背包问题 题目链接&#xff1a; 二维背包 代码&#xff1a; vector<int> weight(n, 0); // 存储每件物品所占空间vector<int> value(n, 0); // 存储每件物品价值for(int i 0; i < n; i) {cin >> weight[i];}for(int j 0; j < n; j) {cin &g…

杰理695的UI模式LED灯控制

UI模式LED灯修改每个模式对应的LED灯闪烁修改在ui_normal_status_deal(u8 *status, u8 *power_status, u8 ui_mg_para)