Keil踩坑指南

本文讲述了在Keil开发环境中遇到JLink闪退问题的原因,涉及盗版驱动和版本冲突。提供了下载和替换老版驱动的解决方案,同时介绍了如何使用Astyle进行代码格式化,并分享了Keil字体的更换方法和编码设置建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keil-Jlink闪退

原因

Jlink版本和Keil的版本都过高,且由于Jlink为盗版,导致闪退。

具体为JLinkARM.dll这个插件搞鬼。

在这里插入图片描述

这个插件的来源为

在这里插入图片描述

也就是我们装Jlink驱动的时候,勾选了这个选项,而导致这个毒瘤插件进入Keil,以后安装插件的时候取消安装就可以了。

解决措施

  1. 找到”Keil安装目录“\ARM\Segger

    在这里插入图片描述

  2. 下载老版Keil的驱动:https://xqyjlj.lanzoui.com/b0axo4dte ;密码:g1h7

  3. 将里面的驱动解压替换现在的驱动,重启Keil就可以解决了。

Cannot load driver ‘C:\Keil_v5\ARM\Segger\JL2CM3.dll

在这里插入图片描述

原因

Jlink版本和Keil的版本都过高,且由于Jlink为盗版,导致闪退。

具体为JLinkARM.dll这个插件搞鬼。

在这里插入图片描述

这个插件的来源为

在这里插入图片描述

也就是我们装Jlink驱动的时候,勾选了这个选项,而导致这个毒瘤插件进入Keil,以后安装插件的时候取消安装就可以了。

解决措施

  1. 找到”Keil安装目录“\ARM\Segger

    在这里插入图片描述

  2. 下载老版Keil的驱动:https://xqyjlj.lanzoui.com/b0axo4dte ;密码:g1h7

  3. 将里面的驱动解压替换现在的驱动,重启Keil就可以解决了。

Keil 使用 Astyle 自动格式化

关于Astyle

Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进、格式化、美化。

Home Page: http://astyle.sourceforge.net/
Project Page: http://sourceforge.net/projects/astyle/

Astyle下载

https://sourceforge.net/projects/astyle/

https://xqyjlj.lanzoui.com/b0axo50yh 密码:69tj

下载之后解压,推荐解压到Keil的安装目录,避免误删除。

在这里插入图片描述

创建菜单按钮

在这里插入图片描述

  1. 创建应用 Astyle All

  2. 选择Astyle路径

  3. 添加参数

    "$E*.c" "$E*.h" --style=allman --indent=spaces=4 --indent-preproc-block --pad-header --pad-oper --unpad-paren --suffix=none --lineend=linux --convert-tabs --align-pointer=type --verbose
    

    其中

    "$E*.c" "$E*.h" 	##当前目录下所有的.c .h文件
    
    --style=allman
    --indent=spaces=4
    --indent-preproc-block
    --pad-header
    --pad-oper
    --unpad-paren
    --suffix=none
    --lineend=linux
    --convert-tabs
    --align-pointer=type
    --verbose
    

    此为Astyle命令,具体含义请移步 http://astyle.sourceforge.net/astyle.html

    在这里插入图片描述

  4. 按下OK后,tool下就有以下按钮

    在这里插入图片描述

  5. 按下按钮之后,启动自动格式化(需要先保存文件)。

    在这里插入图片描述

    在这里插入图片描述

  6. 再增加一个应用Astyle Current

    !E --style=allman --indent=spaces=4 --indent-preproc-block --pad-header --pad-oper --unpad-paren --suffix=none --lineend=linux --convert-tabs --align-pointer=type --verbose
    

    其中

    !E    ##当前文件
    
    --style=allman
    --indent=spaces=4
    --indent-preproc-block
    --pad-header
    --pad-oper
    --unpad-paren
    --suffix=none
    --lineend=linux
    --convert-tabs
    --align-pointer=type
    --verbose
    

    在这里插入图片描述

Keil字体

Keil默认字体本身不怎么好看。本人提供一些字体供大家下载。首选JetBrains Mono吧。Consolas YaHei hybrid要改设置,比较繁琐。

JetBrains Mono

Consolas YaHei hybrid

  • 安装方式

    • 打开Keil安装目录下的uv4文件夹,找到global.prop文件

      在这里插入图片描述

    • 将font属性修改为Consolas YaHei hybrid

      在这里插入图片描述

  • 字体预览

    在这里插入图片描述

  • 下载地址: https://xqyjlj.lanzoui.com/b0axo56va 密码:38vm

Keil设置

  • 编码:首选UTF-8 (较高版本才会有)

    在这里插入图片描述

  • Tab大小:4

    在这里插入图片描述

  • 自动补全

    在这里插入图片描述

### JLink 卸载时出现 'error launching installer' 的解决方案 当遇到 `error launching installer` 错误时,通常是因为系统环境配置不正确或者某些依赖项缺失所导致。以下是针对该问题的具体分析和解决方法: #### 1. 区域设置调整 如果系统的区域设置不符合安程序的要求,则可能导致此类错误。可以尝试修改系统的区域设置来解决问题。 - 打开 **控制面板** -> **区域**。 - 切换到 **管理** 标签页,点击 **更改系统区域设置**。 - 如果当前的区域设置为 **中文(简体,中国)**,建议将其更改为 **中文(简体,新加坡)** 或其他支持的语言和地区组合[^2]。 完成上述操作后重新启动计算机并再次尝试卸载 JLink包。 #### 2. 检查依赖组件 部分安程序可能需要特定版本的 Microsoft .NET Framework 或 Visual C++ Redistributable 库作为其运行的基础条件之一。因此需确认目标机器已安最新版的相关软件库。 对于 Windows 平台上的应用程序而言,缺少这些必要的动态链接库文件也会引发类似的错误提示信息。可以通过访问微软官方网站下载最新的 redistributables 来修复潜在的问题。 #### 3. 使用命令行方式强制删除残留数据 有时即使成功执行了正常的卸载流程,仍可能存在少量未被清理干净的数据影响后续的操作体验。此时可考虑采用手动干预手段彻底清除遗留项目。 打开 CMD 命令窗口输入以下指令逐一排查是否有异常进程占用资源: ```cmd tasklist | findstr /i "jlink" ``` 如果有发现任何与之关联的服务正在后台活动状态当中的话,请先终止它们再继续下一步骤动作: ```cmd taskkill /F /IM jlink.exe ``` 接着定位至实际存储路径下寻找对应的目录结构予以物理销毁处理即可达成目的效果。 --- ### 提供一段 Python 脚本辅助检测是否存在指定服务名的状态以及自动停止功能实现代码样例展示如下所示: ```python import os import subprocess def check_and_stop_service(service_name): try: result = subprocess.run(['tasklist'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) if service_name.lower() in result.stdout.lower(): print(f"{service_name} is running.") stop_command = f'taskkill /F /IM {service_name}.exe' subprocess.call(stop_command, shell=True) print(f"Stopped {service_name}") else: print(f"No active process found for {service_name}") except Exception as e: print(e) if __name__ == "__main__": target_services = ["JLink", "OtherService"] # Add your services here for svc in target_services: check_and_stop_service(svc) ``` 此脚本会遍历给定列表中的每一个服务名称,并通过调用操作系统级别的工具去验证它是否处于激活之中;一旦找到匹配项便会立即发出信号请求关闭对应实例从而避免干扰接下来要实施的任务计划安排过程。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值