- 博客(22)
- 资源 (8)
- 收藏
- 关注
原创 嵌入式软件笔试基础
前言:面试中,有些公司会先有笔试,有些同学没温习,很容易忘记写不出了。下面总结一下(个人笔试经验)重中之重:熟悉自己所做过的项目。笔试基础:1、(void (*)( )) ,是一个返回值为void,参数为空的函数指针原型。题目:C语言跳转到指定地址执行?如跳转到0x100000这个地址执行。Uint32 addr = 0x100000;static void (*p)(void); //定义一个函数指针//将制定地址强制转换为不带参数不带返回值的值函数指针。p= (void (*)(void
2022-02-11 14:43:12 651
原创 freeRTOS
打印系统任务的一些信息//打印系统运行的任务信息void pritf_sysState(void){ UINT32 TotalRunTime; UBaseType_t ArraySize,x; TaskStatus_t *StatusArray; KEY_DEBUG(" "); KEY_DEBUG("/**************************pritf_sysState***************************/"); ArraySize = uxTaskGet
2021-09-27 10:18:18 252 1
原创 蓝牙连接过程
蓝牙连接过程详细解析概要说明:1、advertiser广播者通过37/38/39信道以 t 时间周期发送广播信号。observer观察者也通过对37/38/39信道进行扫描,如果在同一通道进行发送和扫描,则射频窗口匹配上了。后面就进行建立连接的过程。广播者发送广播信号如下图:射频窗口匹配成功如下图:匹配成功是概率性的,时间可能很快,可能有点长2、建立连接过程如下图:T_IFS时间为150us.手机在收到A1广播包ADV_IND后,以此为初始锚点(这个锚点不是连接的锚点),T_IFS时间
2021-04-21 13:57:55 2294
原创 进程、线程、进程间通信
进程:1、什么是进程?进程是一段程序运行的活动过程。进程是系统资源调度的基本单元。2、怎么创建,怎么用?#include <stdio.h>#include <sys/type.h>#include <unistd.h>int main(void){ int pid = fork(); if(pid < 0) { perror("fork erron"); } else if(pid == 0) { printf("this is
2021-02-05 10:59:20 193
原创 网络经典问题
1、TCP连接为啥要“三次握手”,二次可以?四次可以?TCP断开为啥要”四次分手“,二次可以?三次可以?要搞清楚这个问题,必须要清楚三次握手握的是啥。其实握手握的是序列号。第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等 待服务器的确认;(SYN包)第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Seq
2021-02-02 15:00:23 198 1
原创 大白话通俗易懂CRC检验
CRC校验CRC校验及相关算法代码crc校验的描述:1.CRC校验原理CRC校验的原理的难易暂不评价,毕竟会者不难,难者不会么。CRC校验的根本思想是在要发送的帧之后附加一个数(CRC校验值),生成一个新帧,然后发送给接收端。当然,这个附加的数并不是随意的,他要使新生成的帧能在发送端和接收端选定的某个特定的数整除。当然,这个特定的数和整除的方法也不是随意的,特定的数是经过多次论证选定的一些列数,这在之后会述说,整除的方法是模2除法。模2除法(crc原理最核心的思想)模2除法与算术除法类似
2020-10-20 20:03:48 3422
原创 ARM——I.MX6UL开发流程
1、ARM您得知道的那些事前言:这些事对你的编程或许没有太大的帮助,甚至没有帮助,但是了解它,知道它的怎么过来的,怎么成为嵌入式领域中世界的龙头老大的,它的家族是怎么样的,对你整体的认识会有很大的帮助。1.1、ARM公司 ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine,但是有些又说全称是Acorn RISC Machine。 1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris
2020-07-15 11:39:16 1329
原创 C语言中volatile关键字,简单说明
C语言中volatile关键字如:#define GPIO1_DR *( (volatile unsigned int *)0x0209C000) //数据寄存器 每一位代表一个GPIO的0或1一句话:使用volatile修饰后,会强制你每次引用GPIO寄存器对应的变量时都会去它的寄存器里面读,强制访问内存中的值,而不是缓存中的,防止编译器优化,volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化。具
2020-07-14 09:57:59 302
原创 LWIP零散笔记
1、OSI模型与TCP/IP模型冯诺依曼结构它是一种将程序指令存储器和数据存储器统一组织的存储器结构。哈弗结构哈弗结构是一种将程序指令和数据分开存储的组织结构。...
2020-03-09 10:00:50 146
原创 STM32零散笔记
1、内存a RAM:随机存取存储器(电源关闭,数据掉失,读取数据远远快于flash) ROM:只读存储器 Flash:电源关闭数据保留; EEPROM:电子可擦除可编程; Nand Flash: NAND Flash 在嵌入式系统中的地位与PC机上的硬盘是类似的。用于保存系统运行所必需的操作系统,应用程序,用户数据,运行过程中产生的各类数据,系统掉电后数据不会丢失。持续更新中...
2020-03-04 16:39:23 181
原创 STM32-ADC和DMA一起采集时间
系统时钟72M时,DMA搬运数据大小为 u16 data[20]: ADC获得最大时钟分频为12M;通道数28.5采样周期(us)166320310681系统时钟56M时,DMA搬运数据大小 u16 data[20]: ADC获得最大时钟分频为14M;通道数28.5采样周期(us)144313510453...
2020-02-27 14:44:37 902
原创 基于NETCONN编程接口实现LWIP—netconn简介
前言使用lwip时可以裸机跑(RAW编程接口),也可以系统跑(NETCONN或SCOKET编程接口);1、移植修改说明1.1 修改 cc.h 文件(暂时不懂) 在 LWIP 中支持针对关键代码的保护,比如申请内存等,而我们知道在 UCOS II 有临界区保护,因此我们就可以使用 UCOS II 中的临界区保护函数。在 cc.h 问文件中我们使用了宏定义来实现这一功能,代码如下所示://...
2020-01-07 10:06:12 1783
原创 基于STM32F107xx中以太网ETH实现LWIP功能
前言在需要使用lwip以太网功能时,可以选择ST支持以太网互联型芯片,如107或105;当然也可以选择103 + 网卡驱动芯片(如:ENC28J60、DM9000等);该文章只介绍107芯片中以太网ETH模块的配置过程;ETH框图STM32F107xx支持以太网模块的面纱就是这样,那么我们该如何配置里面的PHY、MAC和以太网专用的DMA以实现底层的配置呢?容许我慢慢道来。1、网卡结...
2020-01-06 13:42:37 4099 2
原创 LWIP网络实验—RAW_TCP
本章对于TCP协议的内容不做过多的说明,具体TCP协议内容请看我博客发的TCP部分内容解析;TCP客户端TCP层函数关系图:这些函数都是系统编写好的函数,用户只需编写数据收发的回调函数;设计逻辑图:各函数体内容请看源码TCP数据收发注意:在TCP连接时,需要注册数据收发的回调函数(用户编写);数据收发时使用的结构体://tcp服务器连接状态enum tcp_client_s...
2019-12-31 14:35:38 2847
原创 电池电量检测方法-库仑计-基于LTC2941
1. 电池电量格数的定义:一般手机设计待机电量时, 比如有**4格5档(4-3-2-1-0)**的电量指示。 由于要考虑到电池使用一段时间(比如1年)后, 其放电平台会降低,上述的比例肯定会失调。 所以需要考虑一点点这方面的余量.以新电池的60%-40%-20%-5%这样的比例进行设计。 4.20V~3.90V满格 3.90V~3.80V三格 3.80V~3.72V两格 ...
2019-12-30 11:45:52 24727 4
原创 LWIP网络实验—RAW_UDP
编程接口 LWIP有3种编程接口,分别为:RAW、NETCONN和SOCKET RAW:RAW编程接口不需要操作系统的支持,可以直接裸机使用LWIP,但是RAW编程接口比较复杂!RAW使用的是回调机制,需要大家了解回调函数。 NETCONN和SOCKET:这两种编程接口都需要有操作系统的支持,否则的话没法使用,但是这两种接口使用起来比较简单。 至于究竟使用哪一个就看自己的需求...
2019-12-18 18:18:30 1485
原创 LWIP网络接口管理(接口层)
网络接口简介TCP/IP参考模型中网络分为4层:应用层、传输层、网络层和网络接口层。网络接口层就对应着我们实际的网卡,LWIP支持多网口设计,LWIP中使用netif来描述每种网络接口的特性,如接口的IP地址、接口状态等等netif网口结构体网络接口结构体中重要的一些字段;(以下只列出部分字段)/*————————————————————————————————————网口描述——————...
2019-12-17 16:24:49 265
原创 LWIP数据包管理(pbuf)
pbuf结构struct pbuf *pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type);u8_t pbuf_free(struct pbuf *p);LWIP是TCP/IP协议栈的一种具体实现,本质就是对数据包的处理,在LWIP中使用一个被称为pbuf的结构管理数据LWIP源码中的pbuf.c和pbuf.h这两个文件就是关于pbuf...
2019-12-17 14:08:06 806
原创 C语言三剑客—零散笔记
C语言三剑客——C专家编程学习笔记欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全...
2019-12-01 12:26:25 1054
LTC2941库仑计.zh-CN.docx
2019-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人