自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 资源 (2)
  • 收藏
  • 关注

转载 Free RTOS中的任务睡眠

务睡眠函数是一个非常有用的操作系统API,几乎每个RTOS都提供了一个类似的API给应用程序调用,在ucosii里,它叫OSTimeDly;在Nucleus里,它叫NU_Sleep;在FreeRTOS里,它叫vTaskDelay。它们的目的都是一样的,告诉操作系统:“我现在没有事情要做,请把CPU分配给其它任务,并在某个时间点把我唤醒”,这个时间点就是函数的入参,一般都是以tick为单位,如下所示:关于tick和时间片的详细说明见。

2024-04-03 17:19:23 67 1

转载 EIP协议

在 OpENer 中,可以使用 BringupNetwork 函数初始化设备的网络接口,如果设备的网络配置是动态获取的,则可以启动 DHCP 客户端获取网络配置信息。如果连接状态为已建立,并且连接是消费者连接或服务器端连接,则检查连接的不活动监视器是否已经超时,如果超时,则关闭连接,并调用连接超时函数来通知应用程序连接已经关闭。如果连接状态为已建立,并且连接是生产者连接,则检查生产抑制计时器是否已经过期,如果过期,则将计时器重置,并允许连接发送数据。转载EIP之数据发送-CSDN博客。

2023-10-02 15:00:59 537

转载 DRAM、SRAM、EEPROM、Flash 闪存、MRAM各自特点

Flash 闪存 —— Flash 闪存是 EEPROM 的变体,具有更大的存储容量和更快的读写速度,但仍然相对较慢。DRAM —— 边缘计算应用程序的设计者通常有几种内存技术可供其选择,不同的内存技术就会提供不同的性能和权衡。它价格便宜,与 SRAM 相比速度较慢,耗能大,并且只在有电源供应时才保存数据。在内存中允许读写操作随机发生。MRAM 在待机状态下还具有零泄漏的特性,在 85°C 条件下承受 1016次 写循环和20年 以上的数据保留能力。它也是最耗电的内存,像DRAM一样,它是一种易失性内存。

2023-06-12 17:42:16 1846

原创 循环队列实例

【代码】循环链表实例。

2023-04-27 16:29:02 170 1

原创 二维数组创建

【代码】二维数组创建。

2023-04-27 11:16:43 136

原创 单链表的插入和删除实例

【代码】单链表的插入和删除实例。

2023-04-23 17:33:07 104

原创 【C语言】#和##的作用

##和#在c语言中的介绍

2022-07-18 16:56:47 1859 1

原创 【数据结构】C语言实现队列

#include "test_queue.h"#include <stdio.h>#include <string.h>#include "test_queue.c"#define QUEUE_CACHE_BUFF_SIZE 1024#define QUEUE_RX_TX_BUF 32static QUEUE_HandleTypeDef_t txqueue;QUEUE_DATA_T cache_buff[QUEUE_CACHE_BUFF_SIZE] = {0};un.

2022-02-17 18:16:07 687

原创 DEBUG日志宏定义

日志宏定义#define UBC_DEBUG(fmt,args...) printf("[SDK COMMON] %s[%d] -> " #fmt "\n", __FUNCTION__, __LINE__, ##args);

2021-11-17 16:50:24 1154

原创 【C语言】带头节点的链表的增删改查示例

#include<stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;}NODE;NODE * creat_List_head();int list_add_item(NODE *list, int data);int list_delete_item(NODE *list,int num);int list_update_item(NODE*lis.

2021-10-22 17:19:23 182

原创 【C语言】带头节点的链表的增删

#include <stdio.h>typedef struct grade{ int score; struct grade *next;}NODE;NODE *list_creat();int list_insert(NODE* head,NODE *pNew);int list_delete_item(NODE *list,NODE *item);void list_destory(NODE *list);void showList(NODE *he.

2021-10-21 18:10:02 113

原创 【c语言】指针的指针使用方法

指针的指针一般用法是外部人申明,传入另一个函数以后由这个函数申请空间,但是需要注意的是,要在传入之前给这个指针的指针初始化。例如#include<stdio.h>typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef struct{ u16 value_handle; u8 offset; u8 *data; u16 len;} ble_gatts_

2021-10-09 17:52:25 1401

原创 【工具使用】VSCODE 配置#define

使用VSCODE开发项目的时候,经常会遇到宏定义包含的数据是暗的,导致代码查看遇到阻碍。那么如何在Vscode里设置#define宏呢?往下看:在Vscode里设置#define宏的步骤如下:1、按键ctrl+shift+p,打开如下图2、然后打开文件如下图3、如上图填写自己的#define 即可,保存。然后去项目中去查看。...

