- 博客(47)
- 收藏
- 关注
原创 STM32CubeIDE关于printf()串口输出重定向的问题
之前一直使用CubeMX搭配MDK-Keil5生成代码,在用到串口时,需要用到printf()输出重定向到PC的串口调试助手,Keil5通过点击“魔法棒”可以选择使用MicroLIB来加载stdio.h标准输入输出库。笔者后来自学FreeRTOS,选择用CubeIDE来生成代码,但是CubeIDE没有MicroLIB可以选,经过上网各种检索后得知,CubeIDE有自动配置了该项选择,所以只需要自定义函数printf()输出重定向即可。
2024-09-14 23:18:11 595
原创 项目实战.
4、快捷键Ctrl+shift+p,点击Quick Start。3、打开VScode,打开weekday文件夹。5、输入weekday,回车确认。
2024-08-07 11:37:33 245
原创 降低圈复杂度的方法
>提取函数(Extract Method)将重复的代码提取出来成为单独的函数。->分解条件(Decompose Conditional)从判断分支中分别提取出独立函数。->合并条件表达式(Consolidate Conditional Expression)将多个判断条件合并成一个函数。->合并重复的条件片段(Consolidate Duplicate Conditional Fragments)如果每个判断分支都有同一段代码,将重复的代码移到条件判断之外。
2024-08-07 11:16:37 387
原创 C 语言动态链表
动态链表是通过结点(Node)的集合来非连续地存储数据,结点之间通过指针相互连接。动态链表本身就是一种动态分配内存的数据结构。每个结点都包含数据部分和指向下一个节点的指针。这种结构允许在运行时动态地添加、删除或修改结点,而不需要像数组那样担心容量问题。
2024-07-25 11:35:59 1326
原创 标准IO实现fwrite保存数据,另外一个程序通过fread读取数据
【代码】标准IO实现fwrite保存数据,另外一个程序通过fread读取数据。
2024-07-18 20:41:01 235
原创 SQLite
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据 库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。 SQLite 直接访问其存储文件。
2024-05-14 19:05:11 830
原创 网络编程:服务器模型-并发服务器-多线程实现并发服务器
主进程专门用于连接多个客户端的请求,若有一条客户端连接进来,主进程就创建一个子进程,用该子进程来处理客户端的业务数据。
2024-05-13 20:21:50 287
原创 嵌入式-进程、线程
fork()代码演示了使用fork()系统调用在Linux环境中创建子进程的过程,并在父进程和子进程中分别执行了不同的代码块。原代码中存在一个潜在的问题:在父进程的代码块之后有一个死循环while(1);在实际应用中,通常不会让父进程进入死循环,而是根据需求进行后续处理或等待子进程结束。
2024-05-02 11:47:08 345
原创 Linux生产者,消费者模型
Linux生产者消费者模型是一个用于解决生产者和消费者之间强耦合问题的设计模式。这个模型通过引入一个容器(通常是一个阻塞队列)来作为生产者和消费者之间的通信桥梁。在这个模型中,生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信。生产者生产完数据之后,不用等待消费者处理,而是直接将数据放入阻塞队列中。同样,消费者也不用找生产者要数据,而是直接从阻塞队列中取数据。这个阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
2024-05-01 15:27:29 440 2
原创 Linux内存图
数据段 | -----------------------------------> 用于存储已初始化的全局变量和静态变量。| 堆 | -----------------------------------> 用户程序的堆,用于动态内存分配。| 内核代码 | -----------------------------------> 内核的代码和数据结构。+-----------------+ <-- 进程1的用户空间顶部。
2024-05-01 15:24:43 78
原创 华清远见-数据结构课程&项目总结
本次员工管理系统的项目开发是一次宝贵的学习经历。通过项目的实施,我不仅巩固了所学的数据结构知识,还提高了自己的编程能力和解决问题的能力。同时,我也认识到了自己的不足和需要改进的地方,为未来的学习和工作提供了有益的借鉴和参考。展望未来,我将继续深入学习数据结构和算法的相关知识,并将其应用于更多的实际项目中。我将注重理论与实践相结合,通过编写代码、调试程序来加深对知识的理解和应用。同时,我也将关注新技术和新方法的发展,不断更新自己的知识体系,以适应不断变化的技术环境。
2024-04-28 18:42:59 869
原创 二进制转换十进制方法
十进制总和: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 + 32768 = 65535●将二进制1101 1100 1111转换为十进制思路:12个1,2^11 = 2048把几个0位上的数减去,最终就是我们想要的十进制数答案:2048 + 1024 + 0 + 256 + 128 + 64 + 0 + 0 + 8 + 4 + 2 + 1 = 3535●将十进制4659转换
2024-04-24 10:59:26 429
原创 嵌入式笔试面试题(汇总)
在C语言中,使用typedef和#define定义指针类型都可以达到类似的效果,但typedef通常更受推荐。原因如下:类型安全:typedef定义的是类型别名,而#define是简单的文本替换。因此,typedef提供的类型检查更严格,有助于避免潜在的类型错误。可读性和维护性:typedef的语法更接近于C语言的类型声明方式,提高了代码的可读性。此外,如果将来需要修改类型定义,使用typedef会更方便,因为只需要修改一处定义,而#define可能会涉及到多个文本替换的修改。
2024-04-23 22:23:17 1722
原创 数据结构系列文章—线性结构
/嵌入式入门必学,//文章中用到的Linux版本——Ubuntu18.04//本文章旨在通过项目程序,掌握线性结构-动态顺序表//数据:现实生活中的一切事物//结构:逻辑结构和存储结构//研究的是数据的逻辑结构、存储结构及其操作(创销增删改查)
2024-04-20 12:08:18 332
原创 【C语言冒泡排序的三种方法&笔者自己写的】
冒泡排序算法的核心思想是通过多次遍历数组,比较相邻元素的大小,并根据需要交换它们的位置,从而把较大的元素逐步“冒泡”到数组的末尾。
2024-03-27 10:42:44 645 1
原创 LinuxOS基础知识
*Ubuntu是基于Debian Linux的操作系统,由马克·沙特尔沃思创办,于2004年10月公布了第一个版本。它是一个以Linux内核为基础的操作系统,旨在提供易用性和稳定性,适合个人和企业用户**。Ubuntu系统的主要特点:1. **免费开源**:Ubuntu是一个免费的操作系统,其源代码对所有人开放。用户可以自由下载、使用和分发未修改的Ubuntu系统,也可以从社区获得技术支持而无需支付许可费用。
2024-03-23 14:47:38 846 1
原创 物联网领域常见通信类型
物联网设备间的通信按传输介质的物理特征,分为: 有线通信技术、无线通信技术。有线通信技术是指利用金属导线、光纤等有形媒介传送信息的技术,其特点为:可靠性高、稳定性高、受限于传输媒介,RS-485、RS-232、以太网、CAN 均属于有线通信技术。无线信技术是指利用电磁波信号在自由空间中传输的特性进行信息交换的一种通信方式,Wi-F、蓝牙、LoRa、ZigBee、NB-IoT 均属于无线通信技术。
2023-04-23 20:16:40 889 2
原创 物联网领域常见通信协议
通信协议是指通信双方通过数据线路(有线或无线)进行数据交换时,按照事先约定好或行业标准等,就通信方法、通信时间、通信内容等所做的约定,从而保证通信双方能够做到相互配合、共同遵守。通信协议各类繁多,在OSI模型中常见的通信协议包括:TCP、UDP、SMTP、POP3、HTTP、IEEE802.X簇等,这些协议分别处于OSI模型的应用层、表示层、会话层、传输层、网络层、数据链路层、物理层的七层中。除常见的通信协议外,又出现因物联网而生的MQTT、COAP等协议。
2023-04-21 21:55:08 2999
原创 物联网工程实施与运维
文章目录 二氧化碳变送器(485型)的性能检测要求如图所示连接设备,将设备连接至电脑串口,利用串口调试助手软件进行二氧化碳变送器的检测。将串口号设置为电脑对应串口号,通过波特率、校验位、数据位、打开串口、校验位等设置完成设备连接。 通过发送查询指令“FE 03 00 00 00 01”,查询当前二氧化碳数值,返回值中第四位与第五位-例如“02 D1”表示当前二氧化碳浓度为721ppm,通过再次查询查看返回值得变化,判断设备性能是否良好。 光照度变送器(485型)的
2023-04-21 20:57:51 796
原创 物联网工程实施与运维(初级)
在物联网工程项目中,需要检测工具来支撑项目的实施。比如,支持Wi-Fi功能的两个设备间如何确认已组网成功,或者支持蓝牙功能的两个设备间如何确认已经建立连接,类似于此类的情况都需要进行检测工作。检测工具——硬件:如蓝牙测试仪,软件:如WirelessMon。提示:以下是本篇文章正文内容,下面案例可供参考。
2023-04-13 11:21:46 1782
原创 物联网中心网关
将接近开关、微动开关、人体红外开关、烟雾传感器等开关量传感器的信号线接入4150的DI口(输入口)13.新增执行器——开关量烟感探测器。5.点击新增传感器——三色报警灯-橙。6.点击新增传感器——三色报警灯-绿。7.点击新增传感器——三色报警灯-红。16.点击开发者中心——点击4150。17.等待网关在线——点击传感器管理。9.点击新增传感器——人体红外开关。10.点击新增传感器——烟雾传感器。11.点击新增传感器——接近开关。12.点击新增传感器——行程开关。13.点击新增传感器——红外对射。
2023-04-11 08:38:20 4314
原创 路由器配置
3.浏览器登录192.168.1.1进行路由器配置,密码设置为:123456。2.再拿一根网线接入路由器LAN口,连接至电脑网线口。4.上网方式设置为宽带账号或答卷给定的方式。将外网网线接入靠近电源一侧(WAN口)5.无线设置为12345678。
2023-04-11 08:25:48 1084
原创 ZigBee协调器,ZigBee智能节点盒
12.此操作只写入3个值,打开COM口,选择9600波特率,打开串口,PAN ID:为1001(与ZigBee协调器一样),Channel:为11(与ZigBee协调器一样),sensor Type为温湿度或其他传感器,分别点击Write Config,断电重启ZigBee智能节点盒,重启应用程序,打开COM口,选择9600波特率,Load Config查询是否写入成功,如果未成功,则重复写入操作。点击设置,断开连接,关闭窗口,设备重新上电,连接模组后读取一下,查看是否写入成功。
2023-04-10 11:10:24 6161 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人