自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

羽墨志

不经历千百遍的调试,怎能体会成功时那一刹那的欢喜。

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

原创 【LTE CAT1】ML302 OpenCPU | 应用开发入门

1. 入口函数ML302 OpenCPU的入口函数是void ML302_OpenCPU_Entry(),位于文件[sdk_root]/src/cm_main.c中。该函数在模组主程序main函数中被调用,用于用户应用线程的建立,因此该函数 中不能阻塞。【注】[sdk_root]为SDK的根目录位置。2. 增加源文件在sdk_root/src目录下新建文件夹user,并新建源文件user_app.c;在Makefile文件中将新增的源文件目录添加到SRC_DIRS变量中,以空格与其他源文件目

2021-04-04 21:02:00 1269 1

原创 【LTE CAT1】ML302 OpenCPU | 开发环境搭建及固件更新

【LTE CAT1】ML302 OpenCPU | 开发环境搭建及固件更新ML302 OpenCPU的SDK中已经提供了交叉编译链工具,在Windows 7/Windows 10 X64下开箱即用,暂不支持在其他平台进行应用程序的开发。1. SDK目录结构解压官方提供的ML302_OpenCPU_TTS_2.2.1.2010091712_release.7z压缩包即可得到如下文件:目录或文件说明docAPI说明文档firmware固件生成目录inc头文件目录

2021-04-02 17:40:21 1872 1

原创 变限积分函数的求导

一、定义设函数f(x)f(x)f(x)在区间[a,b][a,b][a,b]上连续,设xxx为区间[a,b][a,b][a,b]上的一点,考察定积分∫axf(x)dx=∫axf(t)dt\int _a^xf(x)dx=\int _a^xf(t)dt∫ax​f(x)dx=∫ax​f(t)dt如果上限xxx在区间[a,b][a,b][a,b]上任意变动,则对于每一个取定的xxx值,定积分∫ax...

2019-10-12 16:35:57 107955 10

原创 ESP8266 Flash的分布及其读写操作

读写操作API基本操作(1) spi_flash_erase_sector 功能 擦除 Flash 的某个扇区。 函数定义 SpiFlashOpResult spi_flash_erase_sector (uint16 sec) 参数 uint16 sec- 扇区号,从0 开始计数,每个扇区大小为4KB。 返回值 SpiFlashOp...

2018-08-03 16:24:43 12954 8

原创 Linux内核模块(Module)的单独编译

模块文件/** file name: hello.c*/#include<linux/module.h>#include<linux/init.h> #include<linux/moduleparam.h>MODUL...

2018-08-01 11:02:41 9574

原创 sizeof获取数组长度

昨天开始看《算法导论》这本书,第一个算法就是(直接)插入排序,根据书里给出的伪代码写出了C语言代码,也根据自己的理解重新写了一个。虽然实现了算法的基本要求,但有些细节没有处理好,今天就来完善一下。在昨天实现的代码中,用来测试的数组intarray[]={5,2,4,6,1,3};是固定的,如果要更换待排序数组话,原来程序中的相关变量就会因为数组长度的改变要做相应的改变。我想要的就是给定任

2016-10-06 21:17:38 53023 3

原创 数组的格式化输出

