前言
这里说踩坑似乎不合适,应该是自己坑自己,不过还是应当记录下来,时时刻刻提醒自己!
踩坑描述
不同项目对 int、unsigned int等数据类型会使用 typedef 为这些数据类型定义一个新的名字,这样在移植项目的过程中,如果不想大规模的改动源码,则需要自己在头文件中依据修改的名字自己用 typedef 声明一下。
我在移植一个开源项目时,这个项目的数据类型我自己的工程是没有的,所以没多想,动手就在 Keil 中右键跳转到已经存在的数据类型的头文件,当时没注意这个头文件的名字是 stdint.h,在声明完开源项目的数据类型后,编译也不会报错。结果就是这样一个小改动,自己埋下了深坑😭,每次想起都觉得十分不应该!
最关键的 unsigned long long 类型居然被我写错,写成 __INT64 直接就变成了 long long 类型,后面运行的时候总是挂掉,单步调试的时候总是在将数据转换的时候挂掉,要么指针跑飞要么栈溢出的,调了整整快一个星期,后面还以为是电脑的大小端和 cortexM3 的大小端不一致导致的,调整了数据转换后,虽然不会运行的时候挂掉,但是总是会返回出错 ...
前言
不同的 SDK 版本 flash 结构可能不同,以实际 SDK 版本提供的为准。
最近开发用的芯片正好是 Nodic 的 52840,学习过程中,正好对相关的知识做个总结,方便自己后面回顾。
先贴出一张 52840 和 52832 的 flash 结构图,这个是在网上翻阅资料找到的图片,当时保存到电脑里,正好拿出来用。
图片以 nRF52840 S140 v6 为例,52840 有 1MB 的 flash 和 256Kb RAM, 从上图可以看出 flash 最下边是 SoftDevice(蓝牙协议栈),中间是 Application(应用层), 再往上是 UserData 和 Bootloader。SoftDevice 下边还有 MBR(Master Boot Record,主引导记录)下边我们在详细分析它们。
52840 flash 结构解析
SoftDevice(蓝牙协议栈)
上边图中可以知道 SoftDevice 在 Flash 中的映射地址是 0x00000000-0x00026000,总共是 152Kb,但是其中要拆分成 4Kb 的 MBR 和 148Kb 的 ...
前言
软件配置的操作都是在 Keil 上进行,keil 不同版本可能会有所差异,不过基本都是大同小异的。
Keil 的安装
Keil 的安装可以参考我的这篇文章 -> keil5 的安装及破解
Keil 的代码格式化工具
Keil 的代码格式化工具可以参考我的这篇文章 -> 【规范代码】keil 代码格式化工具
正文
代码自动补全
在工具栏中找到小扳手图标或者在菜单栏中打开 Edit-Configuration ,打开后点击 Text Completion 找到 Symbols after x Characters ,勾选并填入你需要在输入第几个字符后开启补全提示。
这里我设置了输入三个字符后补全
实际效果:
添加注释模板
同样在工具栏中找到小扳手图标或者在菜单栏中打开Edit-Configuration ,同样的打开后点击 Text Completion 找到 Templates ,这里拿 if 来举例,在 Templates 窗口中,新增一个 if ,名字可以根据需要来取,怎么方便怎么来,这里为了方便演示,给它设定为 if ,然后我们 ...
前言
在使用 notepad++ 时,使用插件 Hex-Editor 踩到的深坑,故此记录一下!
问题描述
移植一个开源项目时,调用写接口连续向 txt 文本写入数据类型 uint32_t(unsigned int)的数值,本应该写入 4 个字节,但是通过 notepad++ 的插件 Hex-Editor 查看时一直只有 2 个字节,实际的文件大小是 4 个字节,与自己写入的不符,于是开启调试单步调试代码,但是又找不到问题的所在。
使用 notepad++ 查看如下图:
我实际以小端形式写入的数值应该是 01000000 共 4 个字节,但是实际从图中可以看到使用notepad++ 的插件 Hex-Editor 查看时,只显示了 0100共 2 个字节,然后一直以为写入的 uin32_t 数据类型在哪个地方被强制类型转换或者更改了,故一直在代码中找问题。
解决问题
最后,部门大佬给我提了个建议,换了个思路,怀疑是使用的工具的问题,所以我随后改使用 UltraEdit 查看,并且通过读取接口读取写入的数据,发现根本不是代码的问题,而是 notepad++ 的插件 Hex-Edit ...
前言
在用 Keil5 编写程序的时候,很多情况要参考别人写的程序来完成开发,在这过程中,看到了很多代码编写风格不一、代码编写不规范的情况。有时候看的头都大了,在一次偶然的情况下,认识了 Astyle 这一代码格式工具,就根据帖子上的教程配置在了 Keil 上,后面在使用的过程中,发现这款插件的高效性,所以特意拿出来分享。
Astyle
Astyle 网站
Astyle:http://astyle.sourceforge.net/
Astyle 介绍
我直接搬 Astyle 网站两句话来介绍,网站的介绍已经十分详细了,文档等信息都可以在网站上获取到。
Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C++/CLI, Objective-C, C# and Java programming languages.
Artistic Style 是 C, C++, C++/CLI, Objective-C, C# 和 Java 等编程语言的代码缩进器、格式化器和美化器 ...
前言
本文主要针对keil5软件的安装和破解。
用到的安装包和破解工具可以点击下面安装包和破解工具获取:
Keil5 的下载
首先,打开 Keil 下载地址,点击 Product Downloads,进入产品下载页,
然后选择 MDK-Arm 下载最新版本(这里我显示的最新的版本是5.33),
进入页面后,会要求填写姓名、邮箱、公司等信息,这里随便填就可以了,填完后点击 Submit 提交信息并进入下载页面,
接下来点击 MDK533.EXE 下载即可。
Keil5 的安装
打开上边下载的 MDK533.EXE,如下图一直 next 填写安装路径和信息后等待安装完成即可。
取消勾选 Show Release Note 点击 Finish,将弹出的 Pack Installer 窗口关闭即可,到这里就软件就装好了。
Keil5 的破解
首先在生成的 Keil uVision5 的桌面快捷方式中,右键属性,找到兼容性,勾选以管理员身份运行此程序,然后点击确定.
然后我们运行软件,在左上角 File 中找到 License Management..,点击打开它.
...