自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 excel中如何筛选一列中重复的内容,相同的内容只保留一次

筛选excel中一列中重复出现的值,统计里面的类别有多少,即相同的内容,只保留一次。

2024-12-25 22:09:32 2767

原创 java实现ModbusCRC16校验

电流数据采集器是RS485 Modbus协议,想通过java实现串口数据的采集,因为涉及到串口通信的CRC校验,所以需要通过java来实现对采集的电流值进行校验,确保每次读到的电流值都是正常的。Modbus协议是一种串行通信协议,被广泛用于设备之间的通信。,其核心思想是将数据视为一个长的二进制数,2. 什么是ModbusCRC16校验。,称此寄存器为CRC寄存器,3. CRC16校验步骤。CRC16校验是一种。

2024-11-20 23:20:44 639

原创 简单记录牛客top101算法题(初级题C语言实现)BM83 字符串变形 && BM84 最长公共前缀

在ASCII表中,a的ASCII值是97,A的ASCII值是65,大写字母是排在小写字母前面的,所以大写字母和自身的小写字母就是相差97 - 65 = 32。开始的时候,以为是从中间对称反转一下就可以了,再把大小写反转一下,结果不是这样的,后来没有做出来,就看了官方的代码讲解,找到了思路;1.C语言中有库函数,可以判断字母是大写还是小写,并实现相应的转换。2.不使用库函数,自己编写函数来判断。

2023-12-31 13:57:13 557

原创 WPS中如何根据身份证号生成出生日期并排序

日期的排序必须是DATE格式,如果是其他的格式,不能排序(或者排序结果是错的),使用文本排序也不行。首先要把格式转换成DATE格式,再进行排序。

2023-12-26 17:44:58 2300

原创 有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

要对其中数组进行排序并保持它们之间的一一对应关系,可以使用结构体数组来实现。以下面的这个对应关系为例,进行相应编程实现。

2023-11-21 23:11:26 1101

原创 C语言基础知识——枚举

枚举使得代码更加可读和易于理解,提高了代码的可读性和可维护性。

2023-09-05 23:47:39 6774

原创 简单记录牛客top101算法题初级题(C语言实现)BM12 单链表的排序

简介:冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是从列表的一端开始,依次比较相邻的两个元素,如果它们的顺序不正确就交换它们,然后继续向列表的另一端移动,重复这个过程,直到整个列表变得有序为止。整个过程的思路是,从堆中不断选择最大的元素,将其放在数组的末尾,然后将剩余的元素重新构建为最大堆,重复这个过程直到整个数组都排好序。左指针 left 和右指针 right 继续移动,直到left的索引是2,就是值为3的时候,right的索引是1,值是1的时候,停止循环。3,8,7,7,9。

2023-09-01 14:54:02 269

原创 简单记录牛客top101算法题初级题(C语言实现)BM42 用两个栈实现队列 && BM43 包含min函数的栈 && BM44 有效括号序列

栈(Stack)是一种非常重要的数据结构,它基于后进先出(Last-In-First-Out,LIFO)的原则,就是栈中最后插入的元素将会是第一个被移除的元素。栈的两个基本操作:压入(Push):将元素放入栈的顶部,叫做 “压入” 元素。弹出(Pop):从栈的顶部移除元素,叫做 “弹出” 元素。栈的常见的应用场景和示例函数调用栈:编程语言使用栈来跟踪函数的调用和返回,以确保正确的控制流程。表达式求值:栈可以用于计算数学表达式,特别是中缀表达式转换为后缀表达式,然后进行求值。

2023-08-30 19:47:54 277

原创 简单记录牛客top101算法题(初级题C语言实现)BM24 二叉树的中序遍历 && BM28 二叉树的最大深度 && BM29 二叉树中和为某一值的路径

  ** 要求:给定一个二叉树的根节点root,返回它的中序遍历结果。**                        1.1 自己的整体思路(与二叉树的前序遍历大致一样)使用二叉树的前序遍历方法,递归完成二叉树元素的访问。先遍历二叉树,求出二叉树的结点数量以后,再申请数组,这样节省内存大小。二叉树的前中后序遍历,只需要改变访问根结点的代码位置,其与递归左子树和右子树的位置,代表是前中后序的一种。1.2 小结1.2.1 求二叉树结点的个数  假设这个二叉树如下所示:       

2023-08-15 23:01:16 552

原创 简单记录牛客top101算法题(初级题C语言实现)BM17 二分查找 && BM21 旋转数组的最小数字 && BM23 二叉树的前序遍历

