![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
/*小马*/
等年纪大了就换成老马
展开
-
c 实现 时间与标准时间戳的相互转换
#include <stdio.h>#include<string.h>typedef unsigned long long int _time_t;#define TIMEZONE 8 //时区定义,东正 西负typedef struct __tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23]原创 2021-10-18 15:34:09 · 2280 阅读 · 0 评论 -
c 快速取众数
#include <stdio.h>#include <stdint.h>/* * 快速取众数 * 注意:四个的时候取3个数的众数,获取前连续两次的众数 * len 数字长度 * Ia,Ib,Ic,Id 待取的四个数 * 返回上述四个数中的众数*/uint32_t get_mode(uint32_t len,uint32_t Ia,uint32_t Ib,uint32_t Ic,uint32_t Id){ switch (len) { case 1原创 2022-05-12 16:06:40 · 373 阅读 · 0 评论 -
C 通过四个点计算两条直线的交点
通过四个点计算两条直线的交点原创 2022-05-11 10:28:04 · 1160 阅读 · 0 评论 -
C语言 强制数字类型指针寻址
C语言 强制数字类型指针寻址原创 2022-02-12 15:46:40 · 638 阅读 · 0 评论 -
高效内存分配机制
Efficient_memory_allocation高效内存分配机制 由于需要在单片机上使用malloc,但自带的malloc机制速度太慢且需要还需要配置堆,当某些代码需要使用这个功能时候就需要对应的单片机打开,这样不利于模块与平台的解耦。 不知道为什么系统自带的malloc耗时居然和申请的内存大小成正比,这个在小数据申请的时候倒没什么,但是当要高速申请大内存时候就懵逼了,而且在pc上感觉不出来,但是在MCU这种单片机上使用的时候就感觉出来了,故此我自己写了一个开源的高原创 2021-11-08 19:41:36 · 227 阅读 · 0 评论 -
log2的快速算法
在某些不需要那么高精度的log2函数,单要求高速的地方,可以使用以下方法来减少log2的运算量,但精度只有0.02,若要增加精度,需要把flog2map的长度增加,该表由注释部分代码生成。当表修改后,对应的“temp = (temp>>15)&0xFF;”也需要修改。比如,当表长为32时候,就是temp = (temp>>18)&0x1F;因为32需要5bit来表达18 = 23-50x1F = 0b 0001 1111#include <stdio原创 2021-11-05 18:10:53 · 4475 阅读 · 0 评论 -
C 实现FFT与IFFT
说明 本代码根据网上的例程整理,具体出处已无从考察库代码FFT.h#ifndef __FFT_H_#define __FFT_H_#ifdef __cplusplusextern "C"{#endif#include <math.h>#define PI 3.1415926535897932384626433832795028841971f //定义圆周率值typedef struct compx {float real,imag;}转载 2021-07-30 18:08:38 · 1191 阅读 · 0 评论 -
关于MCU上C语言结构体作为参数的使用
//一个工具结构体typedef struct{ int start;// int len;//长度 char data[1024];}message_t;//第一种声明方法void my_fun(message_t msg){ //注意此种方法message_t会先放到栈中,所以当你的栈分配的不够的时候会导致奇奇怪怪问题 //注意此方法修改结构体内部值不会影响到外面 ...}//第二种声明方法void my_fun(message_t *msg){原创 2021-07-22 18:11:57 · 154 阅读 · 0 评论 -
取消C/C++的结构体对齐
第一种方法#pragma pack(push) //保存对齐状态 #pragma pack(1)//设定为4字节对齐 typedef struct app_config { u8 mic_gain; u8 volume_set; u8 channel; u8 backlight_mode; u8 mute_key; u8 para_id; u8 langue; u8 reserve; uint32_t dev_id[2]; u8 check_sum;} APP_.原创 2021-04-22 14:48:49 · 1125 阅读 · 0 评论 -
tinymp3 MP3编解码库的使用
tinymp3文章目录tinymp3运行截图文件说明使用流程编码器部分初始化数据编码结束编码解码器部分初始化数据解码结束解码mp3库地址tinymp3 mp3的编解码器官方demo,将mp3或者wav文件解码后重新压缩为mp3。用法:运行截图文件说明dr_mp3.h MP3文件解码与保存库dr_wav.h WAV文件解码与保存库shine_mp3.h 编码器头文件shine_mp3.c 编码器库使用流程编码器部分初始化不同PCM采样率对应的算法所原创 2021-04-21 10:32:22 · 2293 阅读 · 0 评论 -
Matlab转c后 emxArray_real_T结构体说明
struct emxArray_real_T{ double *data; //具体数据,row-major顺序存储 int *size; //单个数据尺寸{行数,列数....} int allocatedSize; //数据个数 int numDimensions; //数据维度 boolean_T canFreeData; //是否可以自由释放,一般为否};比如3个二维数据的表就可以表述为stru原创 2020-09-04 20:48:07 · 4913 阅读 · 6 评论 -
宏连接define构建函数名
#include <iostream>using namespace std;void My_add(int a,int b){ printf("%d \n",a+b);}void My_cut(int a,int b){ printf("%d \n",a-b);}#define User(x,a,b) My_##x(a,b)int main()...原创 2020-04-15 10:19:00 · 3907 阅读 · 0 评论 -
Qt 调试时监视数组变量或数组指针
在右边的变量窗口双击出现watch窗口,两种方法:(1)输入(类型[长度])*数组名,如(int[10])*temp就可以查看。(2)输入数组名+@+数组长度,比如temp@10,就是查看temp[10];12...转载 2020-04-08 14:01:26 · 2168 阅读 · 3 评论 -
const int * ,int const * 以及 int * const 的区别
const int * ,int const * 以及 int * const 的区别const int * p; //保护p内容,常量的 int类型指针pint const * p; //保护p内容,int类型的 常量指针pint * const p; //保护p地址,int类型的 指针常量pconst在的左边,保护内容const在的右边,保护地址由于保护地址,所以在初始化的时候就需...原创 2020-04-08 10:31:04 · 661 阅读 · 0 评论 -
C++ 编写多线程类 类的多线程封装
在C++开发中,每个类均是一个对象,讲系统分化为对象开发能使系统结构清晰明了。但是C++原生开发中因为没有现成的多线程类可以继承,因此有必要自己写一个多线程的类,要求足够独立,自动创建与回收线程,线程可以执行开始,停止操作,故此总结网上现有资源,自己写了一个简单的多线程类。h文件#ifndef APPSERVE_H#define APPSERVE_H#include <iostr...原创 2019-11-20 10:55:48 · 612 阅读 · 0 评论 -
C语言中 将编译时间转换为int类型作为时间戳 __DATE__ __TIME__ 转INT类型
在版本控制时候,经常需要跟踪软件版本信息,可以将编译时间__DATE__ __TIME__转换为INT类型然后进行简单运算组合成想要的版本信息。unsigned char DataStr[]=__DATE__;//获取编译的日期unsigned char TimeStr[]=__TIME__;//获取编译的时间#define YEAR ((((__DATE__[7]-'0')*10+(__...原创 2018-11-30 15:45:57 · 3779 阅读 · 0 评论 -
STM32F1xx 系列 多通道ADC DMA采集与非DMA采集
ADC 多通道 DMA 采集#include "ADcx.h"#include <stdio.h>#include "stm32f10x.h"#include "stm32f10x_rcc.h" #include "stm32f10x_adc.h"#include "stm32f10x_gpio.h"void ADcDMA_Configuration(void);原创 2018-12-04 11:49:22 · 2413 阅读 · 2 评论