2021-09-10 18:02:47 3486

转载 【BLE】BLE扫描参数

软件: nRF SKD Ver 15.2, S140 SoftDevice API文档路径: ~/nRF5_SDK_15.2.0_offline_doc/s140/structble__gap__scan__params__t.html1. ble_gap_scan_params_t::active; 值: 1: 主动扫描, 0: 被动扫描;如果需要获得扫描响应,需要 Central 主机设置为主动扫描。如果只是需要广播数据则设置为被动扫描。两者区别在于:主动扫描可以获得广...

2021-09-10 16:29:43 2079

转载 【蓝牙BLE】BLE模块FOTA升级方法

近日在蓝牙开发过程中,遇到了FOTA功能的实现,所以去了解了下蓝牙模块的OTA实现方式,下面做一下记录:1.概述FOTA即为 (firmware over the air) 即通过空中无线方式实现设备固件升级。可以通过无线通信方式实现OTA,比如2G/3G/4G/WiFi/蓝牙/NFC/Zigbee,他们都支持OTA。也可以通过有线方式进行固件升级,比如通过UART,USB或者SPI通信接口来升级设备固件。Ota就是远程固件升级即DFU(Device Firmware Update)。不管采用O

2021-07-13 11:22:53 1584

转载 【蓝牙开发】低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读

今天在蓝牙功能开发的过程中,学习到的一些知识,在此小记一下:什么是蓝牙service和characteristic?到底怎么理解蓝牙profile?ATT和GATT两者如何区分?什么又是attribute?attribute和characteristic的区别是什么?蓝牙的互联互通为什么能做得这么成功?本文将对以上问题进行阐述,并重点阐述蓝牙协议栈中的ATT层和GATT层,本文偏重理论,如果你对低功耗蓝牙不是很了解,建议配合如下两篇文章一起阅读:1. 蓝牙协议栈架构如文章“深入浅出低功耗蓝牙

2021-07-12 17:32:03 1309

原创 【智能硬件】蓝牙扫描间隔和扫描时间窗的原理

2021-05-26 16:02:56 1757

原创 【嵌入式linux】bootloader详细介绍

Bootloader介绍:1、Bootloader是硬件启动的引导程序,是运行操作系统的前提。2、是操作系统内核或者用户应用程序运行之前运行的一小段代码,堆软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;3、嵌入式系统中,整个系统的启动加载任务通常由bootloader完成。4、主要是初始化硬件设置一些环境变量参数,比如加载系统的地址或者连接的主机ip等操作模式自启动模式:bootloader从目标机上的某个固态存储设备上将操作系统加载到ram中,整个过程...

2021-05-07 23:39:57 2370 1

原创 【嵌入式】嵌入式中的总线介绍

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,。按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。扩展资料数据总线

2021-05-07 23:38:12 1597 2

原创 【嵌入式linux】进程间通信的几种方式

管道:无名管道PIPO 只能用于亲缘关系的进程间通信 半双工的通信模式。 有名管道 FIFO 可以用于互不相关的两个进程间通信 先进先出规则 信号内核产生信号,用户注册信号处理函数,来进行信号事件的处理共享内存最高效的进程间通信方式,进程可以直接读写内存,不需要任何数据的拷贝 多进程通信过程中。内核分配有共同的内存区,需要访问的进程可以将其映射到自己的私有地址空间。 但是需要依靠互斥锁或者信号量来保证同步性。防止阻塞。共享内存实现:(1)、创建共享内存 ...

2021-05-06 23:24:46 728

原创 【嵌入式智能硬件原理】WIFI作为sta连接原理和过程

1、首先选择sta或者ap,如果是ap模式,则此时wifi就是个热点,是供其他设备连接的。如果是sta模式,则此时wifi设备就可以连接其他的ap热点,比如手机连接路由器。此时手机就是sta2、作为sta连接过程中,需要先设置ssid即将要连接的热点的账号(SSID就是这个用于用户识别的的名字,也就是我们经常说到的wifi名。),然后设置加密模式。可选的有好多种,比如WEP安全加密方式和WPA安全加密方式。3、然后设置key即wifi的password。连接过程有三个阶段:终端在连接..

2021-05-06 17:47:42 2110 1

原创 【C语言】关于c语言中检查内存泄漏的办法

