前言

收集的各种报错解决方案

其他

软件

配置 STM32 开发环境

  • 点击后会弹出需要填写信息的页面随便写就行了

  • 写完会弹出以下页面点击下载即可

  • 下载完成安装即可,中间无需改任何东西位置默认就行(由于我之前下过 keil C51 所以第一次下时我改过位置导致后面破解不了只能把 keil C51 卸了重新下 keil MDK)

  • 安装完成后右键 “以管理员身份打开”然后打开破解工具开始破解

  • 复制 ID 后打开破解工具按照下面图片步骤完成(破解工具在我书签页第一个书签)

  • 把复制的那串密钥粘贴到下面那个位置,点击 Add 如果成功了则上面就会显示 MDK-ARM Plus

  • 破解完成后还需要安装STM32的芯片包(不然你没有芯片也不能编译代码);直接去 [MDK5 Software Packs](https://www.keil.com/dd2/Pack/# !# eula-container)下载,记得选择正确的型号,因为我的板子是 STM32F103RDT6;所以我就下载 STM32F1系列的(保存目录最好存你 keil MDK 安装目录下)
  • 下载完成后到目录找到这个 pack 双击它安装(安装过程一直 Next 即可)

  • 安装完成后打开 keil MDK 软件检查有没有这个芯片包

这样就完成了!!!

配置 C51 开发环境

如果还想写 51单片机代码则还想要配置 C51的密钥,首先下载 MDK-C51配置(压缩包在书签第一个)

  • 将 MDK-C51解压后可以看到这些文件

  • 然后将 C51.zip 复制到你的 Keil MDK 安装目录下然后解压(不知道安装目录的可以右键你的 Keil MDK 找到"文件所在位置")

这是解压后的部分文件截图:

  • 然后把之前 MDK-C51解压后的 C51配置代码.txt 用记事本打开,修改 PATH的路径为你 Keil MDK 的安装目录(就是刚刚的"文件所在位置")

  • 然后打开 Keil MDK 安装目录下的 TOOLS.INI 配置文件,将上面修改好路径的配置代码复制到该文件的末尾然后保存即可(如果提示权限不足,建议用管理员权限打开此配置文件)
  • 然后打开 Keil MDK,打开刚刚的 License Management 复制 ID 到破解工具那生成秘钥然后激活即可
  • 51单片机系列的选 AT89C52 即可(头文件是:# include “reg52.h”

好了,现在可以愉快的敲代码了

美化代码界面

一开始代码界面是默认的,有的人可能就不太习惯,比如我(我一开始接触C语言就是在 VS2019 上敲的,实在太舒服了);但是 Keil 没有设置代码配色方案的 UI 支持,所有的配色方案都是在安装目录下的 /UV4/global.prop 文件中定义,可以自行设计配色方案。这里分享好看的几款(下载后直接覆盖重启 Keil 即可):

global.prop(sublime风格)

global.prop(VScode风格)

注意:重启打开项目会出现注释乱码这需要手动修改设置,这样注释就恢复了

插件

  • CoolFormat(代码格式化2)
  • AStyle(代码格式化1)
  • DateTime(当前时间)
  • FunctionComment(函数注释)
  • FileComments(文件注释)

嵌入式开发工具

RT-Thread Studio - RT-Thread物联网操作系统

keil编译脚本

速度跟在软件里编译是一样的没区别

放在 uvprojx 文件同级目录下双击
UV 改成你的UV4.exe路径

@echo off

set UV=C:\Keil_V5\UV4\UV4.exe
set UV_PRO_FILE="uvprojx"
set UV_PRO_DIR=%cd%

for /f "usebackq delims=" %%j in (`dir /b "%UV_PRO_DIR%"\*."%UV_PRO_FILE%"`) do (
if exist %%j (
set UV_PRO_FILE_PATH="%UV_PRO_DIR%\%%j"))

echo %UV%
echo %UV_PRO_DIR%
echo %UV_PRO_FILE_PATH%

echo Init building ...
echo .>build_log.txt
%UV% -j0 -r %UV_PRO_FILE_PATH% -o %cd%\build_log.txt
type build_log.txt
echo Done.
pause

vscode+keil

参考文章

vscode “未定义标识符”的一种情况

VS Code配置开发环境时出现“未定义标识符”

方法1

  • 安装插件 Keil V
  • 写UV4.exe的路径

  • 打开项目的话可以管理员身份打开vscode然后在里面直接就打开项目的根目录文件夹即可
  • 注意编写 setting.json,不加的话会出现宏定义下面有红色波浪线警告,但是可以跳转定义
{
    "files.associations": {
        "my.h": "c"
    },
    "C_Cpp.intelliSenseEngineFallback": "Disabled", //需要添加的
    "C_Cpp.intelliSenseEngine": "Tag Parser",  //  需要添加的
}
  • 添加 c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/Keil_v5/ARM/ARMCC/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "__CC_ARM", /*必须加*/
                "USE_HAL_DRIVER",   /*看keil的宏定义*/
                "STM32G431xx"   /*看keil的宏定义*/
            ],
            "compilerPath": "D:\\GW64\\mingw64\\bin\\gcc.exe",
            "cStandard": "c99",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

  • vscode最好用管理员身份打开,这样不需要每次编译或者下载时需要点击弹窗
  • MX配置完后vscode自动会刷新

方法2

下载插件Keil Assistant ,然后配置一下路径

推荐下载 1.6.2版本,可以使用快捷键进行编译下载,新版本不行

KEIL快捷键设置

  • 修改 跳转到定义 快捷键为 CTRL+B
Edit:Advanced:Go to Definition of current Word
  • 修改 注释选择的内容 快捷键为 CTRL+/
Edit:Advanced:Comment Selection
  • 修改 取消注释 快捷键为 CTRL+SHIFT+/
Edit:Advanced:Uncomment Selection

用户代码片段

可以设置快捷代码模板,在左下角设置 — 用户代码片段,然后选择对应语言,在程序里输入 //sta就可以选择模板回车了

{
	"Print to console_1": {
		"prefix": "//static",
		"body": [
			"/*====================================静态内部函数声明区 BEGIN====================================*/",
			"/*====================================静态内部函数声明区    END====================================*/"
		],
		"description": "静态内部函数声明区注释"
	},
	"Print to console_2": {
		"prefix": "//",
		"body": [
			"/*====================================变量区 BEGIN====================================*/",
			"/*====================================变量区    END====================================*/"
		],
		"description": "全局/外部变量区注释"
	}
}

问题

  • static声明了函数但是未使用的话会有警告

warning: #177-D: function “GUI_ST7735_DrawBox” was declared but never referenced

解决方法:

  1. 保留这个函数的声明,但不想看到这个警告,可以在函数名称前加修饰符 __attribute__((unused)) 告诉编译器这个函数不使用
  2. 注释掉不使用的函数,使用宏定义来把不使用到的集中起来注释,用到再提出去
  • 安装完,如果芯片页面是绿色的点击下载按钮会卡死,这个需要安装 MDK-For Cortex 524.exe,然后看看有没有变灰,变了就OK,实在不行重启,还不行的话就新建一个工程,选择另一个不要选下面这个:

  • Keil的注册表信息

  • AC5

开发要用MDK,建议安装5.36版本,这个版本有AC5编译器,之后的版本不再集成

解决方法:

  1. 先安装5.36再安装最新版本,这样AC5可以自动集成到MDK中
  2. 安装最新版本后手动添加AC5编译器,安装完MDK后把ARMCC文件夹手动放到keil安装目录的ARM文件夹中,然后在keil中手动添加,选择刚刚添加的文件夹

  • 编译报cmsis_version.h或__COMPILER_BARRIER的错误

这两个都和CMSIS CORE有关,要勾选如下选项,例程里应该已经默认勾选了,注意CORE的版本,低于5.1.0勾上也还会报错,可以尝试安装网盘或群文件里的 ARM.CMSIS.5.9.0.pack 或者 直接升级MDK

github

ARM

  • 溢出

解决方法:

  • HAL库,勾选了C库后编译报错:
Undefined symbol __use_two_region_memory
Undefined symbol __initial_sp

解决方法是打开工程下的 startup_xxx.s 文件,翻到最后面,注释下面这两行,然后编译再取消注释再编译就正常了

参考文章:https://blog.csdn.net/qq_62014938/article/details/125602277