1.计算中间位置 mid,并与 right 指针所指向的元素进行比较:如果 rotateArray[mid] > rotateArray[right],说明最小值在 mid 右侧,将 left 更新为 mid + 1。如果 rotateArray[mid] < rotateArray[right],说明最小值在 mid 左侧或就是 mid,将 right 更新为 mid。

2023-08-11 11:17:56 818

原创 简单记录牛客top101算法题(初级题C语言实现)BM8 链表中倒数最后k个结点 && BM10 两个链表的第一个公共结点&& BM6 判断链表中是否有环

要求:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。输入: {1 , 2 , 3 , 4 , 5 } , 2 返回值: {4 , 5 } 说明:返回倒数第 2 个节点 4 ,系统会打印后面所有的节点来比较。输入: {2 } , 8 返回值: {

2023-08-09 14:57:54 452

原创 简单记录牛客top101算法题(初级题C语言实现)BM4 合并两个排序的链表 && BM13 链表是否为回文结构&& BM15 删除有序链表中重复的元素

再遍历一遍链表,找到链表对称的位置,并记录下对称位置的指针,如果是4(偶数)个元素,就记录3(偶数 / 2的下一个位置)的指针位置,如果是7(奇数)个元素,就记录4(奇数 / 2的下一个位置)。3.检查快指针是否到达链表末尾(即快指针的下一个节点为空,或者快指针本身为空)。3. 反转对称位置的指针后面的链表,然后进行依次比较,如果都相同返回true,有一个不相同,就返回false。3. 在第三种情况中,要考虑到比较链表中的元素时,链表1中的元素遍历完还是链表2中的数据先遍历完成。

2023-08-08 15:35:20 494

原创 C语言基础知识——结构体和共用体

结构体类型:结构体类型是用户自定义的数据类型,用于表示一组相关的数据,这些数据可以是不同的类型。(也就是结构体的定义)结构体变量:也就是结构体类型变量,它是根据结构体类型创建的具体实例,用于存储实际的数据。int age;float gpa;这里就是创建了一个名为Student的结构体类型。这里就是创建了个名为student1和student2的两个结构体变量。

2023-08-03 00:13:00 1801

原创 简单记录牛客top101算法题(初级题C语言实现)判断回文字符串 && 反转字符串 && 合并两个有序的数组

  给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。  字符串回文指该字符串正序与其逆序逐字符一致。1.1 整体思路统计字符串个数。遍历字符串,首尾依次比较字符是否相等备注:  以字符串数组5个元素为例子,5 / 2 = 2,i能取到的值就是0和1(前两个元素),所以从尾开始算起的话,也是取了最后一个元素和倒数第一个元素(后两个元素);  以字符串数组6个元素为例子,5 / 2 = 3,i能取到的值就是0和1和2(前三个

2023-07-30 19:49:38 460

原创 基于stm32F4探索者,通过RS485通信模块读取红外测温仪的温度数据

RS485是一种串行通信协议,用于在多个设备之间进行数据通信。它定义了电气特性、信号线配置和通信协议,使得多个设备能够通过一对差分信号线进行全双工通信。特别适用于长距离通信和多设备连接的应用。1.差分信号:RS485使用两根信号线(A和B)来传输数据,其中一个为正向传输,另一个为反向传输。这种差分信号传输方式使其具有较强的抗干扰能力,适合在噪声较高的工业环境中使用。2.多点通信:RS485支持多点通信,即多个设备可以连接在同一条信号线上,实现全双工通信。

2023-07-21 15:56:37 2304 5

原创 简单记录一下剑指offer的编程题(C语言实现)——替换空格&&反转链表

因为已经对cur->next进行操作了,即cur指向前一个结点,现在再移动cur的指针位置,已经和头结点的下一个结点断开了,找不到下一个节点的位置了,所以还是要引入新的结点变量,来记录头节点的下一结点来完成遍历链表。新建一个数组,长度为替换空格后的长度+1,遍历原始数组,往新数组中按顺序添加字符。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。链表是带指针的结构体;

2023-07-19 10:35:24 581

原创 FreeRTOS简单任务创建和任务删除(基于stm32F407)

使用动态方法 xTaskCreate()创建任务,使用vTaskDelete()函数删除任务;创建开始任务start_task,在开始任务中创建其他三个任务,创建task1任务实现LED0每500ms闪烁一次,创建task2任务实现LED1每500ms闪烁一次,创建task3判断按键KEY0是否按下,按下则关掉task1。

2023-06-10 11:06:08 1529

原创 使用stm32CubeMX生成hal库代码——点亮LED灯

编译代码时遇到问题,查阅资料,发现是没有启动文件,这里在其他的源码文件中复制一个startup_stm32f407xx.s文件,然后添加到现有工程中,如下所示。

2023-05-31 11:33:14 1571

原创 基于stm32F407的hal库,移植FreeRTOS的具体步骤和遇到的问题(看正点原子的视频)

遇到如下报大量语法错误,原因是keil编译器问题,把编译器的版本设置为V5即可。最后把程序烧到开发板中,如果LED灯没有亮,复位几次,观察LED是否亮。

2023-05-26 17:44:14 3311 1

原创 卸载旧版本Keil,安装新版本的注意事项以及安装完成以后的一些问题

但是点上面的Device Connect,没有反应,有这个提示ST LINK is not in the DFU mode plesse restart it,在网上查找解决办法,有的说要重新下载st link utility工具,再升级,这里没有重新下载,关闭keil,拔掉下载器,重新打开keil,再插上下载器,ST-LINK->Firmware update->device connect,就能更新了,最后成功把程序烧到开发板。

2023-05-25 12:35:07 7740 3

原创 解决adams中导入装配体,出现装配体中的所有零件重复问题

在adams中导入零件前,一定要确定初始状态再导入,因为里面的装配体初始运动位置是不能修改的,就是你导入时的位置。

2023-05-10 20:09:35 2248

原创 串口通信——stm32F407实现串口发送坐标,输出x坐标和y坐标

在数据的类型上,x和y的坐标值类型是 int16_t ,就是有正负号,写程序是开始写成uint16_t,导致输出负数错误。

2023-04-20 09:29:17 2395 2

原创 如何快速创建一个Ant Design工程

在计算机的cmd窗口中输入上面的代码,这里是先进入F盘(这里把工程创建在F盘),最后的my-project是创建的Ant Design工程名,自己可以改这个名称,然后系统会自动在F盘创建该文件夹,把工程文件创建到该文件夹中。

2023-04-03 23:21:02 991

原创 用正点原子的板子(STM32F4探索者)做DAC 实验

软件触发模式,指的是向软件触发寄存器SWTRIGR中写入命令时触发转换,也就是将DOR寄存器中的数据进行转换;使用STM32F4内部 DAC1来输出电压,通过 ADC1的通道5采集DAC的输出电压,并通过串口打印电压值。该函数就是把想输出的电压值换算成对应DAC的输入值,这里value值就是期望的电压值,这里做了10倍处理。使用跳线帽把DAC和ADC的引脚连起来,这里把想输出的电压值设置为1v,2v,3v,观察串口输出的结果。这里使用的是不使用触发。这里使用DAC的通道1,其对应的引脚是PA4。

2023-03-22 16:54:00 2298

原创 用正点原子的板子(STM32F4探索者)做窗口看门狗(WWDG)实验

宏定义的时候,后面不要加封号,会报错!!!

2023-03-21 14:43:42 1022

原创 用正点原子的板子(STM32F4探索者)做独立看门狗(IWDG)实验

由于程序是由按键实验复制过来的,在没有把延时函数初始化的情况下,就使用了延时,导致程序就卡在了delay_ms(200)上,经过调试发现问题,加上初始化,最后解决了这个问题。//初始化延时函数 delay_ms(200);

2023-03-21 10:10:18 1175 1

原创 看野火的视频,用正点原子的板子(STM32F4探索者)做ADC读取电压实验

将ADC配置连续模式,只需要在第一次转换时给触发信号,后面不需要再给。使用STM32F4的ADC1通道5(PA5)来采样外部电压值(这里采样两个电压值TPAD(3.3v),GND(0v)),最后通过串口打印电压值。这里是用于模拟电路的时钟,就是APB2的时钟,这里的时钟是84MHZ,PCLK2:APB2高速总线时钟。这里转换数据结束就会产生中断(使用的是规则通道,不是注入通道),然后进入中断中读取ADC采集到的值。这是ADC采集到的值转换成电压的公式,就是比例关系:3.3:4096 = x:采集到的数值。

2023-03-20 20:52:05 2711 1

原创 用正点原子的板子(STM32F4探索者)做PWM 输出实验

使用 TIM14 的通道 1 来产生 PWM 控制 LED0(DS0) 的亮度。由上图可以看出,GPIOF9引脚对应的是定时器TIM14的通道1。由上图可以看出,GPIOF9引脚对应的是LED0。

2023-03-17 00:00:54 1324

原创 看野火的视频,用正点原子的板子(STM32F4探索者)做输入捕获(脉宽测量)实验

如图所示,WK_UP是与引脚PA0相连接的,正常情况下,未按下KEY_UP键,PA0是低电平,按下按键是高电平,实验目标就是捕获高电平脉冲的时间(就是按键按下去的时间)。使用定时器TIM5 的通道 1(PA0)来做输入捕获实验,捕获 PA0 上高电平的脉宽(用 KEY_UP 按键输入高电平),最后通过串口打印高电平脉宽时间。Tclk:TIM5 的输入时钟频率(单位为 Mhz),这里TIM5的时钟频率为是84Mhz;如图所示,PA0引脚是通用定时器5的通道1。按下按键时间长短不同,捕获的时间不同。

2023-03-16 21:00:38 1802

原创 在C语言中,浮点数如何以16进制的形式转换为字符串(使用sprintf)

这里需要把浮点数,乘以10的倍数变成int型数据,才能成功转换。使用sprintf函数,把浮点数以16进制的形式转换为字符串。这样直接写入,不是16进制,浮点数直接转换是不能实现目的的。可以看到转换成功,后面如果需要解析数据,除以倍数就可以了。

2023-03-13 21:14:54 1596

原创 看野火的视频,用正点原子的板子(STM32F4探索者)做DMA实验

关于存储器到外设的数据传输:就是把一个数据中的数据通过DMA传输到串口的数据寄存器中(USART_DR),串口把数据发送出来,通过串口助手展示。关于存储器到存储器的数据传输实验: 就是把一个数组的数据通过DMA复制到另一个数组中去。这里使用的是DMA2_Stream7,通道4,串口是USART1。使用DMA完成存储器到存储器的数据传输和存储器到外设的数据传输;实验1结果如下图所示,可以看到数据传送成功。实验2结果如下图所示,可以看到数据传送成功。

2023-03-10 17:17:34 1584

原创 用STM32F4探索者做软件模拟IIC实验

通过软件模拟I2C,实现和24C02(EEPROM)之间的双向通信。初始化IIC;编写起始、停止、应答信号函数;编写向24C02指定地址写入数据函数;编写在24C02指定地址读取数据函数;编写main函数这里是使用GPIOB8,GPIOB9模拟IIC,GPIOB8对应的是IIC的SCL,GPIOB9对应的是IIC的SDA。如图所示,PB9对应的就是18位和第19位,00是输入模式,01是输出模式;两个位&(与运算),相同为本身,不同为0;两个位|(或运算),有1为1,两者0为0;&= ~(1

2023-03-07 14:40:55 1948

原创 看野火的视频,用正点原子的板子(STM32F4探索者)做SPI实验

由上面的时序图可以看出,先要发送一个0X90,再发送一个任意字节,再发送一个任意字节,再发送一个0X00,然后接收字节是制造商ID,再接收字节是设备ID。可以看到前20个字节的数据内容是0X9,后面的字节内容都是0XFF,证明写入和读取数据正确。发送0X02,发送扇区地址,分三次发送扇区地址,发送内容字节,进行数据存储。发送0X03,发送扇区地址,分三次发送扇区地址,发送任意字节,返回数据。发送0X05,等待返回的值是否为0,这是为1就是忙碌,0就是不忙碌。发送0X20,发送扇区地址,分三次发送扇区地址。

2023-02-27 14:12:40 1841

原创 SCL3300 三轴倾角计中解决加速度读取负数的情况

这是手册里面的四种工作模式。这里是三轴加速度值的计算过程。这里选取模式2,加速度范围是±2.4g,读取的是Z轴的加速度值。

2023-02-16 11:12:36 2555 4

原创 使用山外多功能调试助手展示多路通道虚拟示波器(1路和2路)

展示三轴加速度传感器中,z轴加速度实时波形图(一路通道),后面又展示了z轴角度(第二路通道)。每隔40ms发送一次数据,main中调用这个test()函数。结果展示(这里的数据类型是选择uint16_t)结果展示(这里的数据类型是选择uint16_t)这是山外多功能调试助手的通信协议。发送数据,其他代码和上面是一样的。

2023-02-14 16:45:53 2101 1

原创 定时器控制LED灯的亮灭(每隔1s翻转一次灯的状态)

其中 #define GPIO_Pin_10 ((uint16_t)0x0400), 0000 0100 0000 0000就是第10位为1,GPIOF的ODR寄存器的初始值都是0,所以异或GPIO_Pin_10 就是把ODR寄存器的第10位置1,再置0这样进行反转。按照下面的设置:计数一次的时间是 (1000 * 84) / 84000000 = 1ms (后面计数1000次就是1s,所以就是LED经过1s亮灭一次)写一个1s的定时器,来控制LED灯的亮灭。编写LED.h函数;

2023-01-29 23:32:51 10662

原创 串口通信——串口助手发送正数/负数(以ascii码的形式发送或者以16进制形式发送),最后展示出发送的数

先找规律,这里是假设发送的数字是-29987,函数中传入的值一个是数组,一个是数组的总索引值,这里取到的字节首先要减去0X30,得到这个数字是几,然后再乘以10的几次方,2在万位上,需要乘以10000,它的索引值对应的是1,传来的索引总数是6,所以乘的10次方应该是:10的次方数 = 6(总索引值) - 1(2所在的索引值) - 1;9在千位上,需要乘以1000,它的索引值对应的是2,传来的索引总数是5,所以乘的10次方应该是:10的次方数 = 5(总索引值) - 1(2所在的索引值) - 1;

2023-01-29 00:21:02 9120

原创 串口通信——发送和接收数据(8位和16位数据之间的转换)

在编写接收数据中断函数时,如果使用printf进行接收数据的打印时候,只会打印接收到的第一个字节,这里是把printf放到接收和空闲中断之间,会产生问题。//接收数据中断函数 void USART1_IRQHandler(void) {uint8_t i;//每当接收到1个字节,会产生USART_IT_RXNE中断 rx_buff [ rx_cnt ] = USART_ReceiveData(USART1);//把这个数据放到数组中去 rx_cnt ++;

2023-01-27 23:54:03 16433

原创 串口通信(stm32F4)——通过串口助手发送led on或者led off控制LED灯的亮灭

在编写接收数据中断函数时,如果使用printf进行接收数据的打印时候,只会打印接收到的第一个字节。//每当接收到1个字节,会产生USART_IT_RXNE中断 rx_buff [ rx_cnt ] = USART_ReceiveData(USART1);//把这个数据放到数组中去 //printf("value = %x\n",rx_buff[rx_cnt]);//加上这只会接收到第一个字节 //printf("value = %d\n",rx_cnt);rx_cnt ++;

2023-01-27 21:17:32 8608 1

原创 看野火的视频,用正点原子的板子(STM32F4探索者)做系统定时器实验

编写一个毫秒级的延时函数,控制LED的亮灭。这里的灯是LED1,端口是GPIOF,引脚是PIN10。

2022-12-21 23:39:47 853

bat文件转换为exe文件工具

可以将bat转换成exe文件,直接可以运行

2025-02-17

CP210x usb转串口驱动安装包(含有win7与win10的32位和64位的版本,解压即可用)

usb转串口驱动安装包,解压即可用!

2024-11-13

FT232驱动安装包(串口转USB驱动,解压即可用!)

串口转USB驱动,解压即可用!(FT232_Driver_64位)

2024-11-13

串口调试助手,解压即可用!

串口调试助手,很实用!

2024-11-13

支持多种语言的代码排列工具

AStyleWin 是一个针对C、C++、C#、Java等编程语言的源代码自动格式化工具。AStyleWin 是 AStyle (Artistic Style) 的一个 Windows 平台下的图形界面版本,通过 AStyleWin,开发者可以方便地对源代码进行格式化,使其符合预定的编码规范和风格。 AStyleWin 的主要功能包括: 代码自动格式化:AStyleWin 支持对代码进行自动格式化,包括缩进、空格、换行等方面的调整,使得代码具有一致的格式,易于阅读和维护。 多种格式化选项:AStyleWin 提供了丰富的格式化选项,可以根据不同的编码规范和风格需求进行定制化配置。 批量格式化:AStyleWin 支持批量处理多个源文件,能够一次性对整个项目或目录下的源代码文件进行格式化。 预览功能:AStyleWin 可以实时预览格式化后的代码,方便开发者查看格式化效果并调整配置选项。 备份功能:AStyleWin 在格式化代码之前可以选择备份原始代码,以防止不可逆的格式化错误。

2023-07-20

数据可视化大屏显示系统

最新数据可视化大屏显示系统模板,几十套模板可供选择,都是可以直接套用的。

2022-12-21

空空如也

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

TA关注的人

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