C语言
8421plus
嵌入式工程师一枚,不定期分享 嵌入式 软硬件 学习心得,欢迎大家一起学习交流
展开
-
lvgl 页面左右滑动处理
【代码】lvgl 页面左右滑动处理。原创 2023-11-21 17:59:52 · 1548 阅读 · 0 评论 -
04 hal cube 串口配置经供参考
3.重定向 printf。原创 2023-10-12 17:58:39 · 93 阅读 · 0 评论 -
IIC协议详解
iic 协议与实现原创 2022-10-06 15:34:40 · 3118 阅读 · 1 评论 -
crc8实现
printf("end1:0x%x",crc_sum(te));#include <stdio.h>#include <string.h>int crc_sum(char *numt ){ char i=0; int sum=0; char len =strlen(numt); while(i<4) { sum+=numt[i]; i++; } return (sum%256);}char crc_nsum(char *n.原创 2022-03-31 17:00:18 · 499 阅读 · 0 评论 -
2021-09-24 STM32 HAL库 定时器中断
//定时时间t=(Prescaler +1)*(Period +1) /clock(定时器时钟评率)` MX_TIM3_Init(); HAL_TIM_Base_Start_IT(&htim3); //(必须要,启动定时器中断)static void MX_TIM3_Init(void){ /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef s原创 2021-09-24 18:17:13 · 443 阅读 · 0 评论 -
单片机物联网升级方案
单片机物联网远程升级方案,直接上干货一般消费级产品,为了性价比,选用的mcu,一般资源很有限,以stm32103c6t6为例 ram 20k rom64k,主要功能实现如下MCU通过BOOT程序跳转到App主程序。BOOT程序实现引导跳转功能,App实现主程序业务功能。BOOT和App程序均存储在MCU内部Flash里面。在keil中地址设置例如下图,地址必须连续,boot地址的结束是app程序的起始地址,必须预先规划好程序空间大小,比如boot0x8000,32768字节,为32k,以此类推。原创 2021-12-31 11:48:23 · 2867 阅读 · 0 评论 -
计算器实现
计算器实现 #include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {i...原创 2019-11-03 18:46:07 · 170 阅读 · 0 评论 -
c基本逻辑控制语句
FOR 语句的执行流程图:for(表达式1:;表达式2;表达式3)【循环语句】:先对表达式1进行求解;再对表达式2进行处理,表达式2一般是条件语句,条件为真则执行循环语句,否则不执行循环;循环语句执行完后执行语句3,语句3一般是步长,接下来继续执行语句2,为真则继续执行循环语句....................if(x)语句 if(条件)【语句】-else【...原创 2019-03-20 10:59:15 · 892 阅读 · 0 评论 -
接口封装与实现
#include <stdlib.h>2 #include <string.h>34 int swap(void *x, void *y, int size)5 {6 void *temp;78 if((temp = malloc(size)) == NULL)9 return -1;10 memcpy(temp, x, size); memcpy(x,...转载 2019-03-16 22:30:53 · 864 阅读 · 0 评论 -
字符串复制操作
#include <stdio.h>#include <string.h > union Data{ int i; float f; char str[20];}; int main( ){ union Data data; data.i = 10; data.f = 220.5; s...原创 2019-02-21 12:56:42 · 333 阅读 · 0 评论 -
bool型函数定义及应用
bool型函数定义及应用已编译通过#include <stdio.h> int *p,a[10];//sizeof p;unsigned int c=-20;int d=10;typedef enum{ true=1, false=0}bool; //布尔类型,使用前必须自定义enum weekday //枚举类型 {sun=...原创 2019-02-21 11:37:15 · 8709 阅读 · 0 评论 -
柔性数组验证程序
柔性数组验证代码#include <stdio.h>#include <malloc.h> //must add// #include <stdlib.h> typedef struct test //must add typedef else error !!!!{ int a; float b; char c[]; ...原创 2019-02-20 17:03:32 · 152 阅读 · 0 评论 -
c运算符与优先级
1.逻辑运算符与位运算符逻辑运算符下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则:运算符 描述 实例 && 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。 || 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A...翻译 2019-08-07 08:42:39 · 278 阅读 · 0 评论 -
strlen与sizeof的区别
strlen与sizeof的区别 char sArr[] = "ILOVEC"; /*用sizeof求长度*/ printf("sArr的长度=%d\n", sizeof(sArr)); // is 7 //对 sizeof 而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度 //sizeof()返回...翻译 2019-03-17 17:13:36 · 132 阅读 · 0 评论 -
对一个 32 位的有符号整数,将这个整数中每位上的数字进行反转。
#include <stdio.h>int trans(int k) //数据反转{ int j; while(k!=0){ j=j*10+k%10; k=k/10;} return j; }////////////////////////////////////////////////...原创 2019-03-21 15:25:02 · 615 阅读 · 0 评论 -
条件编译的应用
#include <stdio.h>#define y1 #define y2 void f1(){#ifdef y1 printf("6666"); #endif } void f2(){ #ifdef y2 printf("8888"); #endif ...原创 2019-05-06 08:59:28 · 190 阅读 · 0 评论 -
软件模拟iic24c02协议实现:
软件模拟iic实现://iic时序#if 1void IIC_Start(){ SDA_OUT(); IIC_SCL=1; IIC_SDA=1; delay_ms(5); IIC_SDA=0; delay_ms(5);}void IIC_Stop(void){ SDA_OUT(); IIC_SCL=1; IIC_SDA=0; delay_ms(5); ...原创 2019-06-04 19:01:43 · 717 阅读 · 0 评论 -
求素数(c language)
素数:性质:除了能被1和本身整除以外不能被其他的数整除。 //1.用math.h库文件求绝对值#include"math.h"voidmain(){floatx;chart=-5;scanf("%f",&x);x=(3.14*x)/180;printf("xis:%f",tan(x));//scanf("%d",&t);...原创 2019-10-04 13:06:12 · 188 阅读 · 0 评论 -
c语言之联合体
c语言之联合体#include<stdio.h>union test1{int a;double b;float c;};union test2{int d;char e;};main(){int r1,r2;r1=sizeof(union test1);r2=sizeof(union test2); //联合体所占存储空间由列表中最大数据类型决定...转载 2018-12-16 22:01:00 · 383 阅读 · 0 评论 -
论 1与 ‘1’,“1”的区别
不同数据描述符号间的差异翻译 2019-02-21 14:35:17 · 4625 阅读 · 0 评论 -
大端与小段模式验证程序
结论:计算机是小端模式bigDUAN(大端模式)数据的高位字节存放在地址的低端 低位字节存放在地址高端 LittleDUAN(小端模式)数据的高位字节存放在地址的高端 低位字节存放在地址低端 #include <stdio.h> typedef enum { true=1, false=0 }bool; bool is_bi...原创 2019-02-21 13:28:52 · 210 阅读 · 0 评论 -
C语言的指针在32位单片机上的应用
C语言的指针应用(int*)(0x400ff0d4) 代表强制转换地址0x400ff0d4为int型32位指针。*((int*)(0x400ff0d4)) 代表取地址指针的内容所以有 接下来看看C语言结构图的深入应用1.首先生成GPIO_MEMapPtr的结构体指针变量2.用define 定义结构体指针起始地址 为 PTA_BASE_...原创 2019-02-15 15:24:02 · 814 阅读 · 0 评论 -
选择排序法
选择排序法 #include <stdio.h>void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp;}void sort(int arr[], int len){ int i,j; for (i = 0 ; i < len - 1 ; i++) ...转载 2018-12-11 16:13:04 · 135 阅读 · 0 评论 -
排序之冒泡算法
## **排序之冒泡算法**key1#include <stdio.h>void sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (ar...翻译 2018-12-11 15:59:32 · 153 阅读 · 0 评论 -
c语言之枚举数据内型
c语言之枚举数据内型#include<stdio.h>main(){enum weekday //枚举类型均以0123....顺序存储{ sun,mon,tue,wed,thu,fri,sat}a,b,c;a=sun;b=tue;c=fri;printf("%d,%d,%d",a,b,c);} ...转载 2018-12-16 21:58:46 · 295 阅读 · 0 评论 -
结构体的构造
//结构体的构造#include <stdio.h>struct list //创建结构体{char name[20];char sex;long int telephone;} list1={"Xiao Ming",'M',84699911},*p;main(){p=&list1;printf("Name=%s\nSex=%c\nteleph...转载 2018-12-16 16:07:43 · 988 阅读 · 0 评论 -
简单电话薄游戏
简单电话薄游戏 #include <stdio.h>#include <string.h>#define MAX 101struct aa /*定义结构体aa存储姓名和电话号码*/{char name[15];char tel[15];};int readin(struct...转载 2018-12-16 16:03:23 · 273 阅读 · 1 评论 -
数组排序
数组排序#include<stdio.h>#define N 5struct order /*定义结构体用来存储数据及它的排序*/{ int num; int con;} a[20]; /*定...转载 2018-12-16 16:00:56 · 209 阅读 · 0 评论 -
c语言: 在字符串某位置插入字符串
在字符串某位置插入字符串#if 1#include <stdio.h>/* */void insert(char *s,char *q,int n) //insert a string(q) to a string.(s) n is the position will to insert. {int i=0;char *str,strcp[60...翻译 2018-12-16 00:52:58 · 9567 阅读 · 0 评论 -
用c语言实现年份的判断并输出该天是本年的天数
用c语言实现年份的判断并输出该天是本年的天数 #include <stdio.h> int n(); int year,month,day,num=0,i, a[12]={31,28,31,30,31,30,31,31,30,31,30,31}, \ b[12]={31,29,31,30,31,30,31,31,30,31,30,31};...原创 2018-12-15 17:54:32 · 964 阅读 · 0 评论 -
指针与数组在结构体中的应用(问题)。
#if 1#include <stdio.h>#include <string.h>struct student //{char *name ; //if array,it is avaliable. //MEMORY IS NOT HAVE A SKY.若改为数组就好了。int score;}stu,*pstu;int main(){...原创 2019-02-27 15:49:14 · 246 阅读 · 0 评论 -
为结构体成员分配内存(vc++6.0调试)
#include <stdio.h>#include <string.h>// #include <stdlib.h> //if open ,error occur.typedef struct stu{char *name;int soc;int ll;};int main(){struct stu st;st...原创 2019-03-01 10:20:38 · 319 阅读 · 0 评论 -
C语言之i++ 和++i 的区别验证程序
i++ 和++i 的区别#include <stdio.h>int main(){ // student A; int i, k; for(i=0;i<=5;) { printf("i value is : %d\n",++i); } for(k=0;k<=5;) ...原创 2019-02-19 19:21:28 · 892 阅读 · 0 评论 -
c内存及字符串操作
<stdlib.h> 头文件中1 void *calloc(int num, int size);在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。2 void free(void *address); 该函数释放 address 所指向的内存块...翻译 2019-02-14 13:27:56 · 489 阅读 · 0 评论 -
c指针数组比对程序
#include <stdio.h>#include <string.h>#include <stdlib.h>char a[]="hello word" ;char c[]="h";char *b;int main(){ b=a; //指针指向a数组 int len=strlen(b);// int len1=...原创 2019-02-14 11:43:15 · 161 阅读 · 0 评论 -
函数调用
so the conclusion is : the function been call's input parameter is pointer address.#include <stdio.h> void fun0 (char a[]){char c = a[1];//或者是 char c = *(p+3);printf("c is : %c\n",c)...原创 2019-02-25 18:45:17 · 143 阅读 · 0 评论 -
二维数组的存储
二维数组的存储以数组下标的方式来访问其中的某个元素:a[i][j]。编译器总是将二维数组看成是一个一维数组,而一维数组的每一个元素又都是一个数组。a[3]这个一维数组的三个元素分别为:a[0],a[1],a[2]。每个元素的大小为 sizeof(a[0]),即 sizof(char)*4。由此可以计算出 a[0],a[1],a[2]三个元素的首地址分别为& a[0],...翻译 2019-02-24 22:42:35 · 2259 阅读 · 0 评论 -
C语言->参数类型所占字节数计算
C语言各参数类型所占字节数计算 #include <stdio.h> struct student{ double aaa; int bbb; char ccc;};int main(){ struct student A; // #if 1 printf("aaa的偏移地址为:%d\n...原创 2019-02-19 14:15:07 · 460 阅读 · 0 评论 -
堆和栈的区别
堆与栈在内存中的存储情况 静态变量一般存储到栈内,栈空间由高地址向低地址方向存储,堆的存储由低地址向高地址,栈的存取采用先进后出”方式 本原理可以联系到存储模式的大小端模式,基本变量的存储都在栈区,那么先定义的变量所处的位置在高地址,后定义的变量存在低地址,大端模式是高字节存在低地址,低字节存在高地址(假设为最正常的模式)。小端模式是高字节存在高地址,低字...原创 2019-02-24 22:10:25 · 196 阅读 · 0 评论 -
字符串删除,并输出新的字符串
#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;string.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;/*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/int delSubStr(char * src,char * s转载 2019-02-14 12:24:00 · 851 阅读 · 0 评论