C语言编程
文章平均质量分 60
jinxueHou专栏
当你还不能写出自己满意的程序时,你就不要去睡觉.
展开
-
面试题汇总
1、统计一个字节数据的二进制格式中位数为1的个数。2、把一个无符号整形数据高低位进行逆变。比如1逆变后得到0x80000000,2逆变得到0x40000000,3逆变得到0xC0000000。原创 2022-08-15 19:55:46 · 276 阅读 · 0 评论 -
顺序表的实现与操作(一)
1、sqlist.h文件实现顺序表函数声明内容#ifndef __sqlist_H__#define __sqlist_H__#include<stdio.h>#include<stdint.h>#include<stdbool.h>#include <malloc.h>#define DATASIZE 255 //数组长度#define EMPTY -1typedef uint8_t DATATYPE;typede...原创 2022-05-22 00:07:14 · 442 阅读 · 0 评论 -
把ASCII码的字符串转为数字的16进制
/*函数名称:AsciiToHex功能:把ASCII码的字符串转为数字的16进制参数dst:存储16进制数组数据指针参数src:存储ASCII码的字符串指针返回值:16进制的数组数据长度*/int16_t AsciiToHex(uint8_t*dst,uint8_t*src){ uint8_t ch; uint16_t index=0; if(strlen(src) == NULL) { return -1; } if(strl...............原创 2022-02-17 17:40:20 · 18399 阅读 · 0 评论 -
全套CRC校验的算法
1、CRC16-Modbus校验算法uint16_t crc16_modbus(uint8_t *data, uint16_t length){ uint8_t i; uint16_t crcmodbus= 0xFFFF;//初始值为0xFFFF; while(length--) { crcmodbus ^= *data++; //crcibm ^= *data; data++; for (i = 0; i < 8;...转载 2021-01-26 18:49:58 · 1045 阅读 · 0 评论 -
单片机编程之联合体(union)的妙用
文章转载自:https://www.cnblogs.com/CodeWorkerLiMing/p/12045166.html在单片机软件编程中,结构体和枚举类型都很常用到,联合体相对来用的就比较少。那么结构体和联合体的区别到底在哪里?我们先列举一个结构体如下:struct test{ int office; char teacher[5];};struct test a;我们再定义一个联合体,如下:union test{ int office; ...转载 2021-01-17 17:08:59 · 3760 阅读 · 0 评论 -
数据通讯拆分包算法
在设备的通讯过程中,可能存在数据很长,导致数据无法一次性发送,或者长数据发送会丢失,为了解决这一问题,自己用C语言实现的一个简单的拆分包算法:#include <stdio.h>#include <stdint.h>#include <stdbool.h>#include<stdlib.h>#define dataTotalLen 100#define groupLen 7//拆分后一个数据包的长度int main(void...原创 2021-01-12 18:34:18 · 1115 阅读 · 0 评论 -
把浮点数转为字符串(隐形把数据进行四舍五入)
#include <stdio.h>#include <stdint.h>int main(void){ float floatData = 3.141592653; char strData[50]; sprintf(strData,"%0.0f\r\n",floatData);//把浮点数转为字符串,包含隐形的四舍五入 printf("保留整数:%s\r\n",strData); sprintf(strData,"%0.1f\r...原创 2020-07-12 15:37:41 · 826 阅读 · 0 评论 -
16进制/10进制数转化为浮点型案例
#include <stdio.h>#include <stdint.h>//共用体,单精度浮点型和整型数共用内存存储typedef union{ float floatData;//单精度浮点型 uint32_t u32Data;//整型类型}DataType;DataType data;//声明一个DataType类型的data变量int main(void){ data.u32Data = 0x40A56C8B; printf(...原创 2020-07-12 14:48:02 · 1235 阅读 · 0 评论 -
CodeBlacks16\17\20版本下载
CodeBlacks16\17\20三个版本百度网盘下载链接:https://pan.baidu.com/s/1ucDC53ggGfQO-IAcuEp38A提取码:g9ds有需要的同行可以下载。原创 2020-05-04 19:32:28 · 561 阅读 · 0 评论 -
在字符串中查找指定的字符串--strstr
在实际开发过程中,某个无线模块,比如wifi模块,你给它发送一条指令,它给你返回一条应答,这条应答不是根据什么协议应答给你,只是返回了一条带有某个特殊的字符串字段,这个特殊的字符字段能帮我们判断模块返回的指令是否是正确的,这里我们用strstr来获取这个字符串中的某一个字符串字段,如下:#include <stdio.h>#include <stdint.h>#in...原创 2020-03-18 23:40:32 · 4969 阅读 · 0 评论 -
字符串(0-9和小数点)转为数字--atof,数字转化为字符串--sprintf
字符串转为数字或者数字转为字符串在实际项目中,我们经常用得到,合理运用C标准库函数,可以为我们节省很多开发时间。#include <stdio.h>#include <stdint.h>#include <string.h>#include <math.h>#include <stdlib.h>int main(void)...原创 2020-03-18 23:19:43 · 741 阅读 · 0 评论 -
怎么判断闰年和平年
平年365天,闰年366天.公历闰年的精确计算方法(按一回归年365天5 小时48分45.5秒)①普通年能被4整除且不能被100整除的为闰年.(如2004年就是闰年,1901年不是闰年)②世纪年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年)③对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年.如172800年是闰年,86400年不是闰...原创 2020-02-15 14:50:58 · 3689 阅读 · 0 评论 -
sprintf数字转化为字符串与LCD12864的数据显示
1、原创 2020-02-07 17:04:43 · 704 阅读 · 0 评论 -
计算机存储的大小端模式解析
----------------------------------------------------------------------------------------------------------------先主要介绍了大小端问题的来源,作者应该是基于32位的机器来讲解的。在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问...转载 2021-10-17 09:42:48 · 232 阅读 · 0 评论 -
device-monitoring-studio(串口监控软件)的使用方法
一、官网下载device-monitoring-studio1、搜索device-monitoring-studio 在搜索平台上输入“device-monitoring-studio”进行搜索,进入官网,如下图1所示, ----...原创 2019-10-27 10:54:43 · 12737 阅读 · 2 评论 -
字符串转为小数点,乘以一个数以后,转换为科学计数法,再把科学计数法转化为字符串
#include <stdio.h>#include <stdint.h>#include<string.h>#include<stdlib.h>int main(void){ double coefficient = 10000.2345;//一个系数 char str1[] = "3141592653589793238...原创 2019-10-25 16:02:43 · 528 阅读 · 0 评论 -
使用STC15W4K系列单片机需要注意I/O口的一些问题
在STC15W4K系列单片机中,与PWM2—PWM7相关的12个I/O口[P3.7/PWM2,P2.1/PWM3,P2.2/PWM4,P2.3/PWM5,P1.6/PWM6,P1.7/PWM7,P2.7/PWM2_2,P4.5/PWM3_2,P4.4/PWM4_2,P4.2/PWM5_2,P0.7/PWM6_2,P0.6/PWM7_2],上电复位后是高阻输入状态,要对外能输出,要软件将其改为强推挽原创 2016-12-02 17:08:05 · 21013 阅读 · 0 评论 -
学习《FreeRTOS源码详解与应用开发》笔记
1、注意:任务函数内部定义局部变量的内存大小不能大于此任务堆栈内存的大小。2、FreeRTOS定义任务优先级时,0优先级(空闲中断占用)和最高优先级31级(定时器占用)不能用。3、用start_task创建任务task1和task2时,start_task只创建一次就行,不用多次创建,所以创建完start_task后,就可以把start_task任务删除,用vTaskDelete()函数删...原创 2018-08-26 00:02:07 · 13470 阅读 · 0 评论 -
static函数局部变量的使用
#include <stdio.h>#include <stdint.h>#include <string.h>#include <math.h>#include <stdlib.h>void staticFun(void){ static uint8_t data = 0; data++; data...原创 2018-09-04 17:28:20 · 3996 阅读 · 0 评论 -
C语言的那些事--二维数组作为实参传参
#include <stdio.h>#include <stdint.h>void fun(uint8_t (*buf)[4],uint8_t line,uint8_t row) { uint8_t i,j; for(i = 0; i < line;i++){ ·for(j ...原创 2018-10-07 16:48:02 · 2480 阅读 · 0 评论 -
stm32中使用#pragma pack(非常有用的字节对齐用法说明)
文章转自:https://www.cnblogs.com/King-Gentleman/p/5297355.html#pragma pack(4) //按4字节对齐,但实际上由于结构体中单个成员的最大占用字节数为2字节,因此实际还是按2字节对齐typedef struct{ char buf[3];//buf[1]按1字节对齐,buf[2]按1字节对齐,由于buf[3]的下一...转载 2018-10-20 12:33:02 · 3299 阅读 · 0 评论 -
C语言要注意的地方
一、sizeof和strlen的使用 二、结构体的函数声明和调用 ......原创 2018-11-11 18:52:34 · 542 阅读 · 0 评论 -
C语言程序设计基础及应用实例---第一节 printf函数的使用
(1)printf函数打印字符串 #include <stdio.h>int main(void){ printf("Helloworld!\r\n"); return 0;}printf打印“Helloworld!”然后回车换行,字符串打印如下: (2)printf函数打印数组#include <stdio.h>...原创 2018-12-05 22:44:21 · 792 阅读 · 0 评论 -
C语言程序设计基础及应用实例---第二节 for循环的使用
(1)for循环与while()原创 2018-12-05 22:53:16 · 482 阅读 · 0 评论 -
C语言函数指针
#include <stdio.h>#include <stdint.h>#include <stdbool.h>#include <windows.h>typedef int(*pFunc)(int a,int b);//用typedef声明一个名为pFunc的函数指针类型typedef struct{ int a;//前一个...原创 2019-06-02 11:24:29 · 334 阅读 · 0 评论 -
声明和定义结构体需要注意的问题
1、为什么不能在声明 结构体的时候直接给成员变量赋声明?(1)声明变量uint8_t i;(2)声明函数void func(void);(3)声明变量类型typedef int int32_t(4)结构体的声明struct Node{ uint8_t i; uint32_temp;};(5)联合体的声明unio...原创 2019-06-02 16:08:27 · 4206 阅读 · 0 评论 -
Keil编译出现sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.报错的解决方法
在刚刚创建工程时,不注意忘记添加单片机的启动文件,则会出现如下报错提示,报错后Keil会打开xxxxxx.sct文件,如下图所示,把startup_xxx.S文件添加到工程文件夹中问题就解决了,如下图所示,...原创 2019-06-27 01:08:20 · 13988 阅读 · 0 评论 -
C语言选择排序法进行数据升序排序
int main(void) { uint8_t array[]={12,24,10,23,18,15,50,86,100,32,28,60}; int i,j,min,t; for(i=0;i<sizeof(array)-1;i++) { min = i; for(j=i+1;j<sizeof(array);j++) ...原创 2019-09-20 14:03:17 · 6911 阅读 · 0 评论 -
Java用户账号和密码登录
package javaProject;import java.util.Scanner;public class test { private String []userBox = {"jinxueHou","123456"};//数据库存储的账号和密码,private修饰,只能在本类中使用 public static void main(String[] args)...原创 2019-10-07 15:55:01 · 24991 阅读 · 0 评论 -
学习正点原子讲解FreeRTOS中断管理心得和cortex-M3权威指南笔记
1、一个任务恢复运行:(1)恢复一个任务的运行:将一个任务从挂起态恢复到就绪态,只有通过函数vTaskSuspend()设置为挂起态的任务才能使用vTaskResume()恢复,函数原型为void vTaskResume(TaskHandle_t xTaskToResume),xTaskToResume要恢复任务的句柄。(2)中断服务函数中恢复一个任务的运行:用于中断服务函数中恢复一个任务...原创 2018-08-25 23:33:45 · 2113 阅读 · 0 评论 -
CodeBlacks程序调试的那些事
一、创建工程文件在电脑桌面创建一个文件用于保存要创建的工程,并命名为“C程序测试”,如右图所示,。二、安装CodeBlacks双击点击如右图所示的"CodeBlacks"软件安装包,开始安装"CodeBlacks"应用软件。安装好以后出现如下图所示:三、创建工程打开“CodeBlacks”,如下图所示1、点击左上角的“File”--->"New"---&g...原创 2018-08-23 21:44:34 · 1616 阅读 · 0 评论 -
STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题
一、HAL库 串口 DMA+ESP8266模组通信问题用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组发送AT指令,wifi模块总是少一次的应答,在无线通信过程中是不方便和不允许的,因为在通信过程会通信不畅或中断,如果要远程升级程序,这不能达到远程升级需求。部分程序如下:int mian(voi...原创 2018-08-27 00:04:27 · 7105 阅读 · 0 评论 -
结构体嵌套
#include #define LEN 20const char * msgs[5] ={ " Thank you for the wonderful evening, ", "You certainly prove that a ", "is a special kind of guy. We must get together", "原创 2017-03-07 22:50:42 · 635 阅读 · 0 评论 -
位(bit)、字节(Byte)、MB(兆位)之间的换算关系
B是Byte的缩写,B就是Byte,也就是字节(Byte);b是bit的缩写,b就是bit,也就是比特位(bit)。B与b不同,注意区分,KB是千字节,Kb是千比特位。1MB(兆字节) = 1024KB(千字节)= 1024*1024B(字节) = 1048576B(字节);8bit(比特位)= 1Byte(字节);1024Byte(字节)= 1KB(千字节);1024KB(千字节)...原创 2016-12-07 10:43:26 · 83759 阅读 · 0 评论 -
联合体在单片机中的应用
转自:http://baike.baidu.com/item/%E8%81%94%E5%90%88%E4%BD%93?fr=aladdin联合体在单片机中的应用 单片机中经常会遇见分离高低字节的操作,比如进行计时中断复位操作时往往会进行 (65535-200)/256,(65535-200)%256这样的操作,而一个除法消耗四个机器周期,取余也需要进行一系列复杂的运算,如果在短时间内需要进行很多转载 2017-03-09 17:20:54 · 844 阅读 · 0 评论 -
匹配printf()说明符的类型
第1问题: 打印结果如下: 通常,在程序代码中使用2345这样的数字时,它以int类型存储。当使用1000000这样的数字int类型不能表示时,编译器会视为long int类型(假定这种类型可以表示该数字),如果数字大于long类型的最大值,C会视其为unsigned long类型。如果仍然不够,C会视其为long long类型或者unsigned long long类型(如果有这些类型的话)。原创 2016-12-30 14:42:33 · 1044 阅读 · 0 评论 -
RTC时间在LCD上显示需注意的问题
unsigned char displayTime[2];rtc->day= ReadRtc();displayTime[0]=0x30+(rtc->day/16);displayTime[1]=0x30+(rtc->day%16);DisPlayTime(1,0,displayTime);BCD码转十进制:rtc->day/16;十进制转ASCII码:0x30+(rtc->day%1原创 2016-12-05 00:22:13 · 2975 阅读 · 0 评论 -
STM32F4_LCD12864并行驱动
头文件:#ifndef __12864LCD_H__#define __12864LCD_H__#include "stm32f4xx.h"#include "stm32f4xx_gpio.h"#include "sys.h"#include "delay.h"#include /***控制端口GPIO定义***/#define L原创 2016-10-02 02:28:53 · 7061 阅读 · 3 评论 -
IAR J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?
情况一:打开IAR的"Project"------->"Options..."------->"J-Link/J-Trace"--------->"Connection"项查看“Interface”下的“JTAG”和“SWD”是不是灰色的,如果不是灰色的,结合当前你用的是JATG还是SWD,我用的是“SWD”,所以我选中“SWD”项,回来再下载程序就不会报错。情况二:在情况一中...原创 2016-10-15 00:36:05 · 30764 阅读 · 8 评论 -
switch( )的经典引用
switch( )的经典引用:#includeint main(){ int i; do { printf("按1,流量查询\n"); printf("按2,人工服务\n"); printf("按3,密码修改\n"); printf("按4,套餐信息\n"); printf("按0,退出系统\原创 2016-05-15 15:58:08 · 775 阅读 · 0 评论