C
文章平均质量分 76
迁旭
这个作者很懒,什么都没留下…
展开
-
makefun颜色识别模块一些总结(假ZC-CLS381)
发出开始转换指令后一定要第一时间读取颜色寄存器值,这里推测读取的是上一次的颜色值,不读取的话新转换的值更新不进去,然后就是读取完之后,一定要有足够的时间等待转换结束,否则数值不更新。for(j = 0;//不同的采样要有不同的延时。模块号称使用ZC-CLS381芯片识别颜色,但其实不是(其实是TCS34721/TCS34725)recvbuff[0] = 0x01 | 0x80;连模块地址都不一样。...原创 2022-08-09 09:45:14 · 721 阅读 · 3 评论 -
修复之前写的模拟I2C程序,增加多总线,时序更精确操作
C文件:-------------------------------------------------------------------------------------#include"Si2c.h"//Bus driver implementationSi2c_device Si2c_device_nu[MY_SI2C_DEVICE_NU];enum Si2c_err MY_Si2c_err;void Si2c_delay( unsigned int dy ) { u原创 2022-06-20 21:46:34 · 202 阅读 · 0 评论 -
删除kernel和uboot下未编译的文件
删除kernel和uboot下未编译的文件,方便之后的文件分析,排除多余的干扰项目代码如下测试可以#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>#include <unistd.h>int readFileList(char *basePath){ DIR *dir; struct dirent *ptr...原创 2022-04-16 15:28:42 · 217 阅读 · 0 评论 -
CRC16 XMODEM
const unsigned short crc16_tab[] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9...原创 2021-09-30 16:04:51 · 956 阅读 · 0 评论 -
BCD码与十进制相互转换
#include "stdio.h"char BCD2DEC(unsigned char *bcd){ unsigned char tmp = 0; if(*bcd>0x99) return -1; tmp = ((*bcd>>4)*10)+(*bcd&0x0F); *bcd = tmp; return 0;}char DEC2BCD(unsigned char *dec){ unsigned char t...原创 2021-08-26 15:22:19 · 2230 阅读 · 0 评论 -
GCC使用说明
GCC代表“GNU编译器合集”可编译C、C++、Objective-C、 Objective-C++、 Java、 Fortran、 Ada、GoGCC语言标准:C89、C90 指令-》 -ansi -std=c90C99 指令-》 -std=c99C11 指令-》 -std=c11GNU拓展C90 指令-》 -std=gun90GNU拓展C99 指令-》 -std=gnu99GNU拓展C11 指令-》 -std=gnu11c++ 98 (export是一个明显的例外)和c++ 03..原创 2021-03-28 21:37:30 · 1354 阅读 · 0 评论 -
GD32 RTC
部分GD32RTC只有一个存储寄存器,官方例程也只能存储时分秒,故此特别编写UTC时间,兼容上年月日周时分秒-----------------------------------------------------------------------------------------------------------------C----------------------------------------------------------------------------...原创 2021-01-25 15:14:58 · 1844 阅读 · 3 评论 -
CS1237 STM32控制程序以及原理图需要注意事项
CS1237供电为5V的时候STM32是3.3V这时候应该加不小于5.1K的上拉电阻,不然CS1237跟32通信不上,32设置为OD驱动,同时不需要设计通信引脚的限流电阻就可以下面是驱动程序----------------------------------------------------------MAIN----------------------------------------------------------/* USER CODE BEGIN Header *//**.原创 2020-12-12 18:26:47 · 6962 阅读 · 3 评论 -
GD32 2.4寸8080协议16bit屏幕驱动
#include "my_oled.h"_lcd_dev lcddev;/*static void LCD_WR_REG(uint16_t reg){ LCD_RS_CLR; LCD_CS_CLR; DATAOUT(reg); LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET;}*/__asm static void LCD_WR_REG(uint16_t reg){ PUSH {r4-r6,lr}...原创 2020-12-02 10:57:25 · 1335 阅读 · 0 评论 -
AVR 模拟I2C
//IIC.c#include "jpheat.h"#include "delay.h"//4M晶振, pDelayNus(3)为6us#define I2C_Delay() pDelayNus(15)#define I2C_SCL PA3 #define I2C_SDA PA2 #define I2C_DDR DDRA#define I2C_POTR ...原创 2020-11-07 13:25:20 · 569 阅读 · 0 评论 -
FFT的C语言实现,对照MATLIB
%测试程序clear; %清屏clc;Fs = 100; % Sampling frequencyt = -1:1/Fs:1; % Time vectorL = length(t); % Signal lengthxn=2/(4*sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.001))); %要转换的序列n = 2^nextpow2(L);M=nextpow2(L); ...原创 2020-10-20 13:49:09 · 541 阅读 · 0 评论 -
C语言,复数运算,测试过直接用
#include "stdio.h"#include "math.h"typedef struct plural{ double shi; double xv;};//复数加法plural complexAdd(plural a, plural b){ plural result; result.shi = a.shi + b.shi; result.xv =...原创 2020-10-19 19:30:42 · 428 阅读 · 0 评论 -
CRC7 测试过,直接用
#include "stdio.h"/*得到对照表 TAB_LEN 对照表长度 ALPHA 多项式系数*/#define TAB_LEN 256#define ALPHA 0x09int table_gen8(unsigned char *buf){ unsigned int alpha = ALPHA; //x^7+x^3+1 int i,j; unsigned char tmp; for(i=0;i<TAB_LEN;i++){ t...原创 2020-10-09 16:25:05 · 605 阅读 · 0 评论 -
模拟I2C程序,带多字节连收、多字节连发,适用于各个平台
-------------------------------------------------------------------------------- C --------------------------------------------------------------------------------------#include"simulation_i2c.h"GPIO_InitTypeDef mGPIO_InitTypeDef;unsigned long Delayco原创 2020-09-29 16:37:18 · 1412 阅读 · 0 评论 -
SPI四种模式代码
#include "stdio.h"/***************************************************Mode0:CPOL=0,CPHA=0 常用 空闲SCK=0 数据采样是在上升沿Mode1:CPOL=0,CPHA=1 空闲SCK=0 数据采样是在下降沿Mode2:CPOL=1,CPHA=0 空闲SCK=1 数据采集是在下降沿Mode3:CPOL=1,CPHA=1 常用 空闲SCK=1 数据采样是在上升沿***...原创 2020-09-28 22:40:51 · 2099 阅读 · 0 评论 -
C语言,有宏定义,没有实现的实体
C语言,有宏定义,没有实现的实体在编译的时候调用不会报错比如: #define mtCOVERAGE_TEST_MARKER()这样可以预留后期实现变更,编译的时候也相当于没调用 else { mtCOVERAGE_TEST_MARKER(); }...原创 2020-09-20 18:24:27 · 848 阅读 · 0 评论 -
单片机非调试模式下死机如何定位错误
一、 Hard fault 产生原因硬件方面常见原因:1. 电源设计有错误,造成器件供电不稳;2. 电源质量不好,文波,噪声过大;3. 器件接地不良;4. 对于带有 Vcap 引脚的器件,管脚处理不当;5. 电路中有强干扰源,对器件造成干扰;软件方面常见原因:1. 使用了空指针;2. 对地址偏移量的计算有误;3. 数组越界导致程序出错;4. 动态内存使用不当,导致访问了已释放的内存地址;5. 通过地址访问了已失效的局部变量;一般因为硬件造成 Hard Fault 错误的可能性较低.原创 2020-09-15 13:28:09 · 737 阅读 · 1 评论 -
单片机硬错误排查方法
HardFault 错误调试定位方法1、首先更改 startup.s 的启动文件,把里面的 HardFault_Handler 代码段换成下面的代码:HardFault_Handler\PROCIMPORT hard_fault_handler_cTST LR, #4ITE EQMRSEQ R0, MSPMRSNE R0, PSPB hard_fault_handler_cENDP2、然后把 hard_fault_handler_c 函数放在 c 文件的代码中。代码如下:void.原创 2020-09-15 13:17:44 · 1408 阅读 · 0 评论 -
UTC转换时间,测试过直接使用
#include "stdio.h"typedef struct{ unsigned char my_seconds; unsigned char my_minutes; unsigned char my_hour; unsigned char my_day; unsigned char my_month; unsigned char my_week; un...原创 2020-08-27 14:49:00 · 296 阅读 · 0 评论 -
CRC16-MODBUS 已经测试ok拿来就用
#include "stdio.h"unsigned short MY_CRC16_MODBUS(unsigned char *buff,unsigned int size){ unsigned short tmp = 0xffff; unsigned short ret1 = 0; unsigned short n=0,i=0; for(n = 0; n < size; n++){ tmp = buff[n] ^ tmp; f...原创 2020-08-17 16:04:13 · 152 阅读 · 0 评论 -
浮点转字符串,拿来就用
void float_to_str(char *str,double num){ int high;//float_整数部分 double low;//float_小数部分 char *start=str; int n=0; char ch[20]; int i; double tp = 0.1; high=(int)num; low=num-high; while(high>0){ ...原创 2020-07-14 19:53:55 · 158 阅读 · 0 评论 -
再谈ADC过采样
在大多数情况下,10位的分辨率就足够了。但在某些情况下需要更高的精度。采用特殊的信号处理技术可以提高测量的分辨率。通过使用一种称为“过采样和抽取”的方法,可以实现更高的分辨率,而不使用外部ADC。此应用程序说明说明了该方法,以及需要满足哪些条件才能使该方法正常工作。下面的例子和数字是为自由运行模式下的单端输入计算的。没有使用ADC降噪模式。这种方法在其他模式中也是有效的,尽管下面例子中的数字会有所不同。ADC参考电压和ADC分辨率定义ADC步长。ADC的参考电压VREF可以选择为内部2...原创 2020-07-13 20:59:48 · 16535 阅读 · 7 评论 -
C语言函数不定参数实现方式
#include <QCoreApplication>#include <string.h>#include <stdio.h>#include <stdarg.h> //va_list宏的头文件/******************************************************************************************************************..原创 2020-05-19 19:52:19 · 426 阅读 · 0 评论 -
单片机过采样程序递归方法实现,程序直接用
我们知道采样四次,做一次右移可提升一位精度那么#include <QCoreApplication>#include <string.h>#include <QTime>//此处进行一次采样unsigned int mydata(){ unsigned int data=0; data=qrand()%65535; return data;}//四次采样增加一位精...原创 2020-05-17 18:47:13 · 621 阅读 · 0 评论 -
ADC过采样代码例子,拿来就用。
#include <QCoreApplication>#include <string.h>#include <QTime>//此处进行一次采样unsigned int mydata(){ unsigned int data=0; data=qrand()%65535; return ...原创 2020-05-06 20:40:22 · 2415 阅读 · 0 评论 -
冒泡排序(可用于MCU)
堆栈一定要给充足不然容易进入段错误。原创 2020-04-30 19:54:39 · 114 阅读 · 0 评论 -
GNU C重点详解
GNU C重点详解void1.描述函数是一个没有返回值类型的函数2.描述指针时可以承接任何类型的指针signed 1.有符号类型描述,默认为有符号类型2.当一个有符号类型和无符号类型进行比较时,默认当作无符号计算做对比,在<>=?这些算符时需要注意unsigned 1.无符号类型描述,被这种描述后,变量不会出现负数的情况short1.短整数类型 占用2个字节2.常...原创 2018-12-10 21:22:48 · 500 阅读 · 0 评论 -
linux C 常用io函数说明
int open(constchar*pathname,intflags,mode_tmode);返回值:成功则返回文件描述符,否则返回-1O_RDONLY只读模式O_WRONLY只写模式O_RDWR读写模式O_APPEND每次写操作都写入文件的末尾O_CREAT如果指定文件不存在,则创建这个文件O_EXCL如果要创建的文件已存在,则返回-1,并且修改errno的值O_TRUNC...原创 2018-12-16 17:53:42 · 159 阅读 · 0 评论