- 博客(13)
- 收藏
- 关注
原创 蓝牙学习---GATT初始化
GATT 称为通用属性规范 Generic Attribute profile,GATT 层是传输真正数据所在的层。GATT 程序模块的作用是用于协商和跟踪 GATT 连接参数和更新数据长度,在 BLE 程序中,初始化 GATT 程序模块只需调用库函数 nrf_ble_gatt_init ()即可完成初始化。
2023-12-24 20:06:33 463 1
原创 蓝牙学习---GAP
这个讲述了GAP的一些参数和初始化, GAP 实际上定义了蓝牙设备的基本需·求,包括广播功能、广播名称设置、连接加密等级等功能。
2023-12-24 12:24:45 1347 1
原创 蓝牙学习--广播(nRF52832)
advdata设置广播时的名称显示蓝牙广播设备类型广播模式配置配置再来看&confing 选择项,confing 为 ble_adv_modes_config_t 结构体应用程序在广播初始化的时候需要注册广播事件处理函数,用于接收广播事件,广播事件处理函数的格式如下,函数的名称必须和注册的名称一样。蓝牙工程中,这个回调函数里必须有的部分。其中 ble_advertising_on_ble_evt(p_ble_evt)蓝牙广播蓝牙事件回调函数是主要作用。
2023-12-20 22:07:13 2088 1
原创 蓝牙学习--APP定时器(nRF52832)
APP 定时器基于实时计数器 RTC1 的软件定时器,我们看到 RTC,首先想到的是用来记录时间的实时时钟,但是要注意,nRF52832 的 RTC并不是指实时时钟,我们不能通过 nRF52832 的 RTC 直接获取时间信息,nRF52832 的 RTC指的是对振荡源脉冲进行计数的实时计数器。SDK 中的 APP 定时器是使用 RTC1 作为时基来实现的。
2023-12-18 22:05:07 970 1
原创 蓝牙学习---日志打印(nRF52832)
在我们的嵌入式开发中,日志打印是必不可少的,谁也不可能保证一次写出来的程序是万无一失的,有时候的代码运行达不到我们要的效果,这个时候就需要我们的日志打印了。开发板上程序在运行过程中,会将一些信息打印到日志,通过这些信息,我们可以知道模块加载的情况。我们可以在配置文件中更改是我们的RTT日志打印还是我们的uart打印,在我们的nRF52832的SDK中,日志开关在"sdk_config.h"文件中。可以通过Jlink-RTT打印,也可以通过串口打印。这是我们通过串口打印的。需要我们引入的头文件。
2023-12-17 18:40:02 558 1
原创 蓝牙低功耗(BLE)
蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。它有几个特点:1.低成本,低功耗。2.快速启动,瞬间连接。最快3ms延迟。3.传输距离的提升。4.高安全性。
2023-12-17 17:51:53 1059 1
原创 滚动数组--斐波那契数列
刷力扣的时候,我刷到爬楼梯的简单题,虽然是简单题,但是我了解到滚动数组,因为我也是小白嘛,就去学习了一下这个思想,主要是用到有规律的局部新的信息和反馈。虽然可以用递归,但是浪费了大量的程序空间和时间,不如滚动算法。例子:求第n个位置的斐波那契数。
2023-11-29 23:56:56 393 1
原创 FOC学习笔记——闭环速度
编码器是怎么获得我们的转速的,首先速度的获取也是基于角度的获取的。我今天编写并验证了在arduino上的无刷电机闭环速度代码能否在我的无刷电机上跑的起来,其中的知识点和碰到的问题用笔记的形式保存下来,防止以后会忘记。最后一点就是它的速度低通滤波,在调试过程中,当电机速度低的时候,电机会发出噪声,这时候就要用到我们的低通滤波了,可以通过调试我们的低通滤波可以改善这种情况。这是通过IIC去读的角度值。速度闭环和位置闭环的最大区别就是,位置闭环的编码器的反馈量返回的是角度,而速度闭环的编码器反馈量是速度。
2023-11-21 22:36:49 749
原创 数据结构-循环队列
因为其特殊性,在没用链表队列的情况下,也就是顺序存储,用两个变量来记录队列头和队列尾,一端记录出列(front),一端记录入列(rear),正常情况下它的数据长度会在front的更新下不断变小,当队列已满的情况下,rear指向的位置也不能在更新了。当队列满时,保留一个元素空间,也就是队列虽然还剩下最后一个空闲单元,但也是满的。这时候,又有一个问题了,怎么判断队列空和队列满,因为队列满和队列空front和rear在同一个位置,这就使我们不知道队列是空还是满了,所以我们怎么判断队列是空还是满呢?
2023-06-27 19:34:37 245 1
原创 栈的链式存储
栈的链式存储结构简称链栈,栈是先进后出的数据结构,说白了,栈只是对栈顶进行插入和删除操作,作为栈的链式结构,肯定是单链表,而单链表又有头结点,为什么不把栈顶指针和单链表的头结点结合一下,用栈顶来当单链表的头结点,总而言之,链栈是不需要头结点,用栈顶就OK了。因为是链式结构,不存在栈满的情况,除非内存已经没有使用的空间了,如果真到那时候,就先不要考虑栈满的情况了,先管管计算机吧。只要理解这个,其他与单链表没啥大的区别,下面是整个代码。稍微的画一下图,画的不好,将就的还能看。
2023-06-25 19:31:31 157
原创 两个有序链表的合并
可以定义两个指针指向这两个链表,并把这两个指针指向的数据进行比较,小的那个结点放在第三个链表后面,并把这个指针向后移动 ,直到最后,但是我们还要想到一个问题,最后的结点是谁的尾结点,谁的指针先指到空,第三个链表的尾结点就是相反的的链表的尾结点,意思是p指向链表1,q指向链表2,如果最后p是空,则链表3的尾结点就是链表2的尾结点。第二个链表存放的是2,4,6,8,10。两个链表合并成一个链表,可以新创一个头结点把这两个链表的数据依次放在这个头结点的后面,两个有序链表的合并为一个有序链表。
2023-04-23 16:12:34 1482 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人