- 博客(69)
- 收藏
- 关注
原创 移植LVGL注意事项
提供LVGL心跳,extern void lv_tick_inc(uint32_t tick_period);在lv_conf.c文件中,将默认申请48K堆空间尽可能改小,目前使用16K可以。添加宏定义LV_CONF_INCLUDE_SIMPLE 全局。堆栈大小默认可能不够,需要修改,栈大于8K,堆大于2K。
2025-11-22 20:47:57
139
原创 xTaskGetCurrentTaskHandle()函数使用
xTaskGetCurrentTaskHandle():这是 FreeRTOS 提供的一个 API 函数。它的作用是返回当前正在运行的任务的句柄。任务句柄是一个指向任务控制块(TCB,Task Control Block)的指针,TCB 是 FreeRTOS 用来管理任务的一个数据结构,包含了任务的状态、优先级、堆栈指针等信息。通过任务句柄,我们可以对任务进行各种操作,比如挂起、恢复、删除等。
2025-02-17 16:48:36
553
原创 配置pip国内镜像
pip安装的包都存在于外国的服务器上,速度会非常慢,可以给pip配置国内镜像,直接从国内服务器安装依赖。方式一:自动配置(荐)
2024-08-28 20:52:07
1449
原创 C语言常见的题目
标识符指的是变量、函数、数组名、结构体等要素命名时使用的字符序列。有命名规范,强制命名规范是只能使用英文字母、下划线和数字组成,不能使用数字开头,不能使用关键字。常用的命名规范有小驼峰、下划线拼接。声明:告诉编译器某个变量的存在以及数据类型,但是并没有分配内存空间。定义:在程序中为变量分配了内存空间并初始化,生成了一个完整实体。
2024-08-12 21:16:11
300
原创 文件操作函数使用的注意事项
函数在使用的时候,注意接收字符时,要先清除缓冲区中的’\n’,可以使用getchar();然后丢弃换行符,储存其余字符,并在字符末尾添加一个空字符。(可选择性利用 getchar()循环清空缓冲区中的字符,避免影响下次输入)超出的字符则保留在缓冲区中,与 gets()不同的是 gets()会丢弃。读取指定数量的字符,如果该参数是 n,则读取 n-1 个字符,或。替换为空字符,而 fgets()会储存在字符串中。从输入流中读取一行文本,并存储在一个字符数组中,从输入流中读取一个字符,返回值为int。
2024-08-11 13:56:24
258
原创 客户、学生管理系统(C语言)
当在进行读取用户输入时,如果用户进行回车操作,这样就会导致这次读取的姓名就为\n,但是对于实际来说肯定不行,此时我们使用fgets()函数,将输入流中的数据读取的我们开辟的一个缓冲区中,判断读取到的第一个字符是不是\n,如果是,则不进行修改,如果不是,再进行修改,使用sscanf()函数来格式化到name属性。
2024-08-10 17:45:01
325
1
原创 宏和函数的区别
函数是一段可重复使用的代码,会被编译,会给它申请内存空间,每次调用,其实就是执行的这块内存空间的代码。宏只是仅仅进行文本的替换,宏在编译前就被替换掉了,不占用内存,不对表达式进行计算。
2024-08-09 18:32:40
189
原创 realloc函数动态申请内存
对于第一次申请内存空间,返回了一个地址空间,但是第二次进行重新申请内存的时候,传入的指针变量是作为realloc函数的参数,表示如果第一次申请的内存空间后面还能够开辟连续空间,则进行开辟;否则重新找一块内存,开辟的空间为总的要开辟的空间。所以,这两种情况所产生的结果就是可能返回的地址是一个新的地址,也可能不是。
2024-08-09 18:16:13
241
原创 bug积累
时,实际上是在使用 C99 标准中引入的变长数组(VLA, Variable Length Array)的特性。变长数组允许在栈上分配其大小在运行时确定的数组。这意味着 len1 和 len2 的值可以在程序运行时确定,但仍然可以用来声明数组 p 的大小。如果 len1 + len2 的值非常大,可能会导致栈溢出,因为变长数组是在栈上分配的。变长数组不能被初始化,因为编译器在编译时不知道数组的确切大小,因此无法为数组分配初始值。这就是为什么 int p[len1 + len2] = {};
2024-08-07 11:17:56
400
原创 提示用户请录入5个学生的成绩,求最高分及该学生学号,求最低分及该学生学号
【代码】提示用户请录入5个学生的成绩,求最高分及该学生学号,求最低分及该学生学号。
2024-08-02 09:58:47
529
原创 stm32高级定时器
高级定时的通道1、2、3可以分别输出2路互补信号,互补输出一般用于驱动H桥电路。频率周期相同,相位差180度。引入,一般mos管器件。会造成短路,导致器件烧毁。,连接brk,可以用作输入信号,去操作DTG寄存器,然后处理突发事件。,比如可以生成有限次的pwm,生成3次,只需要重复次数写2。对于高级定时器必须发生RCR+1次溢出动作后才可以产生更新事件。对于通用或基本定时器,每溢出一次就可以产生更新事件。
2024-07-09 15:21:27
287
原创 通过临时密码开锁功能
通过以上方案,可以实现一个无需联网的智能门锁系统,手机端生成的临时密码可以在门锁端进行验证,确保门锁的安全性和可靠性。门锁出厂时,将xxx算法和过期规则写入门锁的存储芯片中,并提示用户设置管理员密码。手机端和门锁端使用相同的算法,根据管理员密码和过期规则生成临时密码。手机端APP使用相同的算法生成密码,并显示给用户。门锁端接收用户输入的密码,并使用相同的算法验证。
2024-06-27 14:16:41
1449
原创 ESP32-C3芯片通过蓝牙控制开锁功能
定义BLE服务和特征,用于接收开锁命令。0x00FF// 服务UUID0xFF01// 特征UUID4// 句柄数量// 特征值// 特征属性// 处理GATT服务器事件// 处理事件(详细代码见下文)// 注册GATT回调if (ret) {return;// 创建GATT服务器。
2024-06-27 14:00:26
778
原创 实现获取天气
NTP校时通过NTP协议从NTP服务器获取当前时间,并设置设备的系统时间。基于IP地址获取归属地使用在线API(如IP-API或IP Geolocation API)获取设备的地理位置。获取天气和空气质量信息使用天气API(如OpenWeatherMap或WeatherAPI)获取归属地的天气和空气质量信息。
2024-06-27 13:45:55
779
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