
C语言
一只鲲
这个作者很懒,什么都没留下…
展开
-
指针与指针变量
在变量定义语句int *p, *p1, *q;中用 * 定义的变量均为指针变量。因此该语句定义了名为p、p1与q三个整型指针变量。因为指针变量用于存放变量地址,而地址通常为4字节,所以指针变量的长度均为4个字节。原创 2024-01-28 01:53:34 · 483 阅读 · 0 评论 -
C语言链表
C语言链表原创 2023-07-15 21:23:18 · 303 阅读 · 0 评论 -
C语言队列-FIFO
C语言队列-FIFO原创 2021-12-03 11:04:08 · 1119 阅读 · 0 评论 -
C语言环形队列缓冲-FIFO_RingBuffer
C语言环形队列缓冲-FIFO_RingBuffer原创 2021-12-03 11:02:10 · 1707 阅读 · 1 评论 -
单片机C语言GRB888和RGB565和RGB666的互相转换
GRB888转RGB565RGB565用了2个字节,排列方式如下:RGB888 用了4个字节,把上面的RGB565转换后,排列法方式如下:RGB565转换成RGB888时,只需将RGB565的颜色拿过来放进RGB888的高位,RGB888的低位补0,所以16位色转换成24位色时精度不会提高。反过来,RGB888转换RGB565时,R的高5位,G的高6位,B的高5位拿过来放进RGB565,所以24位色转换成16位色会损失精度。RGB的 0xFFFF 转换成RGB888后为 0xF8FCF8,如下原创 2021-10-04 22:47:36 · 5309 阅读 · 0 评论 -
记录-浮点导致程序乱跑
浮点数导致程序跑飞:计算时整数转换成浮点数,赋值后程序乱跑,现象为,本函数内没有用到的全局变量被修改掉,中文显示变成英文。需要赋值前再转换成整数即可。形如:u16 d;u8 a,b;float e;d= a+(float)(b+c)+0.5/25;改为:d= a+ (u16)((float)(b+c)+0.5/25 );...原创 2021-09-24 11:31:17 · 274 阅读 · 0 评论 -
STM32 HAL库函数USART、DMA和几个嘎达马西的说明
[单片机]STM32 HAL库函数USART、DMA和几个嘎达马西的说明STM32f103SPI1_NSS/USART2_CK是同一个管脚usart2同步通讯时和SPI1的NSS冲突PWMTIM_OCMode_Timing是在比较成功后不在对应输出管脚上产生输出。TIM_OCMode_Toggle是在比较成功后翻转对应输出管脚上的电平。TIM_OCMode_Active 输出比较主动模式 (匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输原创 2021-09-24 11:04:15 · 1205 阅读 · 0 评论 -
[单片机]STM32 Flash寄存器
[单片机]STM32 Flash寄存器● FPEC key register (FLASH_KEYR)● Option byte key register (FLASH_OPTKEYR)● Flash control register (FLASH_CR)● Flash status register (FLASH_SR)● Flash address register (FLASH_AR)● Option byte register (FLASH_OBR)● Write protection原创 2021-09-24 10:52:52 · 1500 阅读 · 0 评论 -
DMX协议和RDM协议
DMX协议和RDM协议1 DMX协议1、 DMX512协议特点:(1)采用RS-485总线收发器,差分电压进行传输的,抗干扰能力强,信号可以进行长距离传输;(2)不论调光数据是否需要改变,主机都必须发送控制信号。(3)由于数据帧之间的时间小于1s,所以在1s内没有收到新的数据帧,说明信号已经丢失;(4)因为是数据是调光用的,使用环境是不做安全要求的设备, 并且是不间断传输的,所以不需要复杂的校验。2、 波特率:250000一个bit位 4us8个位(Slot:x) 4*8=32us,x原创 2021-09-24 10:44:23 · 12490 阅读 · 3 评论 -
BootLoader和App1和App2三个程序之间的跳转
BootLoader和App1和App2三个程序之间的跳转目录:BootLoader和App1和App2三个程序之间的跳转1 、说明:2、跳转程序:3、BootLoader程序(1)配置地址和大小4、App1程序(1)程序(2)配置地址和大小(3)程序现象5、APP2程序(1)程序(2)配置地址和大小(3)程序现象6、综述1 、说明:三个程序是(1)BootLoader 亮两个LED灯,1秒后进入App1.(2)app1 LED1闪烁,长按按键后进入App2.(3)app2 LED2闪烁,长按按原创 2021-08-05 20:06:33 · 4554 阅读 · 0 评论 -
用MDK调用脚本在生成hex文件名后面增加时间
用MDK调用脚本在生成hex文件名后面增加时间编辑如下脚本@echo offecho ++++++++++++++++++++++++++++++++++++++echo %date:~0% %time:~0,-3%set yy=%date:~0,4%set mm=%date:~5,2%set dd=%date:~8,2%set h=%time:~0,2%set m=%time:~3,2%REM set s=%time:~6,2%SET n=%yy%-%mm%-%dd%_%h%-原创 2021-04-15 16:19:43 · 412 阅读 · 0 评论 -
BAT脚本在文件后面增加修改时间
BAT脚本在文件后面增加修改时间① 时间和日期REM @echo offREM echo ++++++++++++++++++++++++++++++++++++++echo %date:~0% %time:~0,-3%显示如下:②把“/”去掉,换成“-”set yy=%date:~0,4%set mm=%date:~5,2%set dd=%date:~8,2%set h=%time:~0,2%set m=%time:~3,2%set s=%time:~6,2%SET n=原创 2021-04-15 15:52:53 · 3733 阅读 · 0 评论 -
单路D触发器做自锁开关
1. 单路D型触发器如图2. 功能图3.引脚信息4.真值表5.仿真原理图,单路D触发器只有一个D和Q,无Q‾\overline{\text{Q}}Q,仿真图中无单路用多路代替。1.初始上电状态2.按按键原创 2021-04-12 15:38:14 · 6078 阅读 · 0 评论 -
DMX512协议解析
1、 DMX512协议特点:(1)采用RS-485总线收发器,差分电压进行传输的,抗干扰能力强,信号可以进行长距离传输;(2)不论调光数据是否需要改变,主机都必须发送控制信号。(3)由于数据帧之间的时间小于1s,所以在1s内没有收到新的数据帧,说明信号已经丢失;(4)因为是数据是调光用的,使用环境是不做安全要求的设备, 并且是不间断传输的,所以不需要复杂的校验。2、 波特率:250000一个bit位 4us8个位(Slot:x) 4*8=32us,x是从1到512如图:3、下面是一帧数原创 2021-04-02 18:38:11 · 10869 阅读 · 1 评论 -
一个if括号里的条件判断太多,改变方法
1.并列关系,可以用两种方法 if(0xF0 ==rx_buf[0]&&0xF0 ==rx_buf[1]&&0xF0 ==rx_buf[2]&&0xF0 ==rx_buf[3]&&0xF0 ==rx_buf[4]&&0xF0 ==rx_buf[5]) { About(); }(1). 拆分成几个if,还是太长,用第二种方法 { if(0xF0 ==(rx_buf[0]&0xFF) &&a原创 2021-04-02 13:56:36 · 3310 阅读 · 0 评论 -
系统基础操作笔记
内核 kernel外壳 shellfile system进程 守护进程 精灵进程程序进了内存==>>进程shell: 命令解释器$ 命令提示符 sh/bash % cshsh bash csh tshe kshe管理员 root 、符号#退出:exitUnix 系统根目录:/常见子目录:bin sbin 存放一些命令home 各种用户目录opt -存外部程序usr -用户可能用到的文件etc -基本配置文件原创 2021-03-06 21:11:35 · 127 阅读 · 0 评论 -
const指针,指针和数组,函数和指针
const指针const不管在类型的前后,只要在星号前面意思就一样。等价 :int const *p;const int *p;常量指针: int n=100; const int* p=&n; // *p=200; //错 int m=1000; p=&m; //对指针常量: int n=100; int* const p=&n; //只能指向n *p=200; //对 int m=100; p=&m; //错指原创 2021-03-06 20:50:43 · 141 阅读 · 0 评论 -
指针和数组
指针和数组:char* str ="abcdef"; 不可修改char ch[] ="abcdef"; 可修改char* s ; s+2; //指针移动2位 int* s; s+2; //指针移动8位 double* s; s+2; //指针移动16位二维数组名加1,是移动1行二维数组 a[i][j] a[0]是第一组元素首地址 a[0]+1是第一组中第二个元素地址 数组名 a+1 是加了1组(行),是第二组首地址*p++和*(p++)等价,是自增p。要自增p原创 2021-03-06 20:46:05 · 105 阅读 · 0 评论 -
C语言基础
浮点数例: %f 一般6位小数 %.2f 后有两位小数浮点数没有符号和长短逗号运算符的结果是,最右边步骤的结果负数表示负二进制转十进制<1> 减1按位取反 二转十 <2> 按位取反加1 负数转二进制负数二进制转十进制,第一位是符号位 0正1负负十进制转二进制 ,源码按位取反加1 加符号有符号的负数,右移几位在前面补几位1无符号右移前面补0有符号数,负数前面补符号位有符号{最高位是0,右移几位补几个0 (正){最高位是..原创 2021-03-06 20:38:36 · 131 阅读 · 0 评论 -
静态库和动态库
静态库和动态库静态库:直接把代码复制到目标文件中动态库/共享库:把代码的地址复制到目标文件中1、 只用静态库的步骤:1)生成库文件 a.编写源文件.c b. gcc -c xx.c 生成.o文件 c.用ar -r libss.a xx.o 生成.o文件2)连接库文件 三种方式: a. gcc xx.c libss.a 直接连接 b. gcc xx.c -L ss -L静态库所在的目录 c.配置 LIBRARY_PATH为静态库文件所在的目录,可以省略-L 命令:gcc xx原创 2021-03-06 19:47:32 · 153 阅读 · 0 评论 -
gcc编译器常用选项
gcc add.c -I test/ 在当前目录下的test找add.c gcc 常用选项: -V 显示各种信息 -E 只完成预处理工作 —std=98/-std=99制定采用的C标准版本 -S 转换成汇编语言程序 -O 优化(1,2,3,) -o 只对原文件进行编译,不连接,用于指定结果。 ...原创 2021-03-06 19:41:11 · 322 阅读 · 0 评论 -
const指针,不管在类型的前后,只要在星号前面意思就一样
const不管在类型的前后,只要在星号前面意思就一样。 int const *p; 等价 const int *p;原创 2021-03-06 19:31:06 · 226 阅读 · 0 评论 -
字节对齐
字节对齐char 1个字节int 4个字节如下: C表示 char I表示 int4字节对齐: C I CCI CIC CXXXIIII CCXX IIII CXXX IIII CXXX ```原创 2021-03-06 19:23:09 · 128 阅读 · 0 评论 -
【转载】VS生成的exe程序无法在其它电脑运行
这里https://blog.youkuaiyun.com/u014493318/article/details/60875012这里https://blog.youkuaiyun.com/whatday/article/details/9143209转载 2018-12-22 11:54:59 · 5103 阅读 · 1 评论