- 博客(54)
- 资源 (6)
- 收藏
- 关注
原创 esp32墨水屏学习3
是 ESP32 中用于标记 “深度睡眠保留变量” 的宏,通过将变量存储在 RTC 供电的内存段(.rtc.data)中,确保其值在深度睡眠后不丢失,常用于保存设备状态、计数器等需要跨睡眠周期保留的信息。这段代码是 ESP32 中用于按键中断服务程序(ISR)的函数,主要功能是在按键状态变化时快速处理按键事件,结合OneButton库实现单击、双击、长按等复杂按键逻辑的检测。
2025-09-26 22:18:12
1083
原创 esp32墨水屏天气预测学习
OneButton库通过有限状态机和时间阈值,优雅地解决了按钮交互中的防抖、事件区分(单击 / 双击 / 长按等)问题。用户只需注册回调函数并在主循环中调用tick方法,即可轻松处理复杂的按钮交互,无需关心底层状态逻辑。该库广泛应用于需要按钮输入的嵌入式项目(如智能家居控制面板、手持设备等),简化了代码复杂度,提高了交互可靠性。_pin = -1;src/main.cppsrc/main.cpp这段代码是OneButton类的默认构造函数,用于初始化OneButton。
2025-09-21 22:58:01
609
原创 蓝牙墨水屏上位机学习(2)
是蓝牙低功耗(BLE)技术中的核心通信协议,定义了设备间如何组织和交换数据。存储数据(以特征和服务的形式组织)响应客户端的数据请求主动向客户端发送数据更新GATT 服务器是蓝牙设备通信的核心组件,通过服务、特征和描述符的层次结构组织数据。在 OTA 升级中,GATT 服务器负责接收固件数据、执行升级过程并反馈状态,确保整个过程的可靠性和安全性。理解 GATT 服务器的工作原理对于开发蓝牙应用和实现 OTA 功能至关重要。
2025-07-05 14:46:49
1158
原创 nrf52840蓝牙学习(gpio.h)
这段代码是 Nordic Semiconductor 为 nRF52 系列芯片设计的 GPIO 硬件抽象层(HAL),提供了对通用输入输出端口的配置和操作接口。版权与许可声明头文件保护与条件编译GPIO 配置相关的枚举类型定义GPIO 操作函数声明(内联函数)函数的内联实现C++ 兼容性处理代码定义了多个枚举类型,用于配置 GPIO 引脚的各种属性:c运行NRF_GPIO_PIN_DIR_INPUT = GPIO_PIN_CNF_DIR_Input, ///< 输入模式。
2025-07-02 22:59:33
621
原创 nrf52811学习-加密与解密
这段代码实现了 TEA(Tiny Encryption Algorithm,微型加密算法)的加解密功能。TEA 是一种分组加密算法,由剑桥大学的 David Wheeler 和 Roger Needham 于 1994 年设计,特点是结构简单、代码量小,适合资源受限的环境。若需实际应用,建议使用增强版本的 TEA 算法(如 XTEA),或迁移至更安全的现代加密算法(如 AES)。通过理解这段代码,可以深入掌握分组加密算法的核心思想(如迭代、扩散、混淆),为学习更复杂的加密算法奠定基础。
2025-07-01 21:40:16
984
原创 16、nrf52840蓝牙学习(唯一ID加密与解密)
功能:启用串口回环测试模式使用方法:取消注释该行即可启用回环测试工作原理将 TX 引脚与 RX 引脚物理连接发送的数据会被立即回收到接收缓冲区用于验证 UART 硬件和驱动是否正常工作作用:定义测试时最大发送 / 接收数据字节数典型应用场景i++) {FIFO 缓冲区作用发送缓冲区:暂存待发送的数据,避免 CPU 等待串口发送完成接收缓冲区:暂存接收到的数据,防止数据丢失参数调整建议高速通信场景 (如 115200bps 以上):增大缓冲区。
2025-06-24 22:27:55
994
原创 nrf52811墨水屏edp_service.c文件学习
on_connect函数是蓝牙低功耗 (BLE) 事件处理的核心部分,主要在设备成功建立蓝牙连接时被触发。其核心功能是管理连接句柄并初始化电子纸显示屏 (EPD) 的 GPIO 引脚配置。ble_evt_t是蓝牙低功耗 (BLE) 协议栈中用于表示各类事件的核心数据结构。它采用 "事件头 + 事件联合体" 的设计模式,能够高效处理不同类型的 BLE 事件,同时保持内存占用的最小化。/**< 事件头,包含事件类型标识等公共信息 */union/**< 通用事件,事件ID属于BLE_EVT_*系列 */
2025-06-15 22:38:25
957
原创 纯小白对大佬tsl0092的nrf52811墨水屏时钟全刷改局刷的探索
/ 扩展显示模式定义,新增局刷时钟模式MODE_CLOCK_PARTIAL = 3 // 新增:局刷时钟模式// 在ble_epd_t结构体中添加局刷标志// 原有字段...// 显示模式// 新增:局刷启用标志// 其他字段...修改说明新增模式用于局刷时钟显示添加标志位,可动态控制是否使用局刷。
2025-06-12 07:25:22
791
1
原创 大佬tsl0092的nrf52811墨水屏4.2寸EPD_service.c文件学习
这段代码是电子纸服务的基础配置部分,通过条件编译适配不同硬件平台,利用默认配置数组初始化电子纸硬件参数,并依赖外部时间和低功耗接口实现核心功能。理解其配置逻辑是后续开发(如驱动适配、功能扩展)的关键。
2025-05-23 22:44:56
1313
原创 墨水屏nrf52811程序解读(1)
这部分代码是图形界面的基础配置,通过头文件引入必要功能,并利用宏定义封装带样式的文本输出逻辑。它为后续界面绘制(如日历、时钟、状态信息)提供了统一的文本显示接口,使代码结构更清晰、维护更便捷。在实际开发中,可结合具体显示屏尺寸和需求,进一步调整字体、颜色和布局参数。
2025-05-19 06:23:05
1014
原创 墨水屏显示模拟器程序解读
这段 C 语言代码是一个 Windows GUI 应用程序,用于模拟电子纸显示设备的界面。它支持黑白和黑白红 (BWR) 两种显示模式,并能在时钟和日历两种显示模式间切换。程序通过 Windows API 创建窗口,处理用户输入,并模拟电子纸的显示效果。主要模块与功能分析1. 全局变量与宏定义定义了显示区域和窗口的尺寸声明了窗口句柄、显示模式和时间相关变量默认显示模式为日历,默认支持 BWR (黑白红) 模式2. 位图转换函数 convertBitmap。
2025-05-18 22:23:26
1122
原创 DA14585墨水屏学习(2)
这段代码实现了一个蓝牙服务写入指示处理函数 user_svc2_wr_ind_handler,用于解析来自客户端的命令并执行相应操作。2. 定时器精度: ◦ time_offset * 100 可能是笔误,应为 time_offset * 1000(毫秒转换)。• 与日历命令类似,但调用 do_time_show() 而非 do_rili_show()◦ 未处理未知命令(首字节非 0xDD/0xAA/0x101/0xE2)的情况。一、user_svc2_wr_ind_handler函数。
2025-05-11 22:11:50
1184
原创 DA14585墨水屏学习
一、do_min_word这段代码是一个定时器回调函数,用于每分钟执行一次系统时间更新和显示刷新操作。其中:APP_PERIPHERAL_CTRL_TIMER_DELAY_MINUTES是一个宏,其定义如下 :#define APP_PERIPHERAL_CTRL_TIMER_DELAY_MINUTES 6000,这时是否少了一个0,不得而知。
2025-05-10 22:10:42
1321
原创 15、nRF52xx蓝牙学习(串口输入与回环)
(1)app_fifo_get函数 uint32_t app_fifo_get(app_fifo_t * p_fifo, uint8_t * p_byte){ if (FIFO_LENGTH() != 0) { fifo_get(p_fifo, p_byte); return NRF_SUCCESS; } return NRF_ERROR_NOT_FOUND;}//其中:app_fifo_t结构体定义如下:typedef struct{
2025-04-15 17:37:21
1142
原创 14、nRF52xx蓝牙学习(串口 UART 和 UARTE 外设应用)
为了在系统处于 OFF 关闭模式时通过 UART 确保引 脚上的信号电平正确,必须按照 GPIO 外设中的说明在 GPIO 外设中配置引脚。如果启用了流量控制,则在 CTS 取消激活时 将自动暂停传输,并在再次激活 CTS 时恢复。这样做的原因是允许 UART 将新字节写入 RXD 寄存器,在 CPU 读取(清空)RXD 寄存器后立 即生成新事件。当启用流量控制时,如果接收器 FIFO 中只有 4 个字节的空间时,UART 将禁用 RTS 信号。应用时,是可以直接用于其中配置串口功能的。
2025-04-13 09:42:16
1280
原创 破解升腾c10,改造成下载机(第二篇:获取xterm终端)
为了让开机自动启动xterm,可以按如下操作: 进入桌面,双击( 已保存的百度网站)文件夹进入文件管理页面,找到usr/bin/xfce4-session-settings,右击选择execute出现下面的界面: 点击application autostart再点add,找到term(其目录为/urs/bin/xterm)第一,二两栏随便填,第三栏按这个路径去找到xterm:/urs/bin/xterm,一路确定ok之后,重启系统,自动进入xterm终端。进入桌面,就发现已保存的百度网站!
2025-04-12 07:23:08
596
原创 破解升腾c10,改造成下载机(第一篇:刷机)
在闲鱼上花了50元买了个升腾c10的瘦客户机,经查询是的hi3716的cpu,属于armv7构架,折腾了几天,终于破解进入终端,并且安装好了aria2,准备做个下载机玩玩,从小白通过百度,能走到这一步也算不错了,其中走了无数弯路,现在回想一下,觉得有些完全是自己的习惯不好造成的!server ip一栏输入前面面记录的电脑ip,mac一栏千万不要动,那是c10的网卡物理地址,设置好后,点击ok,在后面出现的界面再点ok,c10就会重启进去升级界面。等待升级完成,就刷好了ct3100的系统了!
2025-04-12 07:16:52
1021
1
原创 13、nRF52xx蓝牙学习(GPIOTE组件方式的任务配置)
nrfx_gpiote_out_init 函数的主要作用是初始化一个 GPIO 引脚作为 GPIOTE(通用外设中断和事件)的输出引脚。• nrfx_gpiote_out_config_t const * p_config:指向 GPIO 输出配置结构体的指针,该结构体包含了引脚的各种配置信息,如是否作为任务引脚、引脚动作、初始状态等。如果通道分配成功,调用 nrf_gpiote_task_configure 函数对该通道进行配置,传入通道编号、引脚编号、引脚动作和初始状态等参数。
2025-04-11 21:00:19
1139
原创 12、nRF52XX蓝牙学习(GPIOTE任务触发LED)
与了,大大节省 mcu 的资源。本例首先简单的演示下任务是如何输出的,我们用输出端口来控制一个 LED 灯,完成我们输出的功能。把它配置为任务模式,则可以实现输出功能。任务模式的使用不是孤立的,一般都是由事件来触发。任务,如果在事件和任务中间架设一个通道,也就是后面会将的。具有任务模式,任务模式就是输出模式。,那么整个过程不需要。
2025-04-11 09:36:00
190
原创 11、nRF52XX蓝牙学习(GPIOTE PORT模式)
总结 通过 GPIOTE_CONFIG_IN_SENSE_HITOLO 宏的不同参数设置,可以灵活选择 GPIOTE 的输入事件(IN 事件)或端口事件(PORT 事件),以满足不同的应用场景需求。在实际应用中,需要根据具体的需求和资源情况选择合适的事件类型。它将一个端口内的多个引脚的电平变化作为一个整体事件来对待,无法对端口内的单个引脚进行独立的事件配置。1. 事件类型选择方式 在配置 GPIOTE 事件时,首要任务是明确选择的是单个引脚的输入事件(IN 事件),还是整个端口的事件(PORT 事件)。
2025-04-11 09:18:05
697
原创 9、nRF52xx蓝牙学习(pca10056.h学习)
若PCA10056_H这个宏未被定义,就定义它并包含后续内容;• LEDS_INV_MASK:这里使用了未定义的LEDS_MASK,可能存在错误,通常用于定义 LED 的反转掩码。• CTS_PIN_NUMBER 和 RTS_PIN_NUMBER:分别定义了串口的硬件流控制(CTS 和 RTS)引脚。• LED_1 到 LED_4:借助NRF_GPIO_PIN_MAP宏来定义每个 LED 对应的 GPIO 引脚。• RX_PIN_NUMBER 和 TX_PIN_NUMBER:分别定义了串口接收和发送引脚。
2025-04-09 15:27:21
701
原创 8、nRF52xx蓝牙学习(boards.h文件学习)
• #define LEDS_MASK (BSP_LED_0_MASK | BSP_LED_1_MASK | ... | BSP_LED_7_MASK) ◦ 功能:将所有 LED 的掩码进行按位或操作,得到所有 LED 的总掩码,用于对所有 LED 进行统一操作。7. 所有 LED 和按键的总掩码宏定义 c #define LEDS_MASK (BSP_LED_0_MASK | BSP_LED_1_MASK | ... | BSP_LED_7_MASK)
2025-04-08 22:22:19
707
原创 7、nRF52xx蓝牙学习(nrf_gpiote.c库函数学习)
NRFX_ASSERT(nrf_gpio_pin_present_check(pin)):使用断言确保传入的引脚 pin 是有效的,nrf_gpio_pin_present_check 函数用于检查该引脚是否存在于硬件中。port_handler_polarity_get(channel_port_get(pin) - GPIOTE_CH_NUM):获取该引脚对应的端口处理极性。TE_IDX_TO_EVENT_ADDR((uint32_t)channel):将通道编号转换为对应的 GPIOTE 事件地址。
2025-04-08 17:25:46
1390
原创 6、nRF52xx蓝牙学习(nrf_gpiote.c库函数学习)
◦ if (p_config->is_watcher):如果 is_watcher 标志为真,调用 nrf_gpio_cfg_watcher(pin) 函数将引脚配置为观察者模式。:标记该引脚已经被配置。◦ 如果未启用,将触发条件 p_config->sense 左移 POLARITY_FIELD_POS 位,并与 m_cb.port_handlers_pins[channel - GPIOTE_CH_NUM] 进行按位或操作,更新端口处理引脚的状态。
2025-04-08 09:42:36
830
原创 5、nRF52xx蓝牙学习(nrf_gpiote.c库函数学习)
函数不接收参数,返回值类型为nrfx_err_t,这是一个用于表示错误码的类型。定义一个nrfx_err_t类型的变量err_code.m_cb是一个静态变量,定义如下 :这段代码使用typedef关键字定义了一个名为的结构体类型。这个结构体主要用于存储和管理 Nordic Semiconductor 的 GPIO(通用输入输出)任务和事件(GPIOTE)驱动的相关配置信息和状态。
2025-04-07 09:41:10
1193
原创 4.nRF52xx蓝牙学习(GPIOTE与外部中断)
引脚11,12设为输入模式,并且设置上拉电阻,当按键没按下时,保持高电平,当按键按下时,变成低电平,由高到低产生下降沿,再高设置中断为下降沿触发。(1)NRF_GPIOTE是一个结构体,其成员是GPIOTE寄存器TASKS_OUT[8],TASKS_SET[8],事件模式三种触发状态:上升沿触发,下降沿触发,当设置事件模式时,因为事件模式就是输入,通过输入信号可以触发事件中断。域中设置触发事件模式的输入 电平。
2025-04-06 19:08:01
840
原创 3、nRF52xx蓝牙学习(点亮第一个LED灯)
(port) << 5) | ((pin) & 0x1F):使用按位或操作符将移位后的端口号和引脚号组合起来,从而得到一个唯一的整数值,该值可被nrf_gpio函数使用。这是因为每个端口有 32 个引脚(0-31也就是 2^5 个),所以左移 5 位就能给引脚号留出足够的位宽。其用途是把端口号与引脚号映射成nrf_gpio函数能理解的值。GPIO 引脚通常用一个 32 位整数来表示,这个整数融合了端口号和引脚号的信息。
2025-04-02 22:51:51
541
原创 2,nRF52xx蓝牙学习(蓝牙工程包 SDK 详解)
作为一个轻量级的操作系 统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程 等,可基本满足较小系统的需要,特别适合在已 arm cortex m4。系列的开发,节省对基础硬件寄存器的操作的程序编写时间,使开发者方便快速的编写程序,官方提供专业的 SDK。因此我们希望读者可以参考官方软件代码,同时配合本书的学习 后,能够独立的进行蓝牙的开发了。等等,这些第三方 的驱动包还是比较多的,方便我们编程的时候调用,大家感兴趣的可以自行了解。认识官方提供的 SDK。
2025-03-25 20:23:45
1322
原创 1,nRF52xx蓝牙学习(文档资料查找)
包含了芯片外设模 块功能概述,电气特性参数,应用参考电路,封装和订购信息等内容,nRF52 技术手册每一个外 设模块章节前面是其功能概述,最后一节则是电气特性参数展示。勘误表内容一般都是关于软件开发注意事项的,但不排除某些条目也跟硬件设计有关,占用的资源扣除,然后再评估剩下的资源够不够用。协议栈的原理以及一些关键性能参数,所以现在也把各。收集资料进行学习入门,学习如果使用。第一个方面:芯片手册:参考文章开头第一节。协议栈,因此评估的时候一定要把协议栈。系列处理器,如何编程入门。产品的时候,强烈建议大家。
2025-03-25 19:25:58
967
原创 (8)51单片机红外遥控学习
人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、方式传送二进制编码,常用的载波频率为 38kHz,这是由发射端所使用的 455kHz。二进制脉冲码的形式有多种,其中最为常用的是 NEC Protocol 的 PWM 码。的时候为高电平,这样,我们在接收头端收到的信号为:逻辑 1 应该是 560us 低。正对接收头的凸起处看,从左至右,管脚依次是 1:VOUT,2:GND,3:VDD。脉冲+560us 低电平)。器),所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出 现。
2025-01-30 11:38:10
1346
原创 (7)单片机lcd12864显示学习
行 128 列,当然也有可能会设计成 64 列 128 行,这里的行列不像 1602 那样,个汉字,最多能显示 4 行。情况,如果通过取模软件取模,然后将 LCD12864 按照 128*64 个像素点来显示,对于带字库 LCD12864,最常见的标志就是在屏幕背后,会有存放字库的芯。128 列像素,64 行像素,也就是有 128*64 个像素点组成。显示的内容就可能超过之前的,就拿字符来说,可以选择小号字体,通过取模软。这里图形模式虽然显示了字符和汉字,但是并不是使用字库里的,显示的方法也。
2025-01-24 06:43:00
1058
原创 (6)51单片机 lcd 9648显示实验
以下是lcd9648.c文件。以下是lcd9648.h文件。以下是font.h文件。以下是pic.h文件。
2025-01-23 23:09:08
876
ct2000_TCPUP升级工具.rar
2020-04-09
手机txt电子书选择部分转成短信发送
2010-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