自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PID(八、不完全微分PID)

#include <stdio.h>typedef struct { float SetLocation; float LastLocation; float err_now_0; float err_last_1; float err_sum; float Kp; float Ki; float Kd; f...

2019-01-25 14:48:14 1951

原创 PID(七、变积分PID)

#include <stdio.h>#include <stdlib.h>#include <math.h>typedef struct { float SetSpeed; float LastLocation; float err_now_0; float err_last_1; float Kp; f...

2019-01-25 09:26:07 823

原创 PID(六、梯形积分PID)

#include <stdio.h>#include <math.h>#include <stdlib.h>typedef struct { float SetSpeed; float LastLocation; float err_now_0; float err_last_1; float Kp; f...

2019-01-25 09:08:59 871 2

原创 PID(五、抗饱和积分PID)

#include <stdio.h>#include <math.h>#include <stdlib.h>typedef struct { float SetSpeed; float LastLocation; float err_now_0; float err_last_1; float Kp; f...

2019-01-25 09:01:45 1947

原创 PID(四、积分分离PID)

#include <stdio.h>#include <math.h>typedef struct { float SetLocation; /*you want to set location*/ float LastLocation; /* the last location*/ float err_now_0; ...

2019-01-24 22:24:30 3481

原创 PID(三、增量型PID)

#include <stdio.h>typedef struct{ float SetLocation; float LastLocation; float err_now_0; float err_next_1; float err_last_2; float Kp; float Ki; float Kd; ...

2019-01-24 16:32:50 861

原创 PID(二、位置型PID)

#include <stdio.h>typedef struct { float SetLocation; /*you want to set location*/ float LastLocation; /*the last location*/ float err_now_0; float err_last_1; float ...

2019-01-24 16:09:51 314

原创 PID(一、基本概念)

1、模拟PID: 其中:u(t)——调节器的输出信号;e(t)——调节器的偏差信号,它等于给定值与测量值之差KP——比例系数TI ——积分时间TD ——微分时间u0 ——控制常量KP/TI ——积分系数KP/TD ——微分系数2、数字PID:k:采样信号,k=0,1,2,…uk:第k 次采样时刻的计算机输出值ek:第k 次采样时刻输入...

2019-01-24 15:22:54 8655

原创 高数--最小二乘法

formula:                                                                                                                                                     C code: #include <stdio.h>...

2019-01-24 14:20:25 657

原创 C语言--跨函数使用内存

#include<stdio.h>#include<malloc.h>typedef struct { int pi; int pd; int id;}PID;PID *Create_Fun(void);void Fun_Show(PID *ps);intmain(int argc, char *argv[]){ PI...

2019-01-18 20:36:55 196

原创 C语言--结构struct

1、结构声明:    struct tag{member-list}variable-list;    其中:tag、member-list和variable-list都是可选的,但是所有可选部分不能全部省略--他们至少要出现两个(这个规则的一个例外是:结构标签的不完整声明)2、结构的自引用:    在一个结构内部包含一个类型为该结构本身的成员是否合法呢?    struct SELF_...

2019-01-17 20:57:23 190 1

原创 数字滤波--递推平均滤波

#define RM_BUF_LEN 10 /*递推数组的长度*/uint16_t RM_Filter_Buf[RM_BUF_LEN]; /*保存数据的递推数组*/ uint16_t ADCx_Recursive_Mean_Filter(uint16_t get_adc){ uint16_t sum = 0;...

2019-01-17 09:46:38 3035

原创 C语言--NULL和NUL

1、NULL    标准定义了NULL指针,它作为一个特殊的指针变量,表示不指向任何东西。要使一个指针变量为NULL,你可以给它赋一个零值。为了测试一个指针变量是否是NULL,你可以将它与零值进行比较。    对指针进行解引用操作可以获得它所指向的值。但从定义上来看,NULL指针并为指向任何东西,因此对一个NULL指针进行解引用操作时非法的。在对指针进行解引用操作之前,你首先必须确保它并非NU...

2019-01-14 23:04:07 3095

原创 C语言--#err和#warning的使用

 1、#warning用于自定义一条编译警告信息。#include <stdio.h>int main(){ #ifndef COMMAND #warning Compilation will be stoped ... #endif printf("%s\n", "COMMAND"); return 0;}/**程序输出结果...

2019-01-14 19:23:42 5989

原创 STM32--assert_param断言宏

1、基本概念 宏定义 在stm32f10x_conf.h头文件中,有如下定义:/* #define USE_FULL_ASSERT 1 */#ifdef USE_FULL_ASSERT#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) void...

2019-01-14 13:17:53 559

原创 C语言--__attribute__((noreturn))

1、#include <stdlib.h>#include <stdio.h>void Fun_Exit(void){ exit(1);}int Fun_Test(int n){ if (n > 0) { Fun_Exit(); printf("Hello World\r\n"); ...

2019-01-13 21:55:31 652 1

原创 C语言--一维数组