关于c语言中检查内存泄漏的办法从一开始设计之初 就应该有单独分层。将底层的malloc和free等函数 加一层自己的系统函数层。这样有助于后期的移植和检查内存泄漏。例如test_malloc test_free 假如发现了内存泄漏。并且是已知的某个流程。那么我们即可重构一下我们的test_free和test_malloc。 思路如下:首先做一个list或者数组,最好是结构体的,元素为 地址和大小 时间等。有能力的可以增加函数名,更方便。在test_malloc中,每次调用都将本次申请成功的内存地址和

2021-04-15 18:12:38 1620

原创 【DHCP协议】DHCP工作过程和报文作用

DHCP工作过程和报文作用DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP协议共有8种报文,分别为...

2021-02-24 17:22:18 3089

原创 【计算机网络】抓取路由器包

前置条件:1、镜像交换机:笔者使用的是tp-LINK的5口千兆镜像交换机 TP_5G20052、2个路由器 : A路由器正常的接收入户线插于wan口,B路由器关闭dhcp功能做交换机使用。3、3根网线: A和镜像交换机的lan口用网线连接。 B和镜像交换机的lan口用网线连接, PC接镜像交换机的镜像口。4、wireshark软件:用于抓包;这样就可以抓取 通过B的路由器的所有数据包了...

2021-02-23 17:22:55 5079

原创 【软件使用心得】vscode快捷键

主命令窗口查找:查找文件窗口,Ctrl+P 搜索变量或者函数(跳转到symbol),Ctrl+Shift+O 跳转到行数,Ctrl + G代码编辑:代码行缩进,Ctrl + [,Ctrl + ] 代码格式化,Alt + Shift + F或者先Ctrl+Shift+P后输入Format Document 上下移动一行Alt + Up,Alt + Down 向上向下复制一行,Alt + Shift + Up或者Alt + Shift +Down 在当前行下面插入一行Ctrl...

2021-02-23 10:27:29 205 1

转载 【低功耗蓝牙BLE】连接事件和相关参数

低功耗蓝牙连接相关的知识1、连接事件在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待150μs再发送。连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为1.25ms的整数倍。要确定从设备与主设备的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多少个连...

2021-01-27 17:08:58 1025

原创 【C语言】开发常用回调函数举例

开发常用回调函数:开发过程中,如果自己的sdk需要提供外部接口,并且需要提供事件通知给用户,我常用的是注册一个事件回调; 就用ota来举个例子,需要在ota开始的时候和结束的时候给用户一个事件。1、 首先,开发者需要提供注册回调函数的接口;a) 定义结构体Enum{ OTA_START, OTA_FINISH,}Event_id;b) 定义回调函数 void (*ota_event_callback)( Event_id event_id,void *data);c) 定义调用体 ,.

2020-12-02 15:38:43 453

原创 【工作记录】工作中需要用到的一些很方便的软件

1、软件开发过程中,经常需要画流程图,所以我找了几个好用的流程图软件,1、visio(这就不说了,大家都知道),2、mindmaster(思维导图,还挺好用)2、看代码,我经常用source insight ,这个网上下载一个,再弄个破解工具,很简单的就装好了。3、对比文档软件,beyond compare :这个比对软件挺好用,二进制也可以比,爽。4、ios软件安装工具:爱思助手。这个百度一下,按教程使用就好。5、测试使用demo代码的小工具(我主要用C),dev-c++:挺小的软件,开源

2020-11-13 10:33:18 249 1

原创 【书写makefile】相关符号介绍

本文将介绍一下几种符号:$、=、+=、?=、:=、makefile中,$的意思是取变量的意思,比如,a=4; 那么在后面的语句中,$a 就代表的是取a的值。如果给a定义的是个宏比如 a=FILE_PATH 则后面使用$a的时候意思就是 取FILE_PATH的值。=:意思 就是简单赋值。+=:意思就是添加等号后面的值:=:意思是覆盖之前的值?=:意思就是如果没有被赋值过,就赋值等号后面的值...

2020-11-10 11:32:51 916 1

原创 【操作系统】嵌入式开发系统的中断

我的理解是,中断是这样的:(如果有错误,请帮忙指出,thanks)【本文仅作自己的记录,不作为分享】1、各个硬件模块注册到主程序的一个中断函数,该注册函数有个参数是中断处理程序。2、一旦硬件模块调用中断函数以后,中断处理程序会开始运行,传入相应的参数,完成一次中断响应。3、响应完成以后就退出该函数,也会返回到之前的系统运行状态。4、不过,在运行中断以前,响应的寄存器数据会被保存下来,以便中断完成以后可以很快恢复。...

