自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (3)
  • 论坛 (2)
  • 收藏
  • 关注

原创 我理解的union

目前我觉得的union的唯一用在的地方:总线,设备,驱动,如:struct net_buff { char cmd_sbuf[128]; char cmd_rbuf[2048];};/* 如果每个驱动中都开辟了接收和发送缓存的空间不好 */union net_buff_union { struct net_buff 2G_net_buff_m26; struct net_buff 4G_net_buff_ec20; struct net_buff 4G_net_buff_xxx;..

2020-11-20 10:59:39 20

原创 FLASH和EEPROM存储配置设备信息时可考虑代码可 维护性问题。

假如有这份代码:struct device_config { unsigned int device1_enable; /* 设备1的使能信息 */ unsigned int device2_enable; /* 设备2的使能信息 */ unsigned int device3_enable; /* 设备3的使能信息 */ unsigned int device4_enable; /* 设备4的使能信息 */ unsigned int device1_type; /* 设备1的类.

2020-10-19 16:14:09 22

转载 signal_pending

经常我们在睡眠的代码中 会看到这样的例子: if (signal_pending(current)) { ret = -ERESTARTSYS; return ret; } 关于 -ERESTARTSYS 到底是什么意思? -ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用.也就是说,如果信号函数前有发生系统调用,在调度用户信号函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用.如...

2020-10-19 10:57:08 17

转载 MKDEV宏定义及其主要函数

MKDEV 功能:将主设备号和次设备号转换成dev_t类型cdev结构在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations*ops; //文件操作结构,在写驱动时,其结构体内的大部分函数要被实现 .

2020-10-19 10:25:44 53

转载 libevent events management

2020-10-14 16:58:42 18

原创 记录踩过的坑,避免自己再次采坑。

1、参数精度需要从2位参数改为3位精度别人的代码修改:直接从原来的支持2位精度修改为支持4位精度。我的代码修改:从原来的支持2位精度修改为支持3位精度。总结:再一次需求变更时,给了自己增加了裕量。...

2020-10-14 11:28:09 12

原创 第一次用Pythong写比较实用的东西,写了个自动生成C代码Python脚本

'''1、播放时长以ms为单位,用python脚本生成,C代码中也应该这样子写。2、输入的参数: 1、每个语音的命名 2、语音的序号3、脚本输出的内容: 1、地址号 (地址从1开始,下个地址等于上个地址号+播放时长,最后地址号需要四舍五入,并且只保留整数) 2、播放时长(播放时长,单位为ms) 3、生成C语言代码,文件名字保存为voice.h'''import waveimport os.pathimport xlsxwriter #用来写xlsx文.

2020-09-29 14:31:35 80

原创 python读取wav文件的播放时长

import waveimport os.path# 音频存放文件夹相对路径filedir = os.getcwd()# 获取目录下所有文件files = os.listdir(filedir)# 获取目录下所有的WAV文件wav_files = list()for i in files: if os.path.splitext(i)[1] == '.WAV': wav_files.append(i)# 文件名按照数字大小排序wav_files.sort(key.

2020-09-28 16:55:39 125

原创 check_sum校验和函数,返回的是1个字节的数据

/* check_sum校验和函数,返回的是1个字节的数据 */int check_sum(unsigned char *p_data, int len, unsigned char *data){ unsigned char ret_t = 0; if (NULL == p_data || len <= 0) return -1; for (int i = 0; i < len; i++) { ret_t +=...

2020-09-19 14:37:20 126

原创 批量的十六进制转字符串(ASCII码) shell脚本

#!/bin/bashcat "/qcode.txt"|while read linedo# echo $line | tr -d ' ' str1=`echo $line | tr -d ' '`# echo $str1 str2=${str1#*0031}# echo $str2 qcode=${str2:4:256}# echo $qcode# 批量的十六进制转字符串(ASCII码) I.

2020-09-18 08:40:14 221

原创 16进制的字符串转换为10进制的整数

/* 单个字节转换 */int shex2int(const char *str) { unsigned int len = strlen((const char *)str); int ret; if (len > 2) return -1; sscanf(str, "%x", &ret); return ret;}/* 多个字节转换 */int shex2nint(const char *str, unsigned char *dec, unsigne.

2020-09-17 17:34:11 103

原创 嵌入式开发中通过系统心跳延时的方法,并且处理了溢出的情况(非阻塞延时)

unsigned int delay_timeout(unsigned int enter_timer, unsigned int ms){ unsigned int get_tick = get_systick_time(); unsigned int interval = (get_tick >= enter_timer) ? (get_tick - enter_timer) : (~enter_timer + get_tick); //0xFFFFFFFF + g...

2020-09-09 13:52:02 35

原创 stm32标准库和HAL库获取系统时钟的方法

HAL库uint32_t sysclock = 0;sysclock = HAL_RCC_GetSysClockFreq();标准库 RCC_ClocksTypeDef get_rcc_clock; RCC_GetClocksFreq(&get_rcc_clock);

2020-09-03 17:59:48 731

原创 #define REPEAT_BYTE(x) 和 #define STACK_MAGIC解析

#define STACK_MAGIC 0xdeadbeef /* 栈顶的位置,是个魔术数字 */#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x))/* 1、(~0ul),u表示unsigned 无符号,l表示long 长整形,~0d对于64位机器0xffffffffffffffff。 2、0xffffffffffffffff / 0xff = 0x0101010101010101 3、假设X为2那么 0x0101010...

2020-08-28 17:20:25 46

原创 前段时间stm32CubeMx生成工程总是空的

1、前段时间stm32CubeMx生成工程总是空的,最后经过多种方法尝试,最后将自己电脑中的JDK13卸载后,再按照JDK8就好了。此处的坑分享给后面的踩坑人。

2020-06-14 18:33:34 151

原创 为什么使用snprintf而不使用sprintf

来自Steven的书

2019-12-20 11:04:25 60

原创 Linux设备驱动笔记一

ls /lib/modules //查看当前内核版本uname -r //看是否和上面的一致/*hello.c文件*/#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");stati...

2019-12-17 15:20:09 29

转载 keil中编程宏定义重加u的意思

#define TEMP 0x01u#define TEMP1 0x02uu 就表示unsigned,ul 就表示unsigned long型,也就是无符号的意思。常用在非符号的场景,一是为了防止编译器将它作为有符号数字进行处理,显式声明,以防万一;二是防止编译提醒符合位改变等情况。举例:比如ox8000 这是一个16位的数,如果不加u,有的编译器认为它是个负数,然后右移这个数...

2019-12-14 09:55:15 143

转载 经典问题解析

1、经典问题解析。 1、const 什么时候是常量,什么时候是变量。 2、const 常量的判断准则。 1、只有字面量初始化的 const 常量才会进入符号表,--真正意义上的常量。 2、使用其他变量初始化的 const 常量依旧是只读变量。 3、被 volatile 修饰的 const 常量不会被放入到符号表(外部,多线程,中断),...

2019-12-06 16:37:51 27

转载 新式类型转换

1、新型的类型转换: 1、C语言的强制类型转换。 1、typedef void (PF) (int); 2、struct Point{ int x; int y; }; 3、int v = 0x1234; 4、PF *pf = (PF *)v; 5、char c = (char )v; 6、Point *p = (Point *)v; 2、C方式强制类...

2019-12-06 16:11:32 39

转载 C++中的新成员。

1、C++中的新成员。 1、动态内存分配。 1、C++中动态内存分配。 2、C++中通过 new 进行动态内存申请。 3、C++中的动态内存申请是基于类型进行的。 4、delete关键字是用来内存释放的。 2、变量申请: Type *pointer = new Type; //... delete pointer; 3、数组申请 Type *pointer ...

2019-12-06 10:15:20 30

转载 1、函数重载分析(下)

1、函数重载分析(下) 1、重载与指针 1、下面函数指针保存哪一个函数的地址? int fun(int x) { return x; } int fun(int a, int b) { return a + b; } ...

2019-12-06 09:51:21 39

转载 函数的重载(上)

1、函数的重载 1、自然语言中的上下文: 洗脸,洗衣,洗脑,洗澡,洗马桶。 2、结论:能和"洗"字搭配的词汇有很多。洗和不同的词汇搭配会有不同的含义。 3、重载的概念(Overload) 1、同一个标识符在不同的上下文有不同的含义。 2、"洗"和不同的词汇搭配会有不同的含义,洗衣服,洗澡,洗车 3、"play"和不同的词汇搭配会有不同的含义,Play chess Play...

2019-12-06 09:31:10 19

转载 函数参数的扩展。

1、函数参数的扩展。 1、函数参数的默认值。 1、C++在函数声明时为函数提供一个默认的参数值。当函数调用没有参数的值的时候,使用默认参数。 代码: void Test(int x = 0); int main() { Test(); return 0; } void Test(int x) { printf("%d",x); } ...

2019-12-06 09:04:04 20

转载 内联函数分析

1、内联函数 1、C++中 const 可以代替宏常量定义。 如: const int a = 3; ==>> #define a 3 既然const 可以代替 宏常量 的定义 是否有其他办法代替 宏代码 呢? 有,内联函数。 2、内联函数。 1、C++中推荐使用内联函数代替宏代码片段。 2、C++中使用 inline 关键字声明内联函数。 代码: ...

2019-12-05 20:15:57 20

转载 引用的本质和分析

1、引用的本质和分析 1、引用的意义: 引用作为变量别名存在,因此在一些场合可以代替指针。 引用相对于指针来说,具有更好的可读性和使用性。 2、举个栗子: swap函数的实现和对比: void swap(int &a, int &b) { ...

2019-12-05 19:53:57 37

转载 布尔类型,三目运算符的扩展,和引用的概念。

1、布尔类型,三目运算符的扩展,和引用的概念。 1、布尔类型: C++中的布尔类型 C++在C语言的类型基础上增加了 bool 类型。 C++可取的值只有 false 和 true。 理论上 bool 只占用一个字节。 注意:false 代表假 在编译器中用0表示。 true 代表真 在编译器中用1表示。 2、printf("sizeof(bool) = %d\...

2019-12-05 17:14:00 73

转载 C++笔记 第三课 进化后的const分析---狄泰学院

https://blog.csdn.net/weixin_42187898/article/details/83116692进化之后的const分析 1、C语言中的 const const 修饰的变量是只读的,本质上还是变量。 const 修饰的局部变量是在栈上面分配的。 const 修饰的全局变量是再只读存储区分配的。 const 只在编译期有用,在运行期是没...

2019-12-05 16:45:28 30

转载 C++中const原理和C语言中const原理区分以及符号表机制研究

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...

2019-12-05 16:26:21 71

转载 C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧

1、方法一要对绝对地址0x100000赋值,我们可以用(unsigned int * ) 0x100000 = 1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?*((void (*)( ))0x100000 ) ( );首先要将0x100000强制转换成函数指针,即:(void (*)())0x1000...

2019-12-05 10:33:21 63

原创 LKD中关于Inline函数的描述

下面的文字不长,并且好理解,花小部分时间看完,还是挺值得的。C99和GNU C均支持内联函数,inline(直译:字里行间展开)这个名称就可以反应出他的工作方式。函数会在调用他的地方展开,这样子做可以消除函数调用带来的开销(寄存器的存储和恢复),而且,编译器会把调用函数的代码和函数本身放在一起优化,所以有进一步优化的可能。不过,这样子做是有代价的(天下没有免费的午餐),这样子做代码会...

2019-12-04 15:47:06 80

转载 sudo apt-get install xxx 报错的解决办法

网上找到的解决方案基本上都是这样写的:第一种:ps -e|grep apt-get然后将显示出来的进程杀掉第二种:强制解锁sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock——————————但是自己尝试发现不可行:第一种的时候没有显示出任何进程;第二中的时候执行命令的确成功了,但是报错依旧存在。...

2019-12-04 08:13:07 113

原创 QT中Qlabel的字体和颜色设置

//设置字体 QFont ft; ft.setPointSize(16); ui->label_19->setFont(ft); //设置颜色 QPalette pa; pa.setColor(QPalette::WindowText,Qt::red); ui->label_19->setPalette(p...

2019-11-14 08:41:29 720

原创 将英文版本的man手册配置成为中文版的

将英文版本的man手册配置成为中文版的,步骤如下:  1) 终端输入sudo apt-get install manpages-zh  2) 安装后修改配置文件sudo gedit /etc/manpath.config  3) 将所有的/usr/share/man替换为/usr/share/man/zh_CN...

2019-10-28 19:56:07 62

原创 01_预编译处理——宏定义与使用分析

//预处理文件可以通过 gcc -E test.c -o test.i得到代码预编译后的Test.i文件//可执行文件可以通过命令 gcc Test.c可以得到可执行的代码//#define正确的使用方式#include "stdio.h"#define _SUM_(a,b) (a) + (b)#define _MIN_(a,b) ((a) < (b) ? (a) : (...

2019-10-24 20:50:10 75

原创 让Ubuntu下默认指向python3

最关键的两句:echo alias python=python3 >> ~/.bashrcsource ~/.bashrc

2019-10-17 20:19:37 58

转载 ubuntu开启ssh服务/22端口

https://blog.csdn.net/laosun12/article/details/90413267

2019-10-16 16:41:24 1193

原创 QpushButton的样式表设置

QPushButton { background: #ffffff ; /* 默认颜色 */}QPushButton:hover { background: #AFEEEE; /* 悬停颜色 */}QPushButton:pressed { background: #AFEEEE /* 按下颜色 */}...

2019-10-14 20:21:04 747

转载 Qt 设置窗体固定大小

1、 一种方法是设置它的最大窗口值和最小窗口值,并且使最大值和最小值相等。简单的示例: setMinimumSize(370, 150); setMaximumSize(370, 150);此时窗口大小便被固定为(370,150)。2、一种方法是使用setFixedSize(),这样一句话就可以解决问题。简单的示例: setFixedSize(365,240);窗...

2019-09-23 08:49:39 111

原创 关于中微中断单片机的问题(CMS)

上面是数据手册写的中断流程。下面贴出反汇编的出来的代码//这是入栈//这是出栈//首先这个单片机写的代码会出现程序乱跳的问题,不知道是编译器的问题还是芯片的问题,总是莫名其妙的进去中断。PORTB是个神指令,以后机会好好分析他的反汇编代码。//其次就是我想不明白//出栈的 0D80 0859 LD A,0x59 0D81 008A ...

2019-09-19 21:06:53 753

Mac OS版本TV

Mac OS版本TV

2019-04-18

source insight

source insight 4.0

2019-04-14

arm-linux-gcc交叉编译器

arm-linux-gcc交叉编译器 arm-linux-gcc交叉编译器 arm-linux-gcc交叉编译器 arm-linux-gcc交叉编译器

2018-05-15

空空如也

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

TA关注的人 TA的粉丝

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