自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鄭高兴

它山之石 可以攻玉

  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 KEIL IDE、DFP 资源下载

博客跳转

2023-06-14 13:49:01 194

原创 FreeRTOS-信号量

应用程序可以使用此句柄对该信号量进行操作,例如获取(take)和释放(give)。

2023-11-14 11:20:43 110

原创 指针实现结构体成员变量的偏移访问与获取结构体大小

因此,尽管我们在示例中使用了char类型的指针来访问和操作结构体中的char类型成员变量,但其自增操作的长度并不是与结构体成员变量的类型直接相关的,而是根据指针所指向的数据类型的大小来确定的。对于char类型的指针,无论指针所指向的数据类型是什么,自增操作都会使得指针向后移动一个字节的大小,因为char类型的大小就是1个字节。在上述代码中指针的自增操作ptr++并不是与指针所指向的数据类型直接相关的,而是与指针所指向的内存单元的大小有关。指针自增操作会使指针指向下一个相邻的内存单元,

2023-11-13 10:39:16 379

原创 FreeRTOS-任务通知

参数表示进入等待状态前要清除的任务通知位。它是一个按位掩码参数,可以指定多个任务通知位。当任务调用 xTaskNotifyWait() 进入等待状态时,如果任务通知中的任何一位被设置为 1,那么它们将在进入等待前被清除。这样做可以确保任务在等待状态下不会立即返回,而是等待新的任务通知事件的发生。参数表示退出等待状态时要清除的任务通知位。它是一个按位掩码参数,可以指定多个任务通知位。当任务从等待状态返回时,如果任务通知中的任何一位被设置为 1,那么它们将在返回前被清除。

2023-11-02 17:21:18 205 2

原创 FreeRTOS-消息队列的使用

使用 xQueueHandle结构体创建对象。

2023-11-02 15:50:46 104

原创 MCU HardFault_Handler调试方法

1.在MDK的DEBUG模式下,当程序出现跑飞后,确定卡死在HardFault_Handler中断处2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP如下图所示,当前程序使用的是PSP堆栈寄存器。

2023-11-01 14:19:47 605

原创 STM32G070 onchip移植FlashDB

64。

2023-04-17 15:57:58 1167

原创 210 裸机程序烧录

选择烧录文件的路径点击START,烧录成功有以下弹窗,失败则格式化SD卡,重试。将SD卡插入电脑,打开程序 x210_Fusing_Tool.exe。开发板的裸机程序烧录地址为。选择烧录文件的路径进行烧录。软件,配置烧录地址为。

2023-03-02 19:35:58 379

原创 汇编指令集

指令是CPU机器指令的助记符,编译后会得到一串二进制机器码,由CPU执行伪指令本质上不是指令,它是编译器环境提供用来指导编译过程,编译后伪指令不会生成机器码伪指令的意义在于指导编译过程。

2023-02-27 14:40:21 1065

原创 ARM的工作模式和37个寄存器

ARM一共有7种工作模式。

2023-02-27 11:11:44 666

原创 Gitee与Git的使用

在.ssh目录下 有三个文件,其中id_rsa.pub 就是需要配置到Gitee的秘钥。从 ssh-rsa 开始 到邮箱结束 将整个字符串复制到剪切板,注意不要有空格。根据命令行的提示键入“Enter” ,直到生成秘钥成功。输入命令 xxx代表Gitee绑定的邮箱,如果秘钥没有配置成功,则不会有这个文件夹。

2023-02-22 18:22:56 357

原创 linux应用编程-多线程

的线程可以在终止时释放资源,这样创建它的线程就不用通过pthread_join来等待接收。的线程必须在创建它的线程中使用。线程的API都在头文件。回收,否则会有资源未释放。

2023-01-13 15:55:52 245

原创 linux应用编程-文件操作