一维数组:    int a[10];    一维数组名a是一个指针常量,而不是指针变量。你不能修改常量的值    在几乎所有使用数组名的表达式中,数组名的值是一个指针常量,也就是数组第一个元素的地址。它的类型取决于数组元素的类型;如果他们是int类型,那么数组名的类型就是“指向int的常量指针“;如果他们是其他类型,那么数组名的类型就是”指向其他类型的常量指针“。    只有在两种场合下...

2019-01-11 23:11:17 323

原创 C语言--__attribute__((aligned(n)))

#include<stdio.h>typedef struct { int i; //4 int d; //4 char a; //1 char b; //1 char c; //1 //1 int e; //4}Test1;typedef struct { int i; //4 ...

2019-01-11 12:09:44 1192 1

原创 C语言--__attribute__((packed))

 packed的作用是取消字节对齐#include<stdio.h>typedef struct { int i; //4 char a; //1 char b; //1 char c; //1 //1}Test1;typedef struct { int i; //4 char a; /...

2019-01-11 11:34:46 1583

原创 C语言--__attribute__((weak))

在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数return 0;/***程序输出结果:19 ***/在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数return 0;/****程序输出结果: 21 ********/

2019-01-11 10:26:28 2052

原创 __attribute__概述

是特定于编译器的语法,不是标准 C 语言的一部分。因此,它的使用可能在不同的编译器上有所不同。在使用时,应该查阅相应的编译器文档以确保正确使用该特性。__attribute__ 关键字允许指定变量、类型和函数的属性。函数的属性可以在声明的时候指定也可以在定义的时候指定,示例如下。当函数的属性冲突的时候,编译器会选择更加安全或健壮的一个例如。下表总结了函数的属性设置。该关键字的格式如下所示。

2019-01-10 22:41:44 313

原创 STM32--hex文件格式

    hex 是 Intel 公司制定的一种使用 ASCII 文本记录机器码或常量数据的文件格式,它可以烧录到MCU中,被MCU执行的一种文件格式。一个hex文件由多条记录组成,而每条记录由5个部分组成,    格式如下:    “:aabbbbcc[dd...]ee”用记事本打开hex文件如下::020000040801F1:1000000018050020050401087D0...

2019-01-09 22:48:02 902

原创 C语言--小端模式和大端模式

一、概念: 大端(存储)模式:是指一个数据的低位字节的内容存放在高地址处,高位字节的内容存放在低地址处。 小端(存储)模式:是指一个数据的低位字节的内容存放在低地址处,高位字节的内容存放在高地址处。二、代码#include<stdio.h>typedef union{ int value; char buf[4];}Test;intmain(in...

2019-01-09 22:07:15 1242 1

原创 Code、RO-data、RW-data、ZI-data、堆和栈

Code 段:存储程序的可执行代码。RO-data 段:存储只读数据,如常量和字符串字面量。RW-data 段:存储可读写数据,包括已初始化的全局变量和静态变量。ZI-data 段:存储在程序初始化时清零的数据段,包括未初始化的全局变量和静态变量。栈:存储局部变量、函数参数和返回地址。堆:用于动态分配内存,存储在程序运行时分配的对象和数据。

2019-01-08 09:19:38 12447 4

原创 恶搞小程序--鼠标乱飞

纯属娱乐#include<stdio.h>#include<windows.h>intmain(int argc, char *argv[]){ int x = 0; int y = 0; while (1) { x = rand() % 333 + 500; y = rand() % 222 + ...

2019-01-07 14:26:01 4645 2

原创 恶搞小程序--锁定鼠标

纯属娱乐#include<windows.h>#include<stdio.h>intmain(int argc, char **argv){ int x = 0; int y = 0; while (1) { x = 100; y = 100; SetCursorPos(x, y)...

2019-01-07 14:18:31 893

原创 恶搞小程序--定时关机

纯属娱乐#include<stdio.h>#include<windows.h>#include<string.h>intmain(int argc, char *argv[]){ unsigned char cnt = 3; system("shutdown -s -t 180"); while (1) { ...

2019-01-07 14:01:17 626

原创 C语言--main函数的两个参数argc和argv

1、理论部分:C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。第一个形参:argc(arguments count参数数)必须是整型变量第二个形参:argv(arguments value/vector参数值)必须是指向字符串的指针数组。所以main函数的函数应写为以下两种形式的一种:int main(int argc,char *argv[]){…}i...

2019-01-07 13:37:05 14789 1

原创 【预处理】——#、##、__VA_ARGS__ 和##__VA_ARGS__ 的使用

1、#用来把参数转换成字符#include <stdio.h>#define FUN(X) (printf("%s=%d\n",#X,X)) /* #用来把参数转换成字符 */int test(int argc, char ** argv){ int a = 1; int b = 2; FUN(a); FUN(b); ...

2019-01-04 16:58:11 1996 1

空空如也

空空如也

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

TA关注的人

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