王超的独立博客

发现更大的世界和更小的自己

Keil报错:cannot open source input file "core_cmInstr.h" 解决办法

uFUN试用

前言 前几天在面包板社区申请了一块uFun开发板,昨天刚到手,在烧录Demo程序的时候遇到一个问题,就是Keil打开工程,编译,报很多错误cannot open source input file "core_cmInstr.h,然后搜索了一些资料,最后解决了这个小问题,以下是解决办法。 Demo程序文件夹里有两个Keil的工程文件,一个是Keil4对应的,一个是Keil5的,可以说uF...

Qt小项目之串口助手控制LED

Qt学习

前言 最近刚学了一点Qt开发上位机,尝试着做个小软件练练手。查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开发板上的两个LED。 1.软件界面 2.主要功能: 启动自动搜索本机串口,或者手动点击搜索键扫描串口 自定义波特率 支持中文显示 支持发送新行 3.实际效果: 花了大概3天时间吧,找...

C语言学习之联合类型

C语言学习

前言 联合(union)是一种特殊的数据类型,和结构体很像,结构体各成员变量有自己独立的存储位置,而联合的成员变量共享同一片存储区域,因此联合变量再一个时刻只能保存它的某一个成员的值。 联合的定义和初始化 联合的定义方式与结构体是一样的,只是把关键字 struct 改成 union: union [标签名称] { 成员声明列表 }; 下面的例子定义了一个名为Data的联合类型,...

C语言学习之枚举类型

C语言学习

前言 枚举(enum)类型是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。...

C语言学习之结构体

C语言学习

前言 一直以来,C语言的学习都在入门阶段,只用到数组、函数、循环、选择、位运算这些基本的知识,较少用到指针、预处理、结构体、枚举类型、文件操作等这些C语言的精髓内容,现在想想真不敢说自己熟练掌握C语言的使用,所以最近几篇文章是关于这些内容的,一方面是巩固自己的C语言编程能力,另一方面也为以后学习C++做准备。 什么是结构体 C语言的结构体实际上就是一种特殊的数据类型,只不过这种数据...

C++学习之从C到C++

C语言和C++的不同

头文件的包含 C++的头文件 包含头文件可以不加.h结尾,如iostream,一些常用的头文件在引用时可以不加.h后缀,并在开头增加c,如: #include <cstdio> #include <cstring> #include <cstdlib> 强制类型转换 在C中的强制类型转换为:(int )3.5; 而在C++中的强制类型转...

一键自动格式化你的代码

Keil使用技巧

AStyle简介 AStyle,即Artistic Style,是一个可用于C, C++, C++/CLI, Objective‑C, C# 和Java编程语言格式化和美化的工具。我们在使用编辑器的缩进(TAB)功能时,由于不同编辑器的差别,有的插入的是制表符,有的是2个空格,有的是4个空格。这样如果别人用另一个编辑器来阅读程序时,可能会由于缩进的不同,导致阅读效果一团糟。为了解决这个问题...

C标准库string.h中几个常用函数的使用详解

C语言学习

strlen 计算字符串长度 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 函数实现: int Strlen(const char *str) { assert(str); int len = 0; while ((*str++) != '\0')len++; return len; } ...

Jlink使用技巧系列教程索引

Jlink系列教程

近两个月,写写停停,总算完成了这个系列的教程,不容易啊! Jlink使用技巧系列文章: 以下是各文章的链接,直接点击即可进入阅读。 Jlink使用技巧之合并烧写文件 Jlink使用技巧之烧写SPI Flash存储 Jlink使用技巧之虚拟串口功能 Jlink使用技巧之读取STM32内部的程序 ...

Jlink使用技巧之合并烧写文件

Jlink系列教程

前言 IAP(In-application-programming),即在应用中编程。当产品发布之后,可以通过网络方便的升级固件程序,而不需要拆机下载程序。IAP系统的固件一般由两部分组成,即BootLoader Code和Application Code,并存储在不同起始地址的空间里: 系统运行时,先运行Bootloader程序,检测状态,判断是执行应用程序还是升级固件。在实际开发...