2020-10-27 21:23:49 443

原创 【C语言】字符串转为十六进制(str_to_hex)

近日在开发过程中,遇到一个问题。将字符串转为十六进制,利用snprintf转换str的格式。下面贴上代码实现。#include <stdio.h>void test_printf5(char *str,int length){ int iii; printf("the str is:"); for(iii= 0;iii <length;iii++) { printf("%02x ",str[iii]); } printf("\n");} /*str

2020-09-28 16:47:07 21218 2

原创 【git】git日常用法小记

1、未add撤销修改,git checkout +文件名称或者. (撤销某文件本次修改或者撤销所有文件的修改)2、返回到某个节点 (1)不保留修改: git reset --hard +commit id (2)保留修改:git reset --soft +commit id3、提交本地到远程:git push origin HEAD:refs/for/分支名4、新提交的内容添加到上次提交中: (1)git commit –amend 会编辑提交记录(...

2020-09-28 10:18:32 120

原创 【C语言】指针的指针浅析代码示例

char *p =NULL;main{fun(*p);}fun(**p){ //在其中malloc p ,才能在外面main中拿到p。}

2020-08-19 18:03:12 185

转载 【操作系统】中断和轮询的异同点

中断的基本概念程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。二、80x86微处理器的中断80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。中断的一般过程:..

2020-06-08 16:26:14 2154

原创 打印short、long、long long和unsigned类型

打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。如果系统中int和long的大小相同,使用%d就行。但是,这样的程序被移植到其他系统(int和long类型的大小不同)中会无法正常工作。在x和o前面可以使用l前缀,%lx表示以十六进制格式打印long类型整数,%lo表示以八进制格式打印long类型整数。注意,虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。 C语言有多种printf()格式。对于...

2020-05-20 16:53:15 4372

原创 【C语言】字符的大小写转换

大小写转换原理:根据ascii值来对字符进行大小写转换。每个字符在计算机存储中都是转换成ascii码值。然后再转换为0和1;函数方法://小写转大写int toupper(int c) { if(c >= 'a' && c <= 'z') return c + 'A' - 'a'; return c;}int tolowe...

2020-04-28 16:27:32 1467

转载 【C语言】柔性数组----可变长度的数组

1、什么是柔性数组?柔性数组既数组大小待定的数组, C语言中结构体的最后一个元素可以是大小未知的数组,也就是所谓的0长度,所以我们可以用结构体来创建柔性数组。2、柔性数组有什么用途 ?它的主要用途是为了满足需要变长度的结构体,为了解决使用数组时内存的冗余和数组的越界问题。3、用法:在一个结构体的最后 ,申明一个长度为空的数组,就可以使得这个结构体是可变长的。对于编译器来说,此时长度...

2020-04-24 15:43:45 1176 1

转载 【嵌入式操作系统】FreeRTOS信号量mutex和semaphore的区别

今天学习信号量mutex和semaphore的区别,找到了正点原子的博客介绍,讲的挺详细的。建议大家阅读转载自:https://blog.csdn.net/nippon1218/article/details/790391971 二值信号量1.1 二值信号量简介二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别,互斥信号量拥有...

2020-04-23 10:55:19 4654

原创 【C语言】指针初始化问题

在C语言中。指针初始化通常同 char *str = NULL.而不能写成 char *str.。如果使用第一种,是正确的。因为NULL是被C库宏定义过的。 #define NULL (void*)0 所以赋值以后 这个指针实际是指向0的;也就是NULL 是“零值、等于零”的意思,所以在使用的时候不会出现空指针的问题。如果是第二种。可以这样写。但是必须malloc。如果后面你没有ma...

2020-04-17 17:49:32 413

原创 【C语言】项目开发,小细节总结

u16->u8* 取地址,强转。 u8->u16 atoi int atoi(char *str); 类函数宏定义 例如/ #define set_num (a,15) a=15 在打印的时候,控制log级别,可以给封装的printf传入级别。 然后用宏控制打印。方便调试。 使用宏串联结构体数据赋值 #define COMMOND(NAME) ...

2020-04-17 16:03:19 489

打开一个文件,把它的内容输出到另一个文件中.

打开一个文件,把它的内容输出到另一个文件中. 使用文件 I/O

2018-06-06

sql server 2008 jdbc jar 包

sql server 2008 jdbc jar 包,可以有此工具去链接数据库

2018-04-10

空空如也

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

TA关注的人

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