自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hsjdw的博客

feelfree

  • 博客(13)
  • 收藏
  • 关注

原创 关于结构体和联合体大小的计算

在结构体成员中,a占5个字节,b占4个字节,c占8个字节。5+4+8=17.但是17不是 8的倍数,所以(5+3)+(4+4)+8=24.故占24个字节。那么结构体中 d占5字节,e占4字节,f占8字节。如果定义以2字节对齐,a占7字节,b占12字节,c占8字节,那么此联合体大小为12字节。联合体中a占10字节,b占8字节,c占8字节。成员a 占7字节,成员b 占 4*2=8 字节,成员c 占8字节,a占7字节,b占12字节,c占8字节。联合体中a占10字节,b占8字节,c占8字节。

2022-10-30 10:55:25 1376 1

原创 结构体定义函数指针的使用

下面的例子很好的说明了结构体函数指针的用法。#include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))typedef struct{ int funCode; void (*func)(int *data);}FUNC;static void get_para1(int ...

2021-08-04 14:11:57 329

原创 #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) 的含义

arr是个数组sizeof (arr) 就是这个数组所占的内存总量也就是字节总数,sizeof(arr[0]) 就是单个数组所占的内存.(sizeof(arr)/sizeof(arr[0]))就是arr数组的元素的个数.即 ARRAY_SIZE(arr)就是arr数组的元素的个数....

2021-08-03 15:24:19 2276

原创 千位分隔符显示

有个项目需要在显示屏上,显示千位分隔符。就是1000需要显示成1,000 , 123456需要显示成123,456。 所以在自己在网上查找了相关资料,整理了一段代码,希望对自己对其他人都有帮助。void Function( int32_t n){ int8_t i=0; int8_t j=3; u8 data[20]; while(n) { data[i]=n%10; n/=10; i++; if(n!=0&&a...

2021-08-01 14:39:07 716

原创 C语言关键字(volatile / static /const / inline)

1 volatile关键字分析,往往应用在三种场合1)多线程编程共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要省略该变量的访问。2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要省略该变量的访问。3)ARM定义寄存器的时候,寄存器是指向一个地址,要加上volatile进行修饰,让编译器不要优化而省略该变量的访问。2 static 一般有2个作用,规定作用域和存储方式.对于局部变量, st...

2021-07-04 19:15:19 454

原创 STM32 定时器小结

STM32F103共有8个16位定时器,分别为TIM0~TIM7。其中TIM6、TIM7是基本定时器,TIM2、TIM3、TIM4和TIM5是通用定时器,而TIM1和TIM8是高级定时器。还有一个SysTick定时器.1:先介绍下SysTick定时器:SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 时,将从RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。使用内..

2021-07-04 14:21:30 477

原创 IO模拟串口发送

1 串口传输 默认 波特率1000 ,1起始位 8个数据位,1校验位,1停止位 。2 传输时,从起始位开始,从一个数据的低位(LSB)开始发送,如图从左向右的顺序,对电平拉高或拉低,最后停止位时拉高。3 波特率大小,改变延时时间即可。例如 1000 波特率 根据公式 : 1/1000=0.001s 也就是说每发送1bit延时1Ms .4 串口发送 将电平拉低 延时1MS(视为 起始位 0 ,传输数据正式开始) 其中数据位发送的是16进制数据(8bit 一字节 例如100...

2021-07-03 14:05:56 1532

原创 2021-06-16

strncpy和memcpy的区别strcpy字符串拷贝memcpy是内存拷贝,不仅仅能拷贝字符串1函数名: strncpy功 能: 串拷贝用 法: char *strncpy(char *destin, char *source, int maxlen);2函数名: memcpy函数原型为void *memcpy(void *destin, void *source, unsigned n)功 能: 从源source中拷贝n个字节到目标destin中1.strncpy是把Num个字符从s

2021-06-16 13:44:11 63

原创 2021-05-15

从网上找资料整理出来当前两大嵌入式操作系统freertos与ucos ll的差别:freeRTOS比uCOS II优胜的地方:1。内核ROM和耗费RAM都比uCOS 小,特别是RAM。 这在单片机里面是稀缺资源,uCOS至少要5K以上, 而freeOS用2~3K也可以跑的很好。2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。3。freeRTOS 可以有优先度一样的任务,这些任务是按时间片来轮流

2021-05-15 22:13:17 62

原创 C++类和对象

1.类的定义class Student{ public ://成员变量char *name;int age;float  score;//成员函数void say(){  cout}};//注意分号不要忘了写class 是c++关键字,用来定义类,Student 是类的名称,{ }内部是类所包含的成员变量和成员函数,public也是

2017-03-30 10:10:28 390

原创 内联函数

在 C++类声明中直接编写类成员函数的代码,则则在编译时, 编译器把成员函数编译成员内联函数, 而在类外实现成员函数则会编译成普通函数。和普通函数不同的是:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置,相当于宏的展开。 但是并不是直接等价于宏,内联函数还是具体函数的基本特征,而宏定义不具备函数特征。内联函数好处: 加快程序运行速度。因

2017-03-12 10:49:25 306

原创 STM32F4修改晶振频率

stm32f4晶振频率为25mhz,若开发板外接的晶振频率为8mhz,则会导致定制器时钟不精确,串口打印输出也会乱码,需进行一下修改:点击system_stm32f4xx.c文件,找到 #define PLL_M      25 这条语句,将参数值25改为8,在这条语句上面,右键点击 Go To Definination Of  "HSE_VALUE"进入到这条语句#define HSE_

2017-03-06 12:27:20 11865 1

原创 C++

函数重载:C++可以存在相同的函数名,只要函数的形式参数不同就可以,调用时候会根据传入的参数类型动态决定调用哪个函数,这个特性叫做函数重载。示例:#include #include using namespace std;void display(void){  cout  }void display(const char*){ cout

2017-03-05 16:15:45 233

空空如也

空空如也

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

TA关注的人

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