自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 c++: when excute global class object‘s constructor function

【代码】c++: when excute global class object‘s constructor function。

2024-09-20 21:45:21 199

原创 c++: understand reference from disassemble

【代码】c++: understand reference from disassemble。

2024-09-20 20:58:50 86

原创 Bluetooth: get something from eir

【代码】Bluetooth: get something from eir。

2024-09-15 20:46:06 203

原创 Bluetooth: get something from ble adv

【代码】Bluetooth: get cod from ble adv。

2024-09-15 18:22:13 409

原创 Bluetooth: gatt server example 解读

在 core spec 中有 Example ATT Server contents,这里对此进行解读;Assigned_Numbers.pdf 需要提前准备,可以从 SIG 下载;

2024-08-31 20:57:11 413

原创 Bluetooth: gatt profile

Gatt 主要是描述了attribute的排列方式;

2024-08-31 20:06:24 196

原创 Bluetooth: att protocol

bluetooth ble gatt att

2024-08-31 14:33:07 521

原创 Bluetooth: EDR: inquiry scan

Interval and WindowType

2024-08-14 21:03:17 211

原创 Bluetooth: EDR: inquiry

Config Inquiry ModeStart InquiryStop InquiryInquiry Event for mode = 0Inquiry Event for mode = 1Inquiry Event for mode = 2Inquiry Complete Event

2024-08-14 20:05:56 215

原创 System: uart program

【代码】System: uart program。

2024-08-09 18:45:13 121

原创 Blueotooth: SnoopLogger

【代码】Blueotooth: SnoopLogger。

2024-08-09 18:31:32 100

原创 System: Simple Beautiful Protection lock_guard

【代码】System: Simple Beautiful Protection lock_guard。

2024-08-06 12:10:47 209

原创 System: Thread

【代码】System: Thread。

2024-08-06 10:39:34 256

原创 System: FixQueue

【代码】System: FixQueue。

2024-08-06 10:31:32 182

原创 System: reactor

【代码】System: reactor。

2024-08-06 10:14:06 279

原创 System: List

【代码】System: List。

2024-08-05 12:36:40 292

原创 System: Semaphore

【代码】System: Semaphore。

2024-08-05 11:13:28 158

原创 System: allocation_tracker

【代码】System: allocation_tracker。

2024-08-03 18:46:53 208 1

原创 System: What is Ringbuffer

ringbuffer

2024-08-03 18:06:44 215

原创 Bluetooth:关于计算2-EV3的实际传输时间

假设这个eSCO 包的信息如下:2-EV3,payload是60Byte,那么这个包实际传输时间是多少呢我们知道EDR 的封包格式:Access code + HEADER + GUARD + SYNC + PAYLOAD + TAILERaccess code是72bit ,HEADER 是 54bit,这两部分是按照basic rate进行传输的,即1Mb...

2020-03-12 15:23:18 673

原创 Bluetooth:为什么packet header length是54bit

因为packet header是由如下组成:LT_ADDR(3bit) + TYPE(4bit) + FLOW(1bit) + ARQN(1bit) + SEQN(1bit) + HEC(8bit) = 18bit;这18bit 在经过 1/3 FEC后变成 54bit;

2020-03-11 21:30:11 337

原创 Bluetooth:access code的重要性

有三种AC,分别是DAC、IAC、CAC。DAC : device access code,被用在page 、page scan 、page response等过程,是从paged device 地址的LAP继承而来。IAC : inqiuiry access code,被用在inquiry过程,是从64个IACs(GIAC是0x9E8B33)继承而来。CAC : channel...

2020-03-11 18:19:17 1789

原创 我对M4A文件格式的理解

m4a 格式文件中的内容是有很多的box 组成的,box 格式如下:box length(4B 大端格式) + box type(4B)+ box content(box length - 8)例如如下是ftyp这个box 的数据内容,可以看到该box 长度是0x20字节。从m4a文件中找到moov box是重点,因为找到了这个box ,需要从box 找出来每个采样帧的位置及...

2020-03-11 11:32:43 4381

原创 苹果蓝牙日志如何获取

参考链接:https://wenku.baidu.com/view/58b10e7b27284b73f242509b.html从中取出来对自己比较有用的部分。SDIO通信接口中有一根clock线,该clock上输出的频率是可配置的。对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,device会将数据放在4...

2019-11-09 10:37:42 4879 1

原创 USB:一直不知其所以然的USB

后续更新;

2019-11-08 18:45:02 122

原创 STM32F411RE-0020-认识某些汇编指令的意图

