C
文章平均质量分 54
事在人wёi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STM32 - 使用 HAL 库实现软件模拟 I2C
本文介绍了I2C通信中GPIO的配置及软件模拟实现方法。关键点包括: I2C引脚必须配置为开漏输出模式,通过外接上拉电阻实现双向通信; 提供了I2C初始化函数,将SCL和SDA引脚配置为高速开漏输出; 实现了完整的I2C协议函数,包括启动/停止信号、应答检测、数据收发等; 采用位操作方式模拟I2C时序,通过宏定义简化端口控制; 包含延时函数确保时序正确性。该方案适用于需要软件模拟I2C的场景,使用时需确保正确连接上拉电阻。原创 2022-09-22 16:39:38 · 8066 阅读 · 1 评论 -
keil 添加中文,编译出错
本地化语言(如中文)可能导致编译日志中出现乱码,强制英文可避免此问题。使用keil添加一些中文文字,会报错,但是添加英文却没有报错。原创 2025-07-21 18:07:12 · 547 阅读 · 0 评论 -
1.一维卡尔曼滤波(恒定的动态模型)
例如:测量一枚硬币的直径,一栋建筑的高度。原创 2024-10-12 11:29:31 · 1368 阅读 · 0 评论 -
keil 编译的时候直观查看flash和ram的剩余空间
这个插件忘记出自哪里了,有知道的可以留言给我。原创 2024-08-14 11:16:39 · 1163 阅读 · 0 评论 -
C语言 Unix 时间戳 和 时间日期相互转换
正题如果你要将 Unix 时间戳转换为某个特定时区的时间,你需要考虑该时区相对于 UTC 的偏移量。对于东八区(即 UTC+8),你确实需要在 Unix 时间戳的基础上加上 8 小时的秒数来得到当地的时间。例如:如果你想得到 UTC+3(如莫斯科)的时间,你需要在 Unix 时间戳基础上加上 3 小时。如果你想得到 UTC-5(如美国东部标准时间 EST)的时间,你需要在 Unix 时间戳基础上减去 5 小时。正题。原创 2024-08-07 17:41:58 · 1289 阅读 · 0 评论 -
GD32手把手教你移植FlashDB(片外Flash) -- 3.FlashDB使用
GD32手把手教你移植FlashDB(片外Flash) – 1.FlashDB-sfud移植GD32手把手教你移植FlashDB(片外Flash) – 2.FlashDB移植GD32手把手教你移植FlashDB(片外Flash) – 3.FlashDB使用示例代码: https://gitee.com/ljmRD/GD32F427_FlashDB原创 2024-07-30 17:02:42 · 1559 阅读 · 0 评论 -
GD32手把手教你移植FlashDB(片外Flash) -- 2.FlashDB移植
这时候编译会报一大堆的错误。到此编译应该是没有报错的了。外部Flash 填写 1。片外Flash使用的是。在main()里面执行。原创 2024-07-30 16:19:20 · 1420 阅读 · 0 评论 -
GD32手把手教你移植FlashDB(片外Flash) -- 1.FlashDB-sfud移植
sfud我使用的是GD32F427开发板(标准库),上面使用SPI0连接W25Q128使用片外Flash,在使用FlashDB库之前,需要先把sfud移植好。原创 2024-07-30 13:47:15 · 2179 阅读 · 1 评论 -
VScode给函数写注释 /**回车
出来的效果可能是这样,并不是很符合我们的要求。原创 2023-08-30 11:03:34 · 564 阅读 · 0 评论 -
安信可蓝牙PB-02 SDK二次开发记录
这时候调试才正常,P14/15置1都可以正常触发看门狗复位。板子运行起来,打印下面几行日志。但是不管怎么弄,好像都没有反应,感觉就像死机了。P14引脚置1,2s后看门狗复位。P15引脚置1,看门狗立刻复位。模式对新手开发来说是一个大坑。实时上它是进入了休眠状态。详细参考下面两篇教程。原创 2023-07-06 17:00:32 · 1014 阅读 · 0 评论 -
433MHz SYN480R 解码
在空载情况下,syn480r 输出引脚,输出的是杂乱无序的波形。种地址,可以降低遥控的冲突,但是按键(4位)就只能是15个了。我手头上的遥控总共有21个按键,很明显使用4位键码肯定是不够的。根据规律,可以将前面的16位定义位地址码,后面8位为键码。按下按键,会连续输出相同的脉冲波形,放大分析。按键松开,最后一帧的末尾也有一个明显的特征。前面20位是地址码,后面的4位是键码。很多关于EV1527的资料提到。20位地址,就可以组合出。使用逻辑分析仪采集数据,原创 2023-02-17 18:03:42 · 6912 阅读 · 10 评论 -
C 位域和共用体联合使用
共用体是一种数据类型,实现在相同的位置存储不同的数据类型,但是在某一时刻只能保存一种数据。以下面的16位寄存器为例。原创 2022-10-24 10:07:20 · 571 阅读 · 0 评论 -
嵌套 JSON 对象
嵌套 JSON 对象比如,我要解释的字符串是p = {“method”:“thing.service.property.set”,“id”:“1521341546”,“params”:{“LightSwitch”:1},“version”:“1.0.0”}其中params是嵌套的对象cJSON * pSub_1 = cJSON_Parse( p )作用:将一个JSON数据包,按照cJSON结构体的结构序列化整个数据包,并在堆中开辟一块内存存储cJSON结构体返回值:成功返回一个指向内存块中原创 2020-07-16 17:51:01 · 2024 阅读 · 1 评论 -
Vscode c语言代码Ctrl+左键无法转跳到定义
前言之前是能转跳到定义,鼠标悬浮也可以看到注释随着工程越来越大,分的文件越来越多,现在已经不能转跳到定义了,只能转跳到.h上的声明C/C ++ 是必装插件,没什么可说的解决大工程无法转跳到定义方法1.安装C++ Intellsense插件2.下载GNU Global工具GNU Global工具下载链接下载不需要安装的,直接解压即可,会得到3个文件夹3.添加环境变量将 D:\APP\glo668wb\bin 添加到你的环境变量中4.回到Vscode打开settings.json设原创 2022-05-24 16:41:13 · 3621 阅读 · 1 评论 -
ESP32 VSCode ESP-IDF 分区表设置
ESP32 VSCode ESP-IDF 分区表设置文章目录一、选择自定义分区表二、分区表设置一、选择自定义分区表partitions.csv二、分区表设置官方分区表API指南# ESP-IDF Partition Table# Name, Type, SubType, Offset, Size, Flagsnvs, data, nvs, 0x9000, 0x6000,phy_init, data, phy, 0xf000, 0x1000,f原创 2022-02-27 12:27:13 · 3331 阅读 · 0 评论 -
ESP32 smartconfig ESPTOUCH AIRKISS 配网
#include <string.h>#include <stdlib.h>#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "freertos/event_groups.h"#include "esp_wifi.h"#include "esp_wpa2.h"#include "esp_event.h"#include "esp_log.h"#include "esp_system.h"原创 2021-12-29 14:28:21 · 2303 阅读 · 0 评论 -
四元数转欧拉角
四元数转欧拉角_在线测试工具在线测试C程序工具#include <stdio.h>#include <cmath>//四元数struct Quaternion{ double w, x, y, z;};//欧拉角struct EulerAngles{ double roll, pitch, yaw;};EulerAngles ToEulerAngles(Quaternion q){ EulerAngles angles;原创 2021-12-29 09:26:32 · 2346 阅读 · 0 评论 -
ESP32 LVGl8 label 显示位置 中文取模 字体颜色 背景颜色
项目场景:本例程使用的是ESP32C3,前提条件是你的Lvgl显示已经移植完成1.demo1_显示一个简单的文本void label_demo1(void){ lv_obj_t *label = lv_label_create(lv_scr_act()); lv_label_set_text(label, "abc123"); //文本内容} 2.demo2_设置文本位置void label_demo2(void){ lv_obj_t *label = l原创 2021-12-27 20:53:05 · 8936 阅读 · 0 评论 -
LIS3DH三轴加速度计-实现欧拉角(俯仰角,横滚角)
项目场景:使用的是ESP32C3模块,大家可以参考一下怎么实现LIS3DH三轴加速度计-实现欧拉角(俯仰角,横滚角)加速度->欧拉角 转换公式*pitch = (atan(acce->AcceX / sqrt(acce->AcceY * acce->AcceY + acce->AcceZ * acce->AcceZ))) * 57.3f; // *57.3f = *180/3.14*roll = (atan(acce->AcceY / sqrt(acc原创 2021-12-24 11:29:44 · 2954 阅读 · 0 评论 -
2.ESP32C3 移植 lvgl/lv_demos 教程
项目场景:提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obta原创 2021-11-17 16:56:41 · 6573 阅读 · 0 评论 -
FreeRTOS事件组使用
文章目录一、包含头文件/源码二、定义句柄/设置事件三、创建事件组四、等待事件位五、设置事件位六、清除事件位一、包含头文件/源码event_groups.c源代码event_groups.h头文件二、定义句柄/设置事件static EventGroupHandle_t motor_event_group; //事件组句柄const int MOTOR_START = BIT1; //启动const int MOTOR_PAUSE = BIT2; .原创 2021-10-13 13:52:33 · 436 阅读 · 0 评论 -
STM32CubeMX HAL F103 BKP备份寄存器使用
STM32CubeMX HAL F103 BKP备份寄存器使用以下是本人自己的应用笔记,如果有错误的地方,欢迎评论区指出,我会及时更正-[2021.09.28]1.需要开启RTC功能2.API调用初始化程序已经自动生成好了,直接使用下面的两个函数就可以了将num数据保存在RTC_BKP_DR1的位置uint16_t num = 0x25;HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,num);在RTC_BKP_DR1的位置读取数据uint16_t原创 2021-09-28 16:11:54 · 3884 阅读 · 2 评论 -
#define 宏函数实现printf打印log
#define DEBUG(format, ...) \ do \ { \ printf("%s(%d):", __func__, __LINE__); \ printf(format, ##__VA_ARGS__); \ pri原创 2021-09-24 13:43:07 · 1141 阅读 · 0 评论 -
keil5 最简单的方法生成bin文件
fromelf --bin -o ".\bin_file\@L.bin" "#L"重新编译之后,就可以自动生成bin文件了原创 2021-08-27 14:38:31 · 469 阅读 · 0 评论 -
STM32 HAL OTA 小白教程
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言【嵌入式实战】STM32 Bootloader 快速实现(超详细)STM32在线升级OTA,看这一篇就够啦感谢这些前辈分享的资料,在此我只是整理了前辈们的资料,然后通过通俗易懂的方法再介绍给大家,方原创 2021-07-16 16:11:55 · 1897 阅读 · 3 评论 -
STM32F4系列 HAL Flash 读写
前言注意:F0F1系列和F4系列的Flash读写操作不相同一、STM32CubeMX怎么查看芯片的Flash分布?二、擦除F4系列Flash本例程使用的是F411CEU6的型号芯片1.擦除Flash代码1.基本操作:void FlashErase(void){ int sect = 0; HAL_FLASH_Unlock();//解锁 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH原创 2021-07-16 11:30:57 · 6155 阅读 · 7 评论 -
C语言回调函数详解[转载]
原帖出处: 勤勉之 博主回调函数:在C语言编程中,我们经常听到回调函数(callback function)一说。对于C语言新手而言,回调函数可能是一个比较难于理解的东西。今天我将通过一个实际例子,来讲解什么是回调函数,为什么要用回调函数。回调函数究竟有什么作用呢?说到这里,就有了用户和开发者之间的概念,假设,用户是实现add_ret这个函数,而开发者是实现add这个函数,现在的需求是,用户将add_ret这个函数以参数的形式传入开发者实现的add函数,add函数就会返回一个数字给用户,开发者没必转载 2020-12-31 09:28:36 · 964 阅读 · 0 评论
分享