一、字符串的格式化输出void print_string(){ char str[] = {"This is a string!"}; char *p; p = str; //指针初始化 printf("The string = %s\n",str); printf("The string = %s\n",p);}二、一维整数数组的格式化输出void print_i

2016-10-05 17:11:42 9435

原创 MATLAB | 批量修改视频文件的视频帧大小并进行直方图均衡

批量读取文件夹内MP4格式的视频,逐帧改变视频帧的大小,对R、G、B三个通道分别进行直方图均衡,再将处理后的视频帧生成新的视频。

2022-06-08 19:34:48 681 1

原创 MATLAB | 读取视频并保存帧图像

MATLAB读取视频获取视频帧,对视频帧进行简单的处理后保存到指定目录。

2022-06-01 10:54:16 3342

原创 Debug | error: #134: expected a field name

error: #134: expected a field name

2022-04-09 18:48:27 2213

原创 串口打印函数引起芯片工作异常

单片式开发中的串口调试

2022-02-14 12:13:39 3811

原创 嵌入式应用中的数据校验

为保证嵌入式应用中数据通信的准确性,通常需要对传输的数据进行校验。这里介绍一种累加和校验算法的实现。发送方将所有目标数据进行累加求和,对求和结果取反作为校验值,连同目标数据一起发送给接收方。接收方将接收到含有校验和数据进行累加求和,求和结果加一为零则说明数据传输正确。算法原理是按位取反后的数据再与原来的数相加会把所有位都变为1,此时再把相加结果加一就会导致数据溢出,此时相加结果的所有数据位都会变为0。/* * 串口通信常用的几种数据校验和方式 * By 羽墨志 */#include &l

2021-10-08 17:49:44 380

原创 Python | 删除指定文件下的所有文件和文件夹

#!/usr/bin/env pythonimport timeimport osimport shutilfilelist=[]rootdir="E:/mm618"filelist=os.listdir(rootdir)for f in filelist: filepath = os.path.join( rootdir, f ) if os.path.isfile(filepath): os.remove(filepath) print(time.strftime

2021-07-01 18:45:32 277

原创 C语言 | 学习C语言字符串数组,看这一篇就够了!

一、字符串的定义char *str1 = {"Hello world!"}; // 方式一 (可省略{})char str2[] = {"Hello world!"}; // 方式二 (可省略{})char str3[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0'}; // 方式三几种字符串定义方式之间的区别:(1) 方式一的本质是定义了一个char型指针str1, 指向的是字符串常量Hello wo

2021-06-05 16:01:31 11145 14

原创 STM32 | 基于 HAL 库实现 DMA 驱动 GPIO 高速翻转

项目中有一款点阵式液晶驱动芯片,需要用 IO 口翻转来实现高速串转并传输,主控芯片为 STM32F103RCT6。如果直接采用库函数进行IO的翻转不仅速度上满足不了要求,还会占用大量时间影响性能,导致时序上的错误。DMA可以在没有控制器的干预下进行数据的传输,因此决定采用DMA方式来驱动IO。本文以 HAL 库实现 DMA 驱动 GPIO 高速翻转为例说明DMA的配置过程,当然也可以改变 dma_buff 数组以实现其他任意时序的输出。一、STM32CubeMX 配置SYS Mode and Con

2021-05-08 11:43:54 4531 13

原创 C语言 | 保存数组到文件中

工作中有时候需要反复生成一些数组用于测试,手动生成实在不是个明智的选择。这个C语言小程序的功能是将生成的一位数组按照指定行数和列数保存到指定的文件中。/** ****************************************************************************** * @file data_saver.c * @brief Save the generated array data to the file. * @data 20

2021-04-26 17:34:48 5832 3

原创 STM32CubeMX | STM32 串口通信以及串口重定向

一、串口配置管脚以及参数配置使能串口中断配置完成并保存后,点击【GENERATE CODE】重新生成代码。二、串口发送串口发送调用HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)函数即可。定义一个存放串口数据发送的缓冲区:/* USER CODE BEGIN 0 */uint8_t tx_buff[]="We

2021-04-13 23:03:32 4638 5

原创 STM32CubeMX | 新建 Keil工程

STM32CubeMX 是 ST 官方推出的一款代码生成工具,使用 STM32Cube 可以加速新产品的开发过程。本文以点亮一个 LED 灯为例,演示如何使用 STM32CubeMX 为 STM32F103CB 生成 Keil 工程以实现 LED 灯的闪烁功能。新建工程打开 STM32CubeMX 软件后,点击File,选择New Project。选择芯片型号在左侧的 Part Number中输出目标芯片的型号,支持部分输入以便快速定位所选芯片。配置SYS配置RCC

2021-04-12 23:27:52 810

原创 【LTE CAT1】ML302 OpenCPU | GPIO

ML302 共用22个可用的GPIO口,详细定义见 [sdk_root]/inc/cm/cm_gpio.h 文件中的 cm_gpio_id_t 结构体。typedef enum { CM_GPIO_0,//可用 CM_GPIO_1,//可用 CM_GPIO_2,//可用 CM_GPIO_3,//可用 CM_GPIO_4,//可用 CM_GPIO_5,//可用 CM_GPIO_6, CM_GPIO_7, CM_GPIO_8, C

2021-04-08 17:03:29 396

原创 C语言 | 文件的复制

/* * 复制一个文件到另一个文件中 * By 羽墨志@2021年3月31日 */#include <stdio.h>#include <string.h>void *get_filename(char *fullname);int copy_func(const char *src_file, const char *dst_file);int main(int argc, char *argv[]){ if(argc < 3) { fprin

2021-03-31 13:47:50 605

原创 C语言 | 计算程序运行时间

本程序可以用于评估算法程序在实际运行过程中所消耗的时间。在程序运行之前获取一次系统的时间戳,在程序运行结束后再获取一次系统的时间戳,两次时间戳之差即为当前程序运行所花费的时间。#include <stdio.h>unsigned long getTimeStamp(void);int main(int argc, char *argv[]){ unsigned long timeStmp = getTimeStamp(); printf("timeStmp = %d\r\n",

2021-01-17 22:57:40 727

原创 C语言 | 找出三个整数中的最大值以及最小值

/* * 找出三个整数中的最大值以及最小值 */#include <stdio.h>int get_max_value(int a, int b, int c);int get_min_value(int a, int b, int c);void test_func(void);void test_func(void){ int a = 1; int b = 2; int c = 3; printf("The max value of %d %d %d is %

2020-11-06 15:02:55 6863

原创 羽墨志 | 拷贝数字示波器中的截图

由于实验需要,经常要保存示波器画面信息。直接用手机拍摄费时费力且效果欠佳,一是要寻找合适角度,二是示波器屏幕反光效果太强,拍摄时会把反射的背景一起拍下来。台湾固纬 GDS-3354数字存储示波器本身就自带截图功能,直接单击屏幕右上方的【Save】按钮就可以把当前画面保存下来。这里主要是记录一下将保存的图片拷贝出来的步骤:将USB存储设备插入示波器的USB接口;单击面板上的【Utility】按钮,选择下方菜单栏中的【辅助应用】即可看到当前以保存的所有图片,使用【VARIABLE】旋钮切换图片。图片

2020-10-05 17:16:08 1125

原创 tws蓝牙耳机p10双耳连接方法

如果之前已经连接过耳机,打开手机蓝牙找到P10并取消配对;关闭手机蓝牙;将左、右耳机从电池仓中拿出,同时触摸左右耳机直到蓝白灯交替闪烁,等待一只蓝白灯闪烁、一个耳机偶尔闪白灯时表明耳机对接成功;重新开启手机蓝牙,搜索P10配对即可。...

2020-10-02 13:53:21 22124 1

原创 C语言 | switch 语句匹配字符串的方法

在某些情形下,我们需要根据一些已知的字符串进行相应的处理,比如根据从串口接收到字符串命令执行操作。假如要通过串口控制某个设备的开启、关闭以及查询等功能,其控制命令 cmd 分别为 OPEN、CLOSE、 和QUERY。利用C语言标准库函数 int strcmp(const char *str1, const char *str2) 来找出每一个控制命令,然后执行相应的操作:char cmd[10] = "OPEN";if (0 == strcmp("OPEN", cmd)){ devic

2020-09-29 14:34:38 21649 13

原创 MATLAB | sRGB图像的灰度转换算法

列举了几种常见的灰度转换算法,通过计算结构相似性参数评价不同转换方式所得到灰度图片之间的相似性,并绘制了不同灰度图片之间的差异。% gray_convert.m% sRGB图像转换为灰阶图Rr = 0.212655;Rg = 0.715158;Rb = 0.072187;img_src = imread('airballoon.jpg');subplot(2,2,1)imshow(img_src)title('Original Image')img_gray_1 = rgb2gray

2020-09-26 11:56:12 929

原创 IAR | Error[Pa045]: function “xxx“ has no prototype

使用IAR编译时出现Error[Pa045]: function "M10_GPIO_Init" has no prototype编译错误,网络上大多数的解决方案是在Options--->C/C++Compiler--->Language1选项中取消勾选Require prototype。根据编译错误信息提示的内容来看,这是由于函数没有函数声明导致的。在IAR中勾选Require prototype选项,意味着除main函数外的所有函数都需要函数声明。因此去掉 Require prototy

2020-09-24 09:31:51 2312

原创 MATLAB | 将图片序列转换为视频文件

读取《MATLAB | 生成多张图片并保存》中生成的图片序列,生成视频文件并保存。%% Title: Video Generator % Author: 羽墨志(https://yumozhi.com/) % Date : 2020-09-17 %% Introduction % 读入已有图像文件序列生成视频文件并保存到指定文件夹下 % 图片文件信息image_path = 'image/'; % 图片序列文件位置image_suffix = '.png'; % 图片文件后缀imag

2020-09-17 21:06:49 1484

原创 MATLAB | 生成视频文件

在《MATLAB | 生成多张图片并保存》一文中演示了如何生成多张图片并保存到指定文件夹中,这篇博客将在上文基础上演示如何生成一个视频文件。%% Title: Image Generator % Author: 羽墨志(https://yumozhi.com/) % Date : 2020-09-17 %% Introduction % 按需求生成视频文件并保存到指定文件夹下width = 480; % 图片宽度height = 600; % 图片高度dim = 3; % 图片维度

2020-09-17 20:36:17 2590 1

原创 C语言 | 复制文件内容并保存

读取文件内容并写入另一个文件。/** * @file : copy.c * @author : 羽墨志(https://yumozhi.com/) * @since : 2019年8月5日18:13:27 * @description : 文件复制 */#include<stdio.h>/** * @function : main * @author : 羽墨志(https://yumozhi.com/) * @since : 2019年8月5日18:1

2020-08-28 10:37:50 248

原创 MATLAB | 生成多张图片并保存

利用matlab快速生成多张图片并保存。%% Title: Image Generator % Author: 羽墨志(https://yumozhi.com/) % Date : 2020-08-21 %% Introduction % 按需求生成多张图片并保存到指定文件夹下 % 如生成64张480*600(w*h)的32级灰阶png图片并按顺序保存在image文件夹下width = 480; % 图片宽度height = 600; % 图片高度dim = 3; % 图片维度

2020-08-21 14:52:28 12245 2

原创 常用Markdown基本语法

一、标题# 一级标题## 二级标题### 三级标题#### 三级标题##### 三级标题###### 三级标题一级标题二级标题三级标题四级标题五级标题六级标题二、格式加粗**羽墨志**羽墨志斜体*羽墨志*羽墨志删除线~~羽墨志~~羽墨志下划线<u>羽墨志</u>羽墨志高亮==羽墨志==羽墨志上标羽墨志^1^羽墨志1下标羽墨志~1~羽墨志1颜色<font col

2020-08-09 20:44:35 144

原创 C语言 | 数据转换

/* * 数据转换 * by 羽墨 @ 2020-8-6 */#include <stdio.h>unsigned int data_format(unsigned char *src);int main(int argc, char** ragv){ unsigned char arr[4] = {0x00, 0x00, 0x00, 0x02}; printf("result = %d\r\n", data_format(arr)); return 0;}/*

2020-08-06 10:18:16 146

原创 MATLAB | 打开文件选择对话框的使用

【功能】打开文件选择对话框,选择一个或多个文件并输出完整路径。[file,path] = uigetfile( ...{...% '*.m','Code files (*.m)'; ...% '*.fig','Figures (*.fig)'; ...'*.hex','Waveforms (*.hex)'; ...% '*.jpg;*.jpeg;*.png;*.bmp','Images (*.jpg, *.jpeg, *.png, *.bmp)'; ...'*.*', 'All Files

2020-07-24 18:12:13 3044 1

原创 一种排列组合问题

【问题描述】从含有N个元素的序列AAA中选取元素组成含有M个元素的序列BBB。例如{1,2,3}可以组成多少个8位数。/* * 枚举从任意多的N种元素中选出M个组成新的排列(M>N) * 例如:{-1,0,1}→{1,0,-1,0,0,1,1,-1} */#include <stdio.h>#include <math.h>#define ROW 65...

2020-04-08 09:36:10 137

原创 配置树莓派的FTP服务

配置树莓派的FTP服务我们可以通过SSH访问树莓派,有时也需要在本地与树莓派之间传输文件,除了可以借助于Github进行中转,还有一种比较方便快捷的方式是使用FTP服务器。FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。vsftpd是一款开源的轻量级常用ftp服务器,可以作为树莓派的FTP服务器端。Windows系统...

2019-12-25 15:49:14 1137

原创 使用ST-LINK下载STM32程序

一、电路连接STM32的下载调试接口主要有三种:JTAG、SW和串口(不能调试)。JTAG各个管脚信息如下:序号信号名方向说 明1VrefInput接口电平参考电压,通常可直接接电源2VsupplyInput电源3nTRSTOutput(可选项) JTAG复位。在目标端应加适当的上拉电阻以防止误触发。4GND–接地5...

2019-12-25 11:47:03 4518

原创 Qt应用程序的发布及打包

一、构建Release版应用程序;以Release方式构建项目,生成的exe应用程序位于``CApp\build-CApp-Desktop_Qt_5_12_0_MinGW_64_bit-Release\release`目录下。二、发布Release版应用程序;上述步骤中构建的应用程序即使在本机也不能直接运行,因为还缺少必要的Qt库文件。利用Qt自带的工具windeployqt可以找出应用程...

2019-11-08 18:32:26 250

原创 混合编程初探:C++调用Python函数

准备工作新建一个控制台应用,写个简单的Hello World程序。环境配置C++调用Python脚本需要用到Python安装目录下的include、libs 以及相关的dll,因此需要把相应的路径添加到工程中。 如果libs文件夹下没有python36_d.lib文件,可复制python36.lib并重命名为python36_d.lib备用。添加头文件目录以及库文件目录在解决方案资源...

2019-10-24 21:14:48 429

原创 树莓派开发第一课

开发平台硬件:Raspberry Pi 3 Model B+Raspbian镜像:Raspbian Buster with desktop and recommended software 烧录工具:win32diskimager-1.0.0配件:HDMI接口的显示屏、HDMI线、内存卡、读卡器、键盘、鼠标准备工作下载系统烧录工具并安装,点击链接即可下载;下载Raspbian...

2019-10-18 17:29:47 265

gpio_with_dma.rar

主控芯片为STM32F103RCT6,采用STM32CubeMX进行配置,采用 DMA方式直接驱动 实现 GPIO的高速翻转。文件包含配置好的STM32CubeMX工程、修改后Keil工程以及完整配置过程和结果截图,解压即可用。可根据实际需要动态修改dma_buff数组以实现任意的时序输出。

2021-05-08

MATLAB图片生成器

利用matlab快速生成多张PNG图片,按照统一格式的文件名形式保存到指定文件夹中。程序源码简单易懂,有详细注释,可根据自身实际灵活修改图片大小、格式以及保存路径等内容。

2020-08-21

空空如也

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

TA关注的人

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