LDR R0,[R1,#0x08]---》读取存储器地址为R1+8的内容到R0中;LDR R0,[R1,#0x08]!---》读取存储器地址为R1+8的内容到R0中,然后R1=R1+8;LDR R0,[R1],#0x08---》读取存储器地址为R1的内容到R0中,然后R1=R1+8;STR和LDR类似;LDR R0,=0x2000000LDRIA R0,...

2019-11-06 12:22:03 1067

原创 BT-用一个测试用例来理解蓝牙BQB PTS认证测试的过程

关于准备PTS dongle和PTS PC 工具,这里不做介绍。这里以TC_MOD_NDIS_BV_01_C测试用例来介绍。这个测试项内容:确认待测设备当处在不可见模式时,不会响应PTS dougle的搜索操作,即认为测试PASS。可以通过GAP log看到一些详细的测试过程,该log是在点击测试项的Run(debug logs)就会自动产生出来。除了该log,可以通过blueto...

2019-11-05 18:23:00 3435

原创 STM32F411RE-0019-外部中断是如何进行配置的

SYSCFG_EXTICR1~4这四个寄存器可以选择外部中断的pin。有23个EXTI,分别是EXTI0~22;对于EXIT0~15对应到各个GPIO组的16个PIN;EXTI line 16 is connected to the PVD outputEXTI line 17 is connected to the RTC Alarm eventEXTI line ...

2019-11-01 14:06:24 618

原创 STM32F411RE-0018-对GPIO的控制原理

GPIO寄存器可以控制多组GPIO(A~H),每一组多达16个GPIO口。配置寄存器有GPIOx_MODER:配置输入、输出、复用、模拟;GPIOx_OTYPER:配置输出类型是开漏还是推挽;GPIOx_OSPEEDR:配置输出速度是低速、中速、快速、高速;GPIOx_PUPDR:配置上下拉是没有上下拉、上拉、下拉;GPIOx_IDR:读取输入;GPIOx_ODR:输出...

2019-11-01 12:16:09 642

原创 STM32F411RE-0017-深入了解异常处理

当异常中断来时,通常会先将R0~R3、R12、LR、PC、xPSR这8个寄存器压入栈中。取出异常向量表地址;更新NVIC寄存器、xPSR、LR、PC、SP;举例,我们在某个中断入口做一个断点。可以看到R0~R3、R12和下面绿色全出来的是对应起来的。从上面的LR为0xfffffff9可能很多人感觉很奇怪,下面会对此做个详细介绍。...

2019-10-30 20:41:40 445

原创 STM32F411RE-0016-需要对寄存器有一些了解

普通寄存器接触的比较多,比较好理解,不多做解释R0~R12R13称为栈指针寄存器,对应到两个物理寄存器MSP/PSP;R14称为LR寄存器,用来指示返回地址;R15称为PC寄存器;特殊寄存器xPSR称为程序状态寄存器,由APSR+EPSR+IPSR组成;PRIMASK寄存器只有一个bit位,置位会屏蔽除了NMI+HardFault以外的异常中断;FAULTMASK...

2019-10-30 17:45:36 815

原创 STM32F411RE-0015-关于clock的知识储备

这里有一张clock tree,非常详细,从这个图中就可以知道clock之间的继承关系。system clock可以通过RCC_CFGR寄存器的SW[0:1]来选择是用HSI、HSE、PLL的哪个source;AHB clock 可以通过RCC_CFGR寄存器的HPRE[0:3]设定分频(1 2 4 8 16 64 128 256 512),是从system clock分频出来的;...

2019-10-30 13:30:47 328

原创 STM32F411RE-0014-了解system tick interrupt

通过code可以了解是如何设置的1ms的系统滴答中断。例如假设AHB clock是16M=16000000,那么一个clock时间就是1/16000000,那么1ms是多少个clock呢,是16000个clock。如何进行编程呢,这里也是有相关的建议编程顺序。__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){ if...

2019-10-30 11:14:38 311

原创 STM32F411RE-0013-对电平触发中断和边沿触发中断的理解

以高电平触发和上升沿触发的两种中断说明。当高电平时,产生中断,进入ISR,处理完之后,如果仍然还有高电平,会继续进入ISR。上升沿出发,为了能够让NVIC可以检测到这个中断,对该上升沿的时隙也是有要求的,例如至少保持1个cpu clock;...

2019-10-30 10:47:15 1741

原创 STM32F411RE-0012-中断控制优先级

AIRCR寄存器是SCB里重要的寄存器,而PRIGROUP又是AIRCR中的重点。因为他规定了后面中断优先级的分组性。可以从code中看到也是有对应上面表格中的PRIGROUP的5个level;#define NVIC_PRIORITYGROUP_0 0x00000007U /*!< 0 bits for pre-emption priority ...

2019-10-30 10:36:53 389

原创 STM32F411RE-0011-分析startup_stm32f411xe.s做了什么事情

设定栈指针Reset_Handler: ldr sp, =_estack /* set stack pointer */程序中有定义一些赋初值的变量,在编译的时候,会规定好这些变量在ram中的地址,以及这些变量的初值存在flash中的哪里。有这些信息,就是为了将ram中编译器为这些变量预订好的地址的地方,填充好他们各自的初值。/* Copy the da...

2019-10-29 21:44:38 1153

原创 STM32F411RE-0010-结合map文件分析连接脚本

下面是定义好对于STM32F411RE这个芯片的flash和ram的地址和大小设定。/* Specify the memory areas */MEMORY{FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512KRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K}下面可以看到有将....

2019-10-29 21:09:53 638

原创 STM32F411RE-0009-如何设置调试程序的入口停止点

在STM32CubeIDE,通过菜单Run-》Debug configuration这里默认是设置在main入口。如果要修改在汇编的Reset_Handler就可以将这里的main修改成Reset_Handler。下面是调试开始后停止的地方就是我们前面配置的地方。...

2019-10-29 20:33:44 441

原创 STM32F411RE-0008-认真理解编译过程,对后续开发极有益处

点击project->properties,会看到如下:最重要的就是这里的红色标注的部分,其中绿色标识的是重点。在这里有对汇编、C的编译选项配置,包含路径,宏定义,连接器的选项配置,以及postbuild的输出配置。Logging下面可以配置编译过程的log输出到哪里,这个还是比较有用的,当然在IDE上也有编译过程的log输出到console窗口。一旦遇到build erro...

2019-10-29 19:51:40 519

原创 STM32F411RE-0007-学习代码的第一个脚印

在已经安装了STM32CubeIDE环境之后,后面的操作基本都可以在这个IDE中进行了。可以此时连SDK都还没有拿到呢,别着急,这个IDE会帮你搞定。选择File-》New-》STM32 Project;此时会打开一个对话框,让你选择你的开发目标平台。为你的project起一个名字,点击next;下面就会选择要下载的SDK;这样就已经将这个工程建立完成了,后面可...

2019-10-29 17:55:15 450

空空如也

空空如也

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

TA关注的人

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