写给自己的备忘笔记
- 学习随记
- keil使用技巧
- CCS使用
- VSCode
- 如何竖选?
- VSCode 快速查看函数定义及返回上一位置
- c语言知识:
- △单片机程序是如何运行起来的以及单片机的ROM和RAM
- Printf输出双引号和十六进制数
- 如何改变文本的样式
- C 库函数 - strtol()
- C语言中char、short、int、long各占多少字节
- MPU6050学习:
- SD卡
- Strlen计算字符长度:
- 高效率代码学习:(sim800发送和指令解析)
- 0X1A是什么
- 通过判断接收连续2个字符之间的时间差不大于10ms来决定是不是一次连续的数据.
- 缓冲区清除(memset)
- DMA串口接收(要加延时)
- ★ 从缓冲区内查找是否包含命令(strstr)
- printf映射到多个串口(hal库)
- 使用串口接收并区别指令的新方法(固定的几条指令>>ASCII值)
- OLED显示格式(注解)
- 创建一个自定义列表
- 如何创建一个注脚
- 注释也是必不可少的
- KaTeX数学公式
- 新的甘特图功能,丰富你的文章
- UML 图表
- FLowchart流程图
- 导出与导入
学习随记
为了让学过的知识不被丢弃,记个博客常复习
keil使用技巧
按住ALT左键拖动,对齐显示
CCS使用
同名CCS工程打不开?discovered projects。
同名CCS工程打不开?两种方式帮你打开同名CCS_project——更换CCS的workspace,工程文件重命名
CCS导入工程
接下来导入要用的工程文件,下图中由于笔者此工程文件已在工作区中,因此显示无法导入。另外,建议勾选“Copy Projects into WorkSpace",这样软件将会把工程文件复制到工作区中,保留原来的文件,否则会删除原来的工程文件。
沾入新代码后报错,找不到头文件
加入相对路径即可解决
⭐ccs怎么查看工程路径
右键工程,选择最后一项properties,选择资源,后面有路径
ccs输出HEX文件
右键工程。
修改command “–memwidth=8 --romwidth=8 --diag_wrap=off”:
生成hex
ccs批量注释
CTRL+/
批量去除注释也是CTRL+/
ccs代码折叠
ccs怎么开代码提示
在线烧录时,只擦除指定位置
VSCode
如何竖选?
最新版本:
alt+鼠标点选
alt+shift+鼠标拖动
VSCode 快速查看函数定义及返回上一位置
一、跳转到定义位置
查看某个函数的代码,需要跳转到具体的位置,具体的实现方式有下面三种:
1、光标定位到函数,按 F12;
2、光标定位到函数,鼠标右键,转到定义;
3、按住 Ctrl 键,同时点击函数。
二、返回跳转前的位置
当读懂函数后,需要回到跳转前的位置,具体的实现方式有下面两种:
1、按 ctrl + shift + 8;
2、按 Alt + ← (左箭头)。
c语言知识:
strlen字符串长度
计算给定字符串的(unsigned int型)长度,不包括’\0’在内
e.g:
uint8_n temp[]={“hello”};
strlen(temp);
sprintf数据转换
★ strchr 查找字符
https://www.bilibili.com/video/BV1iT4y1c72H?from=search&seid=16290288931706959885&spm_id_from=333.337.0.0
从第一次出现被查找字符开始,到\0 结束
注意:
一个汉字占两个字节,如果想用 strchr 汉字需要用 “”
★ ststr 查找字符串
https://www.bilibili.com/video/BV1iT4y1c72H?from=search&seid=16290288931706959885&spm_id_from=333.337.0.0
ASCII码表
单&&和&的区别
&: 两个数字 位操作 AND。或者取某个变量的地址,或声明引用。 对 bit:(0 & x ) = 0; ( 1 & x ) = x;&&:两个 bool 值的“并且”。( false && x ) = false; (true && x)= x;|:两个数字 位操作 OR。对 bit: ( 0 | x ) = x; ( 1 | x ) = 1;||:两个bool 值的“或”。( true || x ) = true; ( false || x ) = x;----a = !!a;(a && b) = !(!a || !b);!(a && b) = (!a || !b);(a || b) = !(!a && !b);!(a || b) = (!a && !b);
△单片机程序是如何运行起来的以及单片机的ROM和RAM
嵌入式–深入理解单片机(一)单片机程序是如何运行起来的以及单片机的ROM和RAM
单片机里的程序是如何运行的,这篇文章尽量给你讲懂!
Printf输出双引号和十六进制数
要输出2个字节的16进制数,可以在printf中使用%02x或者%02X格式,同时将值转为unsigned char型。
一、printf为格式化输出函数,可以将变量以各种格式化方式输出。
二、格式化输出16进制的格式字符串为%x或%X。
当输出的16进制数带有字母a~f时,两种格式字符串输出结果会有区别:
1、%x格式,那么输出的是小写的a~f;
2、%X格式,那么输出的是大写的A~F.
三、要固定输出两个字节,可以使用%02x或者%02X,其中02的意思是,输出2个字节,不足补0. 不过如果实际值超过2字节,这个就会输出实际值了。
所以要绝对输出2字节,需要将数值转为unsigned char型,保证输出不会超过。
即将n以2字节16进制输出,写作:
printf(“%02x”,(unsigned char)n);
使用USART_SendData();实现十六进制的发送
如何改变文本的样式
- 输出双引号
可以用转义序列,反斜杠**""后面的一个字符原样输出。**
例如:
#include <stdio.h>
void main()
{
printf(““小强””);//控制台输出:“小强”
}
C 库函数 - strtol()
strtol () 函数可以将字符串转换为长整数,根据不同的 base 进制。
strtol()函数是C标准库中的一个函数,用于将字符串转换为长整型数(long int)。它的原型为:
**long int strtol(const char *str, char endptr, int base);
该函数接收三个参数:
str:要转换的字符串。
endptr:指向第一个不能转换的字符的指针。
base:表示字符串所采用的进制,可以是2到36之间的整数,或者是特殊值0。
使用示例
以下是一个简单的示例,演示如何使用strtol()函数将字符串转换为长整型数:
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("转换失败:输入字符串不是一个有效的整数。\n");
} else {
printf("转换结果:%ld\n", num);
}
return 0;
}
在这个示例中,字符串**"12345"被成功转换为长整型数12345**,因为我们指定了base为10,所以按照十进制进行转换
1
2
。
进制转换
strtol()函数还可以用于不同进制之间的转换。例如,将十六进制字符串转换为十进制数:
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "0x1A";
char *endptr;
long int num;
num = strtol(hex_str, &endptr, 16);
if (*endptr != '\0') {
printf("转换失败:输入字符串不是一个有效的整数。\n");
} else {
printf("转换结果:%ld\n", num);
}
return 0;
}
在这个示例中,字符串"0x1A"被成功转换为十进制数26
1
3
。
注意事项
base参数:当base为0时,strtol()会根据字符串的前缀自动判断进制。例如,前缀为"0x"或"0X"表示十六进制,前缀为"0"表示八进制,否则为十进制。
返回值:如果输入字符串不符合数字格式,strtol()将返回0。如果转换结果超出了long整数的表示范围,将产生溢出,并设置errno为ERANGE
通过以上示例和注意事项,可以更好地理解和使用strtol()函数进行字符串到长整型数的转换。
C语言中char、short、int、long各占多少字节
1byte = 8bit 一个字节占8个二进制位
windows操作系统,32位机中,
char: 1个字节
short: 2个字节
int: 4个字节
long: 4个字节
C语言中char、short、int、long各占多少字节
MPU6050学习:
(以小马哥F103四轴例程为例)
- 软件命令重启系统(隐藏技能):
- MPU6050初始化函数(重要)
默认状态时,mpu6050初始化需要平放,并且静止转态使8s更新一次位置数据
将这一句加入后,mpu6050初始化可以不平放,以斜的位置作为初始位置
SD卡
Strlen计算字符长度:
高效率代码学习:(sim800发送和指令解析)
0X1A是什么
通过判断接收连续2个字符之间的时间差不大于10ms来决定是不是一次连续的数据.
缓冲区清除(memset)
memset将某一块内存中的内容全部设置为指定的值(给缓冲区清除)
DMA串口接收(要加延时)
★ 从缓冲区内查找是否包含命令(strstr)
strstr是C语言中的函数,作用是返回字符串中首次出现子串的地址。
printf映射到多个串口(hal库)
使用串口接收并区别指令的新方法(固定的几条指令>>ASCII值)
串口接收到的指令不同,缓冲区的ASCII的值也不同,通过不同的ASCII值区分不同的指令
OLED显示格式(注解)
Y:对应一行(一一对应)
LEN:会影响数据的起始位置
SIZE:字体大小,会影响数据的起始位置
注意:num的类型为u32 》》%d 其他的数据类型不能完整显示
void LCD_FloatShow (u16 x,u16 y,float num,uint8_t size) //浮点数显示
{
char temp[10];
sprintf((char )temp,“%0.2f”,num);
OLED_ShowString(x,y,temp,(size/2strlen(temp)));
}
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。1
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