0、1、2这三个fd被标准输入、输出、错误通道占用,用close(1)关闭标准输出,使用dup重新分配得到1这个fd,就把oldfd打开的这个文件和1这个标准输出通道给绑定起来了。这就叫标准输出的重定位。lseek函数是一个API ,在linux中 用 命令 man 2查询。

2023-01-11 11:51:48 400

原创 union 联合体

【代码】union 联合体。

2023-01-10 10:59:48 178

原创 C++ STL 容器类和迭代器

迭代器就是能通过移动来遍历处理的一种机制。每个容器都有自己专属的迭代器。迭代器就是C++为我们设计的一个高层次的“指针”,高层指针是面向容器中的元素的。

2023-01-06 10:49:32 363

原创 ubuntu挂载samba

映射Ubuntu 的 ip 地址 ,输入对应的Samba账号和密码。在smb.conf 文件内部最后加上。通过ifconfig查看ip地址。需要和配置文件中相对应。

2023-01-05 18:46:29 3399

原创 C++模板

虽然写在class内,但仍然是友元,而不是member function不能通过类创建的对象去访问private :T age;public ://构造函数 People() {};};//初始化列表 friend void print(const People < T > & pn) {} };(1) 声明时函数名加后缀,而定义时不用加(2) 需要class和friend function的2个前置声明。

2023-01-03 14:50:33 361

原创 C++ 继承和多态

(1) 继承是C++源生支持的一种语法特性,是C++面向对象的一种表现(2) 继承特性可以让派生类“瞬间”拥有基类的所有(当然还得考虑权限)属性和方法(3) 继承本质上是为了代码复用(4) 类在C++编译器的内部可以理解为结构体,派生类是由基类成员叠加派生类新成员得到的父类的public成员 在子类中是public的父类的protected成员 在子类中是protected的父类的private成员 在子类中是private的,权限进一步降低,只能通过父类的public方法间接访问。

2022-12-30 10:02:44 768 1

原创 C++封装和访问权限

(3) C语言中struct无构造函数概念,所以struct中需要用到动态内存时必须在定义struct变量后再次单独申请和释放,而这些操作都需要程序员手工完成。(1) 深拷贝,深的意思就是不止给指针变量本身分配内存一份,也给指针指向的空间再分配内存(如果有需要还要复制内存内的值)一份。(4) 继承特性上,C中不支持(只能通过结构体包含来间接实现),而C++源生支持,且struct和class可以互相继承。在实际项目中,一般一个cpp和一个hpp文件配对,描述一个class,class的名字和文件名相同的。

2022-12-28 14:36:50 621

原创 C指针内存对齐之强制类型转换

指针访问

2022-12-19 11:51:36 918

原创 FreeRTOS移植

官网下载源码文件FreeRTOSv202112.00,解压后内容为如下图移植到MDK所需要的源码文件路径为:FreeRTOSv202112.00\FreeRTOS\Source在基础工程模板内,新建目录树分支FreeRTOS_CORE和FreeRTOS_PORTABLE在FreeRTOS_CORE分支内添加 \FreeRTOSv202112.00\FreeRTOS\Source 目录下的所有c文件FreeRTOSv202112.00\FreeRTOS\Source\portable\MemMang 目录下

2022-12-05 17:32:50 489

原创 STM32 IAP相关的FLASH数据读取和跳转

IAP

2022-11-25 18:39:02 1607

原创 结构体内嵌函数指针实现面向对象分层调用

函数指针

2022-11-25 11:34:05 192

原创 FreeRTOS 模拟SystemTime用于定时操作

单片机模拟SystemTime,用于系统定时 ,减少软件定时器和硬件定时器的调用

2022-10-31 10:07:02 302

原创 卡尔曼滤波算法

