自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 LCD 驱动 伪代码

LCD驱动

2024-04-19 11:20:09 171

原创 MODBUS RTU C语言 主机接收实现

MODBUS RTU C语言 主机接收实现

2023-07-03 15:50:29 655

原创 GD32 CAN1接收不了

GD32 CAN1接收不了

2023-06-30 09:48:31 476 1

原创 嵌入式系统的报错设计

嵌入式 报错设计 故障设计 状态机中的报错设计

2023-01-05 16:52:03 205

原创 UTF-8转GBK

UTF-8转GBK

2023-01-03 15:08:20 4271

原创 NTC 负温度系数 10倍显示

NTC 负温度系数 10倍显示

2022-12-30 14:11:21 111

原创 迪文T5L屏 电脑端 更新时间 有CRC校验

迪文屏电脑端更新时间

2022-11-21 09:42:14 298

原创 迪文T5L 串口4 crc-modbus实现

迪文T5L 串口4 crc-modbus实现

2022-11-12 12:32:19 821

原创 负温度系数传感器温度获取 NTC3950

负温度系数传感器温度获取 二分法 查表法

2022-11-05 17:23:41 516

原创 PWM 边界的思考

PWM 边界

2022-10-17 11:00:09 100

转载 以后将按照这个这个命名规范来编程

以后的命名规范

2022-07-16 20:25:40 51

转载 recv()函数接收不全,一定要使用循环接收,真坑

recv()函数接收不全

2022-07-10 18:26:14 1023 1

原创 基本排序算法

