- 博客(43)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 bootloader相关部分
不足:这样传输是一整个数据包一起发送出去的,对RAM有要求,如果RAM不够大,需要1kb为单位进行发送,需要一个专门的上位机。bootloader主要分为三层,厂家出厂的bootrom ,用户自己写的bootloader,最后就是app。flash擦除用到的是页擦除,写入部分半字和全字都可以,不过需要额外转换,协议一般都是单字节的,半字是两个字节。需要确认选择CAN还是串口,需要定制一套通讯协议是一段一段还是一整个包,需不需要帧头帧尾。bootloader的代码基本包含:时钟,
2025-03-11 17:35:34
232
原创 优秀代码段案例__笔记
如果想让一种情况只触发一次,可以增加一个新的标志位例如,在条件成立时赋值,复位后清空// 用于标记是否处理过报警但是如果是上位机去读这种状态,需要再次进来这种状态,那么就需要走else if()然后在else if加一些限制条件和要传送的值。
2025-01-21 09:52:03
142
原创 人像摄影笔记(自用)
光学变焦:焦距变了 画质不变数字变焦:焦距不变 裁剪画质 数字变焦一般都比较大广角镜头:等效焦段25mm 也就是一倍变焦 如果是2倍变焦就是2*25mm 0.5就是12.5mm的焦段算是超广角了黄金人像焦段在:50-135mm之间(比较推荐85焦段)如果是拍一些街景人物,推荐35焦段,和人眼差不多,主摄一般是23焦段左右潜望式长焦的手机值得推荐!
2024-11-01 23:12:37
576
原创 Linux那些常用的命令(自用)
查看容量:df -h查看内存:free -h查看cpu信息: lscpu查看版本号:lsb_release -a docker --version。
2024-10-11 13:24:08
844
原创 单片机,传感器等低功耗管理
*有些客户需求,把设备做成低功耗管理,这样就可以节省电池的电量,也可以增加传感器的使用寿命。不需要继续运行时,可以利用多种低功耗模式,等待某个事件触发。秒进入待机模式,在待机模式下,长按。其他情况具体使用后添加。提供时钟,内核执行代码。总线上未被使用的外设时钟。
2024-09-12 11:14:50
662
原创 [附源码]支持30种烟雾检测,最强ADPD188BI烟雾检测器(I2C接口)
先记录I2C的基础知识和注意事项等。1.I2C是一个半双工的串行通信协议,通讯依靠时钟线来同步数据的发送和接收,在SDA传输数据的过程中,都要有一个时钟信号配合,所以时序就非常重要。12.每传输一个字节,后面跟随一个应答位。通过将 SDA 线拉低,来允许接收端回应发送端。ACK 为 一个低电平信号,当时钟信号为高时, SDA 保持低电平则表明接收端已成功接收到发送端的数据。
2024-09-12 09:15:08
886
原创 关于ADC的理解和代码示例(全)
双 ADC 模式时,由 ADC2 转化的数据在 ADC1 的数据寄存器中,由 ADC4 转化的数据在 ADC3 的数据寄存器中。配置 ADC_CTRL1.DREGCH 为 1,开启规则通道的间断模式,配置 ADC_CTRL1.DJCH 为 1,开启注入通道的间断模式,同时只能设置一种。1.采样率要奈奎斯特准则选择恰当的采样率,以避免混叠现象(要想无失真地从采样数据中恢复出原始信号,采样频率至少为信号频率的2倍)2.ADC的分辨率决定了其测量精度,通常分辨率越高,能够提供的测量精度越好,但采样率越低。
2024-08-05 15:18:06
649
原创 关于国民技术开发板如何烧录代码使用
1.首先将boot0和3.3V短接拉高,然后按下复位按键,这样jlink就能识别芯片,否则识别不了。然后拔掉跳线帽,开始烧录程序,然后成功运行。别问为什么,关注我,以后一起举大旗!不拔掉,会这样(错误示范)
2024-07-19 15:47:12
453
原创 手把手教你VSCODE如何配置C/C++环境
VSCODE配置C/C++环境还是相对比较麻烦的,而且有时候不能调试,建议大家使用Visual Studio 调试代码,虽然可能没VSCODE那么好的观感,VSOCODE适用于前端较多,Visual Studio 后端使用较多,其实都是微软一个妈生的,看大家喜好选择吧。注意compilerPath这一项要把路径改成刚才g++的安装路径:找到刚刚的安装文件夹->MinGW->bin->g++,exe ,然后复制或者手动把g++.exe的路径敲上去,格式要跟上面代码段一样。这样我们的g++就算安装好啦!
2024-07-18 13:57:35
1247
原创 三分钟带你移植RT-thread工程到ST,GD,N32,TI等所有开发板上
1.Env工具(安装在非中文非空格的目录下):https://www.rt-thread.org/page/download.html。3.下载RT_Thread源代码(完整版):https://github.com/RT-Thread/rt-thread/2.git 的支持(安装在非中文非空格的目录下):https://git-scm.com/downloads。使用rt-thread-5.0.2源码包,你们使用最新的也行。然后使用命令编译生成工程,这步一定要做,要不然工程很多感叹号。
2024-07-15 17:51:57
852
原创 关于单片机那些事?
机器周期:一个指令的基本操作(取指,分析,执指)所需要的时间为机器周期,一般由12个时钟周期组成 机器周期 = 12/晶振频率。时钟周期:也叫振荡周期,就是单片机外接晶振的倒数,如12Mhz,周期就是1/12us,最小的时间单位。总线周期:CPU通过总线对外部进行一次访问需要的时间 一个总线周期一般包含4个时钟周期。指令周期:执行一条指令需要的时间,一般由若干个机器周期组成。主频(时钟频率):1秒钟,时钟周期的个数为主频。
2024-06-21 10:34:34
735
原创 CAN学习笔记
1.传输方式:广播式和请求式2.高速CAN 125-1Mbps 40m 低速CAN 10k-125kbps 1km3.11/29帧ID 区分消息功能 同时决定优先级4.半双工 异步 差分 多对多。
2024-05-20 10:00:00
358
原创 [STM32+LORA] keil环境下如何使用JSON格式发送数据
然后添加文件到工程中,修改test,c文件。##首先需要添加下载cJSON库文件。最后看实际情况修改栈区空间大小。
2024-04-12 17:41:22
1036
原创 关于优化代码中if,else过多的“屎山“问题
在一些逻辑代码判断中,一个函数体里面可能需要多种逻辑判断,然后确定某一变量的值或者状态,那么这个时候可以使用结构体数组的概念来解决,其实也相当于建立一个映射表一样。比如是一个判断温度和状态的关系,if(温度大于多少){当前状态 = 某一状态},依次类推就会产生很多的if else。如果是处理多个函数体的执行也可以使用结构体组的概念,减少代码的冗余,提高代码的效率和可读性。然后把那些if else替换for循环实现。已知温度可能是0,20,50,70,80。
2024-04-10 23:22:54
390
原创 Modbus 485学习笔记
比如从设备地址为0x11 功能码01 起始地址0x14 读多少个从设备 0x19(25个) CRC。地址一个字节 功能码一个字节 数据2个字节 寄存器数量2个字节 CRC2个字节。从机回复:地址 功能码 读多少个从设备占的字节数 相应字节位数据 CRC。地址0x22 功能码 0x05 起始地址:0x1D 数量 0xff crc。以功能码05写举例:向从设备所有继电器写,打开/关闭所有继电器(取反一样)以功能码01举例:实现主设备读25个继电器的状态是开还是关。
2024-04-06 22:30:13
1919
原创 使用JLink RTT实现打印调试功能(N32G301C8)
完整资料包:链接:https://pan.baidu.com/s/191A4PaIt5ySEQaEDOsDX3Q?串口选择配置如下,因为我用的是国民技术的G031,所以我还需要添加国民技术的芯片包才行。描述:无需串口配置,只需要JLink仿真器连着就可以看到打印信息。首先找到Jlink安装位置,找到RTT文件拷贝到工程中。安装国民技术芯片配置包,以及解锁JLink烧录器。然后打开JLINK自带的串口软件。贴图说明比较多,已经非常详细了。版本:Jlink V7.66。一共有这么多要配置的。
2024-03-30 23:04:30
761
原创 Gitee配置
Gitee配置流程,Gitee和tortoise Gitee都要下载。这里生成公钥SSH ,当然也可以使用命令行生成。1.然后设置界面或者命令行添加用户名和邮箱。4. 然后要配置这两个地方才能成功。海龟Gitee可以下载中文包。3.然后添加到Gitee中去。
2023-07-15 12:02:44
220
转载 Makefile和shell脚本的区别
2、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。echo $$PATH例子中的第一个${PATH}引用的是Makefile中的变量,而不是shell中的PATH环境变量,后者引用的事Shell中的PATH环境变量。可以调用shell脚本,但是Makefile和shell脚本是不同的。4、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。
2023-05-21 15:57:33
465
原创 Makefile的编写规则
程序执行过程:预处理,编译,汇编,连接,运行ESC OSI.c ---.i .i-----.s.s------.o.o------.out(文件名为Makefile 无后缀,#是注释)显示规则 目标文件:依赖文件(tab)指令:&第一个目标文件就是最后生成的文件hello:hello.o gcc hello.O -o hellohello.o...
2022-04-04 20:00:35
428
原创 简单实现两个线程之间的交替打印(C语言)
#include <unistd.h>#include <stdlib.h>#include <pthread.h>#include <stdio.h>#include <signal.h>pthread_mutex_t mutex;//自旋锁pthread_cond_t cond1,cond2;//线程1void *thread_fun1(void * arg){ int i=0; while(1) { pthre.
2022-03-29 15:53:01
2530
4
原创 进程间通信(系统编程)
进程间通信:用户空间不可以通信,只在内核中通信线程间通信:用户空间可以通信,通过全局变量进行通信要想实现父进程先运行子进程后运行,可以加一个全局变量或者局部变量阻塞子进程的运行。通信方式:管道、信号、IPC(共享内存,消息队列,信号灯)占用内存的只有目录文件,软链接,套接字文件?有名管道,字符设备,块设备,套接字他们不占用磁盘空间,只有文件节点atoi(字符串):将字符串转换为数字sprintf(buf,"%d",num);将数字转化为字符串无名管道:pipe(pipefd..
2022-03-27 15:52:06
485
原创 UDP实现广播(网络编程)
需要指定发送给客户端的端口号,服务器端口号可以随机,主机ip为本地ip,客户端ip为0.0.0.0(本网络上的本机地址)server.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/socket.h>#include <string.h>#include <arpa/inet.h>#include <net/if.h
2022-03-24 16:16:13
410
原创 select函数的使用(网络编程)
使用select函数,服务器不需要再去监听文件描述符,交给select去做,不需要再去阻塞等待事件的发生,一旦执行就会有返回值,根据返回值的情况可以判断该文件描述符是读事件,写事件还是异常事件。int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);nfds:最大的文件描述符+1readfds:监听的读writefds:监听的写exceptfd:异常
2022-03-24 15:24:16
494
原创 Linux字符驱动开发__点亮多个LED
环境:ubuntu20.04、source insight4.0、secure CRT内核版本:Linux-3.14-fs4412开发板:fs4412(ARM)功能:终端输入0灭灯,输入1灯亮
2022-03-23 16:20:40
3043
原创 实现多进程&多线程的并发服务器(socket编程)
1、多进程server.c#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>#includ
2022-03-22 21:24:53
697
原创 Linux字符驱动开发__创建字符设备驱动
环境:ubuntu20.04、source insight4.0、secure CRT内核版本:Linux-3.14-fs4412开发板:fs4412(ARM)一、环境安装步骤1.将内核拷贝到虚拟机tftpboot目录下(目的使用tftp挂载到开发板上,见前章)2.配置环境变量,使用CRT终端操作注:第一次使用要用网线,并关闭网络托管sudo /etc/init.d/network-manager stopset ipaddr 192.168.3.202set ser.
2022-03-16 18:58:37
2176
原创 U-boot移植方法
环境:u-boot版本:2013.01ubuntu版本:20.04移植开发板选择:FS4412(ARM A9)1、下载源码我们可以在下面这个网站上下载最新的ftp://ftp.denx.de/pub/u-boot/也可以使用以前的版本(本试例)链接2、将uboot源码添加到ubuntu自己的目录中并解压操作,然后进入此文件tar xvf u-boot-2013.01.tar.bz2cd u-boot-2013.013、指定交叉编译工具链...
2022-03-11 09:50:36
1196
原创 根文件系统的制作方法
环境:ubuntu20.04开发板:fs4412根文件版本:busybox-1.22.1.tar.bz2下载路径为:http://busybox.net/downloads/或者从资料包获取:1、将压缩包拷贝到虚拟机并解压进入tar xvf busybox-1.22.1.tar.bz2cd busybox-1.22.12、配置源码make menuconfig输入arm-none-linux-gnueabi-3、保存退出,然后mak...
2022-03-10 16:54:48
847
原创 Linux内核移植操作步骤
环境:ubuntu20.04开发板:fs4412linux内核版本 3.14资料包:1、将linux-3.14.tar.xz拷贝到ubuntu中下解压并进入Linux-3.14tar xvf linux-3.14.tar.xzcd linux-3.14接着修改内核顶层目录下的Makefilevim Makefile导入默认配置make exynos_defconfig配置内核make menuconfig注:如果出现问题,先执.
2022-03-09 11:46:16
1912
原创 TFTP文件传输&NFS挂载&ARM开发板移植Linux系统步骤
环境:ubuntu 20.04开发板:FS4412(Cortex-A9)一、TFTP文件传输环境搭建:sudo apt-get install tftpd-hpa配置服务器: 设置共享的路径位置sudo vim /etc/default/tftpd-hpa对应修改即可重启服务 配置生效sudo /etc/init.d/tftpd-hpa restart测试查看服务进程是否配置成功 ps -aux | grep tftp在这里顺便把...
2022-03-07 20:06:23
1736
原创 Qt实现一个简易计算器(加减乘除等)
话不多说,先贴图所用到的图形都是基于UI界面设计来的,所以自己需要写的代码很少Widget.h代码如下#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QString>#include<QStack>#include<QTime>#include<iterator>#include<QLineEdit>namespace Ui
2022-02-23 16:31:15
5966
1
原创 解决Ubuntu环境下Qt中无法输入中文的问题
环境ubuntu20.04问题:明明在ubuntu中安装的中文输入法,但是在Qt中无法像这样输入中文解决打开终端,在终端输入sudo apt-get install mesa-common-dev然后输入sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev如何出现中断安装失败现象,可以使用下面命令更新一下sudo apt-get update这样就可以了...
2022-02-10 14:50:48
1656
2
利用ADPD188BI光学烟雾和气雾剂检测模块进行烟雾测试
2024-09-12
APPD188BI烟雾检测模块,烟感,烟雾传感器数据手册 烟雾传感器寄存器手册,烟雾模块的使用 APPD188BI烟雾检测模块
2024-09-12
罗技 GHUB驱动的官方下载安装包
2024-08-01
MODBUS POLL、MODBUS SLAVE、虚拟串口软件
2024-07-18
这个输出结果为什么会是这样呀,结构体里面的冒号是什么意思
2022-02-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人