typedef struct { float startValue; //k-1时刻的滤波值,即是k-1时刻的值 float kalmanGain; //Kalamn增益 float A; //x(n)=A*x(n-1)+u(n),u(n)~N(0,Q) float paraH; //z(n)=H*x(n)+w(n),w(n)~N(0,R) float Q; //预测过程噪声偏差的方差 float R;

2022-02-10 14:48:25 1031

原创 蓝牙钥匙解决方案 BLE RSSI 测距

1.理论公式RSSI计算距离的公式原理为d = 10 ^ ( RSSI – A ) / ( 10 * n )a) d为车辆与被计算目标节点之间的距离数值b) RSSI为车辆与被计算目标节点之间的RSSI数值c) A为距离车辆1m处接收到的RSSI数值d) n为环境衰减因子2.RSSI特性在实际的使用环境中,可影响RSSI数值的因素有当前车辆的停车环境、温度、手机硬...

2022-02-10 14:12:04 5921 5

原创 C语言结构体封装函数指针

C语言结构体封装函数指针C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可,如图所示:API封装方法那么我们怎么用C语言的结构体来封装函数API呢?首先看看C++和C的区别及方法:C++类C++语言类中可以封装函数,体现了模块操做的整体性,下面代码便是C++语言对某个函数的封装,这

2021-02-25 17:08:44 1942

原创 2020/9/28

这个月上班有点烦,不想写博客。

2020-09-28 14:59:27 88

原创 C_单链表的使用(增、删、改、查)

一、链表节点的创建和访问1.构建一个链表节点结构体// 构建一个链表的节点struct node{ int data; // 有效数据 struct node *pNext; // 指向下一个节点的指针};2.定义头指针用于对链表节点的访问和修改struct node *pHeader = NULL;// 定义头指针3.创建一个新的节点与前一个节点关联起来struct node *p = (struct node *)malloc(

2020-08-17 09:46:47 280 2

原创 strtok函数分割字符串的使用

一、函数功能C 库函数char *strtok(char *str, const char *delim)分解字符串str为一组字符串,delim为分隔符。二、函数解析1.函数原型char *strtok(char *str, const char *delim)2.参数char *str 要被分割的目标字符串char *delim 要分割目标字符串的分隔符,必须被包含于目标字符串中3.返回值函数返回被分解的第一个子字符串,如果没有可检索的字符...

2020-07-09 16:17:05 295

原创 C++/C 常用库函数-stdlib.h

1 double atof(const char *str)//把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。2 int atoi(const char *str)//把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。3 long int atol(const char *str)//把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。4 double strtod(const char *str, char **en.

2020-06-11 18:04:59 405

原创 C++/C 常用库函数-string.h

1 void *memchr(const void *str, int c, size_t n)//在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。2 int memcmp(const void *str1, const void *str2, size_t n)//把 str1 和 str2 的前 n 个字节进行比较。3 void *memcpy(void *dest, const void *src, size_t n)//从 src 复...

2020-06-11 17:52:03 228

原创 strstr函数截取字符串的使用

一、提纲对字符串数据的处理,是在嵌入式上常用的一项基础操作,本文介绍如何通过strstr函数截取字符串二、strstr解析1.函数原型char *strstr(const char *haystack, const char *needle)2.函数参数haystack-- 要被检索的目标 C 字符串。needle-- 在 haystack 字符串内需要搜索的小字符串。3.返回值该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返..

2020-05-26 11:20:28 1439

原创 UTF-8与GBK字符之间的转换

一、本文提纲在嵌入式产品中,难免会遇到由服务器或者APP端推送的消息内容,而大多数推送消息内容的字符编码都为UTF-8,底层硬件需要将推送的消息送到LCD或者OLED等屏幕上进行显示,此时就涉及到一个编码转换的内容,因为硬件不能直接将UTF-8编码的字符进行显示,必须经过算法将UTF-8编码对照Unicode编码转换为GBK汉字编码之后才能显示,而本文介绍从外部FLASH中读取Unicode编码和GBK字符编码,将UTF-8字符转换为GBK字符。二、UTF-8转换为GBK字符的原理1.UTF-8