目录1.冒泡排序(缺点:元素交换次数太多,意味这内存的更多读写操作)2.鸡尾酒排序-冒泡排序的优化3.选择排序4.插入排序5.希尔排序6.归并排序7.快速排序8.堆排序9.计数排序10.桶排序11.基数排序1.冒泡排序(缺点:元素交换次数太多,意味这内存的更多读写操作)void bubbleSort(int *arr,int length){ int i,j,temp; for(i=0;i<length-1;i++)...

2022-05-21 13:20:16 82

原创 51.N皇后

n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/n-queens著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * Return an array...

2022-05-19 15:16:23 66

原创 开方 C语言 迭代法加二分法

迭代法对大于1的数计算更准确,小于1的话就比较麻烦,所以大于1用迭代,小于1用二分#define n_MAX_ERROR (0.002)//最大为误差#define n_MAX_COUNT_MAX_TIME 10 //最大计算次数double mySqrt( double x ){ double a = x; double min,max,mid,res; unsigned char t; unsigned char count=0; if(x<

2022-03-25 15:50:54 1110

原创 红外接收C语言实现 NEC 定时器

使用定时器实现红外的接收,定时器的时间为80uS,协议为NEC。 typedef unsigned char bit;typedef unsigned char BYTE;//timer 80us 定时器每80us进去一次#define n_InfraredLowBitMin 4//560us#define n_InfraredLowBitMax 10//560us#define n_InfraredZeroBitMin n_InfraredLowBitMin#define n_Inf

2022-03-01 18:01:10 829

原创 通过AD旋钮(编码器)改变数据,C语言实现

说明:我有一个带位置限制的编码器,里面是一个滑动变阻器,我通过AD采样到的值是0X00-0XFF,我想通过旋转编码器改变某个范围内的数值,比如30-80,但我不想直接映射,因为这样会出现调一小幅度,数值变化较大的情况。所以我想:1.向上旋转,数据++,方向为上,在方向为上时,不理会向下旋转的动作。2.向下旋转,数据--,方向为下,在方向为下时,不理会向上旋转的动作。typedef volatile unsigned char BYTE;typedef volatile unsigned

2022-01-06 13:07:41 848

原创 滤波-限幅消抖

//////////////////////////////使用限幅消抖 ////vesion1.0 ////2021.12.03 //////////////////////////////#define n_OPTIMIZE_OFFSET 1//优化偏差#define n_OPTIMIZE_COMPARE_TIME 10 //比较的次数typedef volatile unsigned char BYTE;...

2021-12-03 12:50:27 252

原创 MODBUS RTU C语言 从机实现

参考链接:Modbus协议解析--小白一看就懂的协议_“社会大学三年级”的博客-CSDN博客_modbus协议详解水平有限,仅供参考////////////////////////////////////////////////////////////modbus_rtu//地址(1字节)+功能码(1字节)+寄存器地址(2字节)+数据()+校验(2字节)////////////////////////////////////////////////////////////typedef

2021-09-16 18:13:21 4975 4

原创 AVR IO操作 异常

我在中断中用pc1进行IO口翻转驱动无源蜂鸣器;主循环中pc2-pc4驱动LCD驱动芯片;出现了一个问题,蜂鸣器异响,IO口的翻转频率也出现了变化。原因是AVR的IO口操作是整个IO操作,比如PORTC;例如 PORTC |=0x02;上面这条语句翻译成汇编之后是两条语句,如果在这两条语句中间跳到了中断,就会出现问题。解决的办法有两个:1.IO操作的时候屏蔽中断。2.把IO操作改成汇编,比如asm(“CBI (0x15),1”);//清零PORTC的bit1,因为PORTC的地址是0X15

2020-12-08 00:30:21 370 1

原创 AVR比合泰消耗ROM(flash)

我写了一个基本相同的实现,用的是8K的flash,我用AVR几乎写不下(还需要我优化很多东西),用合泰仅用了54%。不知道是不是编译器的原因。还有,我测试了AVR的语句,单个语句(比如判断)要比合泰的多几个字节。...

2020-11-27 17:32:56 140

转载 WinAVR在win10下编译报错 win10安装不了USBISP驱动

1.WinAVR在win10下编译报错具体报错是:Build started 18.11.2014 at 23:33:54 0 [main] sh 13304 sync_with_child: child 11844(0x14C) died before initialization with status code 0xC0000142 38575 [main] sh 13304 sync_with_child: *** child state waiting for long...

2020-11-23 18:42:09 1495

原创 把一个范围的数映射到另一个范围

如何将一个范围的数映射到另一个范围,这是一个很简单的问题。但是有时候8位单片机对乘除法支持不是很好,会出现溢出,这样你就不能很好地得到你想要的数。这里我提供一个简单的算法,可以对整型进行误差较小的映射。/*************************************目的:将200 - 1023 中的某个数映射到 20 - 160 上*原范围:200 - 1023*目标范围:20 - 160*大数到小数的映射会出现精度的损失,所以先将小数的范围扩大,*这里采用的是左移n位,

2020-09-20 01:05:58 4866

原创 error: expected constructor, destructor, or type conversion before '*' token

报错:error: expected constructor, destructor, or type conversion before '*' tokenclass AVLTree{private: struct BTNode { int key; struct BTNode *left; struct BTNode *r...

2019-12-04 12:25:47 1735

原创 linux之间文件传输scp传输

scp -r yourFile remoteUser@remoteAdress:remoteFile举个栗子:scp -r ./helloWorld .txt [email protected]:/root/home/就把当前目录中的helloWorld.txt发送到远程目录 /root/home/ 下了...

2019-11-07 13:08:55 162

原创 在linux和windows之间传文件之ftp传输

查看linux是否安装ftp: rpm -qa | grep vsftpd 2.安装ftp: yum install vsftpd 3.到 /etc/vsftpd/目录下修改参数 cd /etc/vsftpd 4.修改ftpusers的参数,把root注...

2019-11-05 21:23:49 1307

原创 Linux C语言 socket 多线程(循环创建多个线程,同时进行,非阻塞)

我看了一些博客,多线程网络编程用的是堵塞,也就是 pthread_join函数,可是既然是监听接口怎么能用堵塞的。我要做的东西是:监听80端口,然后接收请求,创建一个线程完成相应任务。我遇到的问题是:用阻塞(也就是pthread_join(thread_id))相当于单线程无法满足要求,用非阻塞(pthread_detach(thread_id))然后我的socket没反应。问题原因...

2019-10-03 16:33:58 2986

原创 486. 预测赢家 leetcode

给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入: [1, 5, 2]输出:...

2019-07-04 18:09:52 318

原创 单片机温度传感器的想法

1.首先单片机AD是多少位的,比如n位,那么单片机AD的最大值是2^n-1;2.串接传感器的电阻为R,传感器的电阻为Rc3.AD的值: val = (Rc/(R+Rc))*2^n;4.根据供应商提供的温度和电阻的匹配表,进行计算。温度和电阻一般为非线性的,所以一般会用查表法来查找温度值(精度要求不高的情况下)。8位单片机ram很小,把你要查的数据设成 const, 别设成v...

2019-06-14 17:01:00 501

转载 编码器的扫描-单片机

编码器家用电器旋转编码器的扫描首先说一下端口怎么接,A、C接到单片机的引脚,都要接上拉电阻,C接地。家用旋转编码器稳定时(就是停下来的时候),有AB有两种状态,00,和11;顺时针旋转时:A 0 0 1 1 0B 0 1 1 0 0逆时针旋转时:A 0 1 1 0 0B 0 0 1 1 0由于上拉的原因,ON的状态为低电平,OFF状态为高电平经过这五种状态我们会输出...

2019-06-10 13:48:39 997

转载 好酷的单片机IO口扫描方法

一个很棒的IO扫描方法,我无意间搜到的https://www.amobbs.com/forum.php?mod=viewthread&tid=854599&highlight=%E5%A0%AA%E7%A7%B0%E4%B8%80%E7%BB%9D

2019-05-27 11:24:42 693

原创 C语言可变参数函数的两种实现方式以及va_list、va_start、va_arg、va_end详解

函数的可变参数的实现方式有两种:1.通过库函数stdarg.h实现先贴代码int add(int n,...){ int i = 0; int sum = 0; va_list ap; va_start(ap,n); for(i = 0;i < n;i++) { sum += va_arg(ap,int); ...

2019-05-08 22:08:22 1094

原创 STM32的独立看门狗

独立看门狗时钟频率一般以40KHz,但不是非常准确,变化范围在15-47KHz。看门狗在开启后不能关闭,除非复位。1.寄存器关键字寄存器 IWDG_KR:用来写指令,指令有0xAAAA(把IWDG_RLR的值载入到计数器,避免产生复位),0x5555(允许对IWDG_PR和IWDG_RLR寄存器的访问),0xCCCC(开启看门狗)。IWDG_PR 和 IWDG_RLR 寄存器具有...

2019-03-27 22:39:05 639

原创 8051 串口程序

将串口接受到的信息发回去#include “reg51.h"#defineMAXSIZE 30 //字符串的最大长度voidSend();intindex = 0;charbefore = 0;//记录之前传送过来的字符char now = 0;//记录现在传送过来的字符char sign = 0;//是否发送完char str[MAXSIZE];voi...

2019-03-24 22:01:33 1278

原创 Leetcode 525. 连续数组

给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。int findMaxLength(int* nums, int numsSize) { int res = 0; int temp = 0;//记录一段长度相加的值 int *map = (int *)malloc(sizeof(int)*(numsSize+1)); int r...

2019-03-19 20:51:20 168

原创 51单片机寄存器篇之一

1.定时/计数器方式寄存器TMOD(段寻址)GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0 GATE:门控制位C/T:定时器和计数器的模式选择为M1M0:工作模式选择位2.控制寄存器TCON(可以位寻址)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ...

2019-03-19 20:46:58 396

原创 Leetcode 945. 使数组唯一的最小增量

给定整数数组 A,每次move操作将会选择任意A[i],并将其递增1。返回使A中的每个值都是唯一的最少操作次数。int minIncrementForUnique(int* A, int ASize) { int flag[41000]; int i; int times = 0; memset(flag, 0, sizeof(f...

2019-03-19 20:16:12 199

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除