2020-05-26 10:20:57 22493 5

原创 一、Linux-Cortex-A7-GPIO使用配置过程

GPIO使用配置流程一、.打开IO口对应的时钟使能寄存器①CCM_CCGR0~CCM_CCGR6(为32位寄存器组,其中的每两位控制一个外设时钟)②不同的IO口对应不同的CCGR寄存器组一共7组(0-7)二、设置IO口的复用模式(复用为什么功能进行使用)①SW_MUX_CTL为32位寄存器,只使用其中低5位②bit4控制是否使能复用功能③bit0-bit3(八种状态)控...

2019-11-12 10:30:22 689

原创 指针定义、野指针、左值与右值

一、指针定义并初始化与定义之后初始化的区别指针定义时可以初始化,指针的初始化其实就是给指针变量赋初值(跟普通变量的初始化没有任何本质区别)①指针定义并初始化的格式int a = 0;int *p = &a;②指针定义之后初始化,不可用*p=&aint a = 0;int *p; p = &a;二、野指针①什么是野指针野指针就...

2019-09-11 15:01:09 456

原创 C指针的使用

一、指针使用三部曲:①定义指针变量②关联指针变量③解引用#include <stdio.h>int main(void){ //第一步:定义指针变量 int a = 0,b=8; int *p; //第二步:关联指针指向的地址 p = &a; //第三步:解引用 *p = 555; printf(...

2019-09-11 10:33:47 509

原创 static用法

一、static局部变量与非静态局部变量的区别1.非静态局部变量分配在栈上,2.static局部变量分配在数据段或者bss段上。存储位置1.初始化非零的static局部变量分配在数据段上。2.未初始化和初始化为零的static局部变量分配在bss段上。二、static全局变量连接属性1.普通的非静态的全局变量,默认的链接属性是 外部的。2.static静态的...

2019-09-09 18:06:13 166

原创 比较器-迟滞比较器

一、迟滞比较器原理滞回比较器,在单线电压中,检测两个不同的电压值,使比较器输出高电平或者低电平。① (同向端输入)当输入电压高于Uth时,比较器输出高电平,当输入电压低于Utl时比较器输出低电平,在两者之间保持。② (反向端输入)当输入电压高于Uth时,比较器输出低电平,当输入电压低于Utl时比较器输出高电平,在两者之间保持。二、方案设计设计电路实现以下功能:① 当...

2019-08-20 15:50:21 39454 3

原创 C标准库string.c学习笔记(二)--memcmp()

一、函数声明int memcmp (const void * buf1,const void * buf2,size_t count)/*函数功能: 把buf1和buf2的值进行比较(buf1-buf2) 当buf1-buf2=0 buf1=buf2函数返回0 当buf1-buf2>0 buf1>buf2函数返回大于0 当...

2019-08-13 16:36:08 138

Unicode+GBK16.zip

在嵌入式代码中UTF-8转换为汉字所需要用到的完整Unicode字符编码和GBK16字符编码二进制文件

2020-05-26

Datasheet-MLX90614-中文-数据手册-rev008.pdf

MLX90614中文数据手册,与官方英文数据手册,一模一样 MLX90614中文数据手册,与官方英文数据手册,一模一样 MLX90614中文数据手册,与官方英文数据手册,一模一样

2019-08-07

MOS管电路工作原理及详解.ppt

在嵌入式电路设计中,常用到的元器件,场效应晶体管(MOS管)的基础知识介绍,P-MOS、N-MOS的区别,以及在电路中的工作原理。

2019-07-25

STM32驱动传感器应用案例适合入门

采用STM32F103C8T6为主控芯片,采集PM2.5,MQ2,,MQ7,MQ135,DHT11,五个传感器的数据,显示到OLED屏幕上,并通过ESP8266上传到云平台,可通过云平台控制STM32报警

2019-02-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除