C++ 获取系统当前时间

2023-05-16

C++ 获取系统当前时间

  • c++ time函数_C++的日期和时间函数
  • 获取系统当前时间实例
  • 大体思路
  • 具体使用与解析
  • 四、回顾与梳理

c++ time函数_C++的日期和时间函数

C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime>头文件。

  • 有四个与时间相关的类型:clock_ttime_tsize_ttm
  • 类型 clock_tsize_ttime_t 能够把系统时间和日期表示为某种整数。

结构类型 tm 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:

#ifndef _TM_DEFINED
struct tm {
        int tm_sec;     /* seconds after the minute - [0,59] */
        int tm_min;     /* minutes after the hour - [0,59] */
        int tm_hour;    /* hours since midnight - [0,23] */
        int tm_mday;    /* day of the month - [1,31] */
        int tm_mon;     /* months since January - [0,11] */
        int tm_year;    /* years since 1900 */
        int tm_wday;    /* days since Sunday - [0,6] */
        int tm_yday;    /* days since January 1 - [0,365] */
        int tm_isdst;   /* daylight savings time flag */
        };
#define _TM_DEFINED
#endif  /* _TM_DEFINED */
  • 【注意】结构体struct tm的年份是从1900年起至今多少年,月份从0开始的,0表示一月,星期也是从0开始的, 0表示星期日,1表示星期一。

下面是 C/C++ 中关于日期和时间的重要函数。所有这些函数都是 C/C++ 标准库的组成部分,您可以在 C++ 标准库中查看一下各个函数的细节。

序号函数描述
time_t time(time_t *time);该函数返回系统的当前日历时间,自 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 .1。
char *ctime(const time_t *time);该返回一个表示当地时间的字符串指针,字符串形式 day month year hours:minutes:seconds year/n/0。
struct tm *localtime(const time_t *time);该函数返回一个指向表示本地时间的 tm 结构的指针。
clock_t clock(void);该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 .1。
char * asctime ( const struct tm * time );该函数返回一个指向字符串的指针,字符串包含了 time 所指向结构中存储的信息,返回形式为:day month date hours:minutes:seconds year/n/0。
struct tm *gmtime(const time_t *time);该函数返回一个指向 time 的指针,time 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
time_t mktime(struct tm *time);该函数返回日历时间,相当于 time 所指向结构中存储的时间。
double difftime ( time_t time2, time_t time1 );该函数返回 time1 和 time2 之间相差的秒数。
size_t strftime();该函数可用于格式化日期和时间为指定的格式。

当前日期和时间

下面的实例获取当前系统的日期和时间,包括本地时间和协调世界时(UTC)。

#include <iostream> 
#include <ctime> 
using namespace std;

int main( )
 {
  // 基于当前系统的当前日期/时间
time_t now = time(0); // 把 now 转换为字符串形式 
char* dt = ctime(&now); cout << "本地日期和时间:" << dt << endl;

 // 把 now 转换为 tm 结构
tm *gmtm = gmtime(&now); dt = asctime(gmtm);
std::cout << "UTC 日期和时间:"<< dt << std::endl;
 }

当上面的代码被编译和执行时,它会产生下列结果:

本地日期和时间:Sat Jan 8 20:07:41 2011 UTC 日期和时间:Sun Jan 9 03:07:41 2011

使用结构 tm 格式化时间

tm 结构在 C/C++ 中处理日期和时间相关的操作时,显得尤为重要。tm 结构以 C 结构的形式保存日期和时间。大多数与时间相关的函数都使用了 tm 结构。下面的实例使用了 tm 结构和各种与日期和时间相关的函数。

在练习使用结构之前,需要对 C 结构有基本的了解,并懂得如何使用箭头 -> 运算符来访问结构成员。

#include <iostream>
 #include <ctime> 
using namespace std; 

int main( ) { 

// 基于当前系统的当前日期/时间
time_t now = time(0); 
std::cout << "1970 到目前经过秒数:" << now << std::endl; 
tm *ltm = localtime(&now); 
// 输出 tm 结构的各个组成部分 
std::cout << "年: "<< 1900 + ltm->tm_year << std::endl; 
std::cout << "月: "<< 1 + ltm->tm_mon<< std::endl; 
std::cout << "日: "<< ltm->tm_mday << std::endl; 
std::cout << "时间: "<< ltm->tm_hour << ":"; 
std::cout << ltm->tm_min << ":"; 
cout << ltm->tm_sec << endl; 
}

当上面的代码被编译和执行时,它会产生下列结果:
1970 到目前时间:1503564157 年: 2017 月: 8 日: 24 时间: 16:42:37

———————————————
版权声明:本文为CSDN博主「邪王真眼小埋粉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:link

获取系统当前时间实例

方法①

#include <process.h>
#include <string>
#include <iostream>
#include <ctime>

using namespace std;


/*******************************************************************
* C++ 标准库没有提供所谓的日期类型。
* C++ 继承了 C 语言用于日期和时间操作的结构和函数。
* 为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。

*******************************************************************/
std::string GetSystemTime()
{
	time_t tt;
	struct tm *t;
	tt = time(0);
	t = localtime(&tt);
	char char_time[50] = {};
	sprintf(char_time, " %04d-%02d-%02d %02d:%02d:%02d", t->tm_year + 1900,
			t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
	std::string str_system_time = static_cast<std::string>(char_time);
	return str_system_time;
}

int main(void)
{
	std::string system_time = GetSystemTime();
	std::cout << "current_system_time :" << system_time;
	system("pause");
	return 0;
}

编译时会出现以下错误:在这里插入图片描述

Error	1	error C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	d:\users\ntf\documents\visual studio 2013\projects\demotest\getsystemtime\getsystemtime.cpp	19	1	GetSystemTime

解决办法:在预处理器中使用 _CRT_SECURE_NO_WARNINGS

  • CRT函数(C Runtime Library = C运行时间库)函数,是微软公司对C/C++语言的扩展。CRT函数就是标准的C语言函数。例如,printf、scanf、strlen、fopen等函数就属于CRT函数
  • 在这里插入图片描述

方法②
按字符串输出,格式已规定好,不可自己改变格式
格式:Thu May 11 13:58:26 2021

#include <time.h>
#include <process.h>
#include <stdio.h>
int main()
{
	time_t timep;
	time(&timep); //获取从1970至今过了多少秒,存入time_t类型的timep
	printf("%s", ctime(&timep));//用ctime将秒数转化成字符串格式,输出:Thu May 11 13:58:26 2021
	system("pause");
	return 0;
}

方法③
用stuct tm结构体,可自己改变格式
输出:2021/5/11 14:04:44

#include <time.h>
#include <stdio.h>
#include <process.h>

int main()
{
	time_t timep;
	struct tm *p;

	time(&timep); //获取从1970至今过了多少秒,存入time_t类型的timep
	p = localtime(&timep);//用localtime将秒数转化为struct tm结构体

	printf("%d/%d/%d %02d:%02d:%02d\n", 1900 + p->tm_year, 1 + p->tm_mon,
		   p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);//2021/5/11 14:04:44

	system("pause");
	return 0;
}

若需要输出星期

#include <time.h>
#include <stdio.h>
#include <process.h>

int main()
{
	time_t timep;
	struct tm *p;

	time(&timep); //获取从1970至今过了多少秒,存入time_t类型的timep
	p = localtime(&timep);//用localtime将秒数转化为struct tm结构体

	char *wday[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
	printf("%s", wday[p->tm_wday]);//Thu

	system("pause");
	return 0;
}

方法④
效果和方法②相同,按字符串输出,格式已规定好,不可自己改变格式
格式:Tue May 11 14:10:58 2021

#include <time.h>
#include <stdio.h>
#include <process.h>

int main()
{
	time_t timep;

	time(&timep); //获取从1970至今过了多少秒,存入time_t类型的timep
	
	//用localtime将秒数转化为struct tm结构体,再用asctime将结构体转化成字符串格式
	printf("%s", asctime(localtime(&timep)));// Tue May 11 14:10:58 2021

	system("pause");
	return 0;
}

大体思路

  • 需要头文件#include <time.h>
  • 在计算机中看到的utc时间都是从(1970年01月01日 0:00:00)开始计算秒数的。
  • 我们可以通过函数time()来获取从1970年到现在经过了多少秒,并定义time_t 这种类型(本质上是长整型long)来存储从1970年到现在经过了多少秒。
  • 现在我们有了1970年至今的秒数了,但是我们是无法直接通过秒数看出当前的年月日的,所以需要用函数进行转化。(比如直接告诉你现在距离1970年过了1551193610秒,你是不知道今天几号的,得通过函数转化成“Tue May 11 14:10:58 2021”这种形式)
  • 这里用于转化的函数,我们暂且称之为时间函数,它们有很多。
  • 我们按照输出参数类型进行分类,一共有两种:
  • 第一种是直接输出字符指针类型,这种函数的好处是可以直接打印字符串(输出如 :Tue Feb 26 20:32:53 2019),但是它的缺点是无法按照想要的格式输出。
    第二种函数是输出struct tm结构体类型指针,这种结构体中分别定义了年月日时分秒等,我们可以利用它输出成我们想要的格式(如:2019/2/26 21:01:38)。

【这是我的理解,我感觉有些博文中说的有两种储存方式会略显凌乱,那样子可能会误以为不用定义time_t也可以直接通过struct tm来读取日期,而事实上并不能。我觉得time_t类型和struct tm结构体之间的关系应该如上所述,time_t是用来存放1970至今的秒数的一个长整型而已,存放下来的秒数可以通过各种时间函数来转化成struct tm结构体指针,方便格式化输出,这样子就比较清晰了。】

具体使用与解析

1、定义time_t类型变量,用来存储1970至今的秒数
本质上time_t是长整型,我用 long 替换后运行没有任何差别。

time_t timep;

2、利用函数time()获取从1970年至今的秒数

 time(&timep);

函数原型 : time_t time(time_t *t);

 time(&timep);
 printf("%d",timep);

输出 : 1551193610
3、使用各种时间函数将time_t类型存储的秒数转换为常见的格式

我们可以用下面几种函数将秒数转化成我们常用的格式:
有点容易混淆,先把表格贴上来,方便对比异同。

函数名称是否是准确时间(加地方时)传入参数类型返回值类型
localtimetime_t类型的地址 const time_t *结构体指针 stuct tm*
ctimetime_t类型的地址 const time_t *字符指针 char *
gmtime×time_t类型的地址 const time_t *结构体指针 stuct tm*
asctime加不加地方时取决于传入的结构体有没有加地方时(与上列函数不同类,在此仅作对比辨析)struct tm结构体类型的指针 const struct tm*字符指针 char *

asctime()函数其作用是将结构中的信息转换字符串格式,加不加地方时取决于传入的结构体有没有加地方时,传入用 localtime生成的结构体加地方时,传入用gmtime生成的结构体不加地方时。asctime()与上列函数不同类,localtime、ctime、gmtime是将存在 time_t类型中的秒数转化为字符串或stuct tm结构体类型,而asctime则是将stuct tm结构体转化为字符串,因此在此仅作对比辨析,详细的我在第4点中细说。

【UTC就是0时区的时间,UTC加上地方时为本地时间】
这里出现了一个新名词:地方时,因为咱们存在time_t中的总秒数是以0时区为准的,要加上地方时才是当前所在地的真实时间。(至于时区的概念可以参考高中还是初中的地理书)
简单来说:想要获取当前电脑显示的时间,请选用localtime,ctime这两个加过地区时的函数。

【例如我所在区域(真正时间为Tue May 11 22:10:58 2021)
用加地方时的函数输出:Tue May 11 22:10:58 2021
不加地方时的函数输出:Tue May 11 14:10:58 2021
相差8个小时(北京为东八区)】

(1) localtime
【加地方时】将timep转换为真实世界的时间,传入一个time_t类型变量的地址,返回一个struct tm结构体类型指针,优点是可以自行控制输出格式,缺点是不能直接当作字符串输出,得用指针访问结构体内部输出。
函数原型 : stuct tm* localtime(const time_t *timep);

    struct tm *p;
    p = localtime(&timep);
    printf("%d/%d/%d %02d:%02d:%02d\n", 1900 + p->tm_year, 1+ p->tm_mon,
    						 p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec);
    ```
    输出 : 2021/25/11 14:25:38
    
如果要输出星期的话,还要加上
```cpp
    char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    printf("%s", wday[p->tm_wday]);

输出 : Tue
(2)ctime
【加地方时】将timep转换为真实世界的时间,传入一个time_t类型变量的地址,返回一个字符数组指针,优点是可以直接按字符串输出,缺点是不能自行控制输出格式
函数原型 :char *ctime(const time_t *timep);

printf("%s", ctime(&timep));

输出 : Tue May 11 14:10:58 2021
--------------------------------
以上都是加地方时的:localtime,ctime
以下都是不加地方时(UTC)的:gmtime
--------------------------------
(3)gmtime
【不加地方时】传入一个time_t类型变量的地址,返回一个struct tm结构体类型指针,优点是可以自行控制输出格式,缺点是不能直接当作字符串输出,得用指针访问结构体内部输出。
和localtime类似,区别是gmtime不加地方时。

函数原型 : struct tm* gmtime(const time_t *timep);

    struct tm *p;
    p = gmtime(&timep);
    printf("%d/%d/%d %02d:%02d:%02d\n", 1900 + p->tm_year, 1+ p->tm_mon,
    						 p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec);

输出 : 2021/5/11 14:31:07
【实际时间:2021/5/11 22:31:07】
如果要输出星期的话,还要加上

    char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    printf("%s", wday[p->tm_wday]);

输出 : Thu
4、将struct tm结构体转化为字符串
asctime函数
传入一个struct tm结构体类型的指针,返回一个字符数组指针。
我们用localtime或者gmtime将秒数转化成struct tm结构体类型就是为了可以自己定义输出方式,这个函数的作用是将我们好不容易转化的struct tm结构体类型按照字符串的格式输出,嗯~ o( ̄▽ ̄)o有点迷……只能说函数给的很全面,作用就是这么个作用。

函数原型 : char * asctime(const struct tm* timeptr);

(1)用localtime转化成的结构体是加地方时的。
asctime(localtime(&timep))与ctime(&timep)效果完全相同。
前者先将秒数转化成结构体再转化成字符串,后者直接将秒数转化成字符串格式。

printf("%s", asctime(localtime(&timep))); //输出 : Thu Feb 28 13:38:41 2019

(2)用gmtime转化成的结构体是不加地方时的。

printf("%s", asctime(gmtime(&timep)));//输出 : Thu Feb 28 05:38:41 2019

再友情提醒一遍,当前真实时间是Thu Feb 28 13:38:41 2019哦~

5、一些不常用的其他函数
(1)difftime返回两个时间相差的秒数

double difftime(time_t time1, time_t time2);

(2)gettimeofday返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用

int gettimeofday(struct timeval *tv, struct timezone *tz);

(3)mktime将struct tm 结构的时间转换为从1970年至今的秒数
(果然函数给的很全,这种都有……)

time_t mktime(struct tm* timeptr);

四、回顾与梳理

在计算机中时间都是从(1970年01月01日 0:00:00)开始计算秒数的。
1、我们首先定义time_t 这种类型(本质上是长整型long)来存储从1970年到现在经过了多少秒。

2、再通过函数time()来获取从1970年到现在经过了多少秒

3、为了便于阅读,我们采用函数将“过了多少秒”进行转化
可以用以下函数,这里再次辨析一遍

函数名称是否是准确时间(加地方时)区别
localtime准确时间传入秒数,输出结构体,方便自定义格式输出
ctime准确时间传入秒数,输出字符指针,方便直接输出
gmtime非本地时间,是0时区时间传入秒数,输出结构体,方便自定义格式输出

4、一些其他函数
主要是asctime函数,它的作用是将struct tm结构体转化为字符串,加不加地方时完全取决于传入的结构体有没有加地方时。有的博文将他归类为生成不加地方时的函数,是不合理的,大家注意辨析。

【这块儿很简单,但是用的时候发现参考了一堆文章,发现网上有的思路不是很清晰,本来想写简明,结果啰啰嗦嗦一大堆……第一次写博文,写的不好的地方大家多担待,也欢迎大家提出建议意见】
————————————————
版权声明:本文为CSDN博主「YuXi_0520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:link

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 获取系统当前时间 的相关文章

  • elementui下拉框多选报[Vue warn]: <transition-group> children must be keyed: <ElTag>

    elementui下拉框多选 xff0c 选值报错 选中一个值后所有的值都会被选中 经检查 xff0c 是由于我的下拉框的value值为一个对象而非单个值 值为对象时需要填入value key span class token operat
  • Hadoop_1 入门WordCount

    记录踩得坑以及部署环境流程 搭建的是伪分布Hadoop 首先环境需要安装zookeeper 这个好装 xff0c 不多说其次比较复杂的是安装openssh 我的Linux系统是centos 7 mini版本 安装openssh之前的准备工作
  • PX4无人机控制

    PX4无人机控制 向话题 mavros setpoint raw local发布无人机目标位置 43 偏航 xff0c 或者目标速度 43 偏航 发布目标位置 43 偏航 xff1a mission span class token pun
  • npm install 报错:gyp verb `which` failed Error: not found: python

    今天新启动一个项目 xff0c 在 npm install 安装依赖项时出现报错 npm install span class token operator gt span husky 64 span class token number
  • 24_ZYNQ7020开发板_SPI与Qflash芯片读写

    内核中使用spi master表示一个SPI主机控制器 一 SPI控制器驱动 1 xff09 spi master申请与释放 SPI申请 span class token keyword struct span spi master spa
  • python3的input函数实现回车换行,而不是结束输入

    span class token comment 实现回车换行 xff0c 而不是结束 span endstr span class token operator 61 span span class token string 34 34
  • rviz-Ros Wiki官网教程学习笔记(1)-用户指南

    0 rviz介绍 rviz是ROS自带的图形化工具 xff0c 可以很方便的让用户通过图形界面开发调试ROS 参考官网 rviz UserGuide 1 安装 根据自己的版本号 xff0c 在下面选择对应的命令执行 以ROS melodic
  • 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来 xff0c 客户端程序只能按照CAS自身的协议接入 CAS的强大在于 xff0c 有官方的插件 xff0c 可以支持其他的协议 本章节就让CAS Server怎么增加OAuth2 0的登录协议 安
  • 一起DIY四轴飞行器(二)初识飞控大脑

    系统 xff1a Windows 硬件 xff1a xff08 1 xff09 STM32F103C8T6最小系统板 某宝上搜索 STM32F103最小系统 xff0c 如上图所示这样的 xff08 2 xff09 ST LINK v2下载
  • STM32CubeMX基于HAL库点亮LED灯

    开发环境 xff1a Windows 软件 xff1a 1 STM32CubeMX 6 3 0 2 MDK 5 14 一 cubeMX的基本配置 1 选择MCU 2 配置时钟 查看电路图 xff0c 8MHz的高速外部晶振接到 OSCIN
  • 一起DIY四轴飞行器(三)添加实时操作系统--freeRTOS

    开发环境 xff1a Windows 软件 xff1a 1 STM32CubeMX 6 3 0 2 MDK 5 14 一 初识freeRTOS系统 1 什么是FreeRTOS xff1f Free 即免费的 xff0c RTOS 全称是 R
  • ESP8266 初次使用

    一 工具 1 ESP8266 01S 淘宝上搜索ESP8266 01S 引脚说明 xff1a 2 USB转串口 给设备供电3 3V xff08 官方说不要用USB转串口的3 3V xff0c 需要单独供电 xff09 xff0c USB转串
  • ubuntu安装boost

    ubuntu安装boost 系统 Ubuntu 18 04 boost中 xff0c 用到了别的函数库 xff0c 所以为了使用boost中相应的功能 xff0c 需要先安装系统中可能缺失的库 1 卸载已经安装的boost 删除 usr l
  • 简单的状态机图

    一 什么是状态机 xff1f 做产品的时候 xff0c 我们总能遇到一些比较复杂的逻辑问题 比如状态的转换 xff0c 字段状态的确认 xff0c 权限的控制 xff0c 状态的对应 而普通的流程图 xff0c 或时序图 xff0c 更侧重
  • js-对象转基本类型

    起因是收到朋友发的一道题 xff0c 如下 xff1a span class token comment 请在问号处填写你的答案 使下方等式成立 span span class token keyword let span a span c
  • 局域网内wakeonlan远程唤醒其它计算机

    背景 xff1a 需要管理多台计算机 xff0c 所有计算机在一个局域网内 xff0c 并且有的安装了Windows系统 xff0c 有的安装了Linux系统 我们想远程关闭和启动所有计算机 关闭计算机直接通过网络发生操作系统关机命令即可实
  • D3D中的三种Buffer

    在D3D中 针对视窗有三种Buffer 它们分别是 Color Buffer Depth Buffer和Stencil Buffer Color Buffer在D3D中又称为Render Target 意思是最后着色的目标Buffer 就是

随机推荐

  • 创建镜像(更新与构建镜像)

    创建镜像 有时从Docker镜像仓库中下载的镜像不能满足我们的要求 xff0c 此时可以基于这个镜像 xff08 基础镜像 xff09 封装一个自 己的镜像 两种方式 xff1a 更新镜像 xff1a 使用docker commit命令构建
  • (十)CMake链接已有的动态库

    使用一个已经存在的动态库 xff0c 需要用到CMake中两个命令 xff0c 分别是 xff1a link directoriestarget link libraries 下面先介绍以下两个命令的格式及其含义 xff0c 最后是一个使用
  • ROS入门21讲笔记(四)自定义话题消息类型和使用

    除了ROS内置消息外 xff0c 我们还能自定义消息 这一次我们不再与海龟较劲 xff0c 而是自定义一个订阅消息类型 xff0c 让订阅者和发布者通过这个结构进行数据通信 一 如何自定义话题消息 xff1f 话题消息是以 msg结尾的文件
  • ROS入门21讲笔记(七)自定义消息消息类型和使用

    这一节主要是学习如何自定义一个服务类型并使用它 一 如何自定义服务消息 xff1f 服务数据是以 srv结尾的文件 xff0c 是一个用于描述ROS服务信息简单文本文件 xff0c 用于生成不同语言消息的源代码 srv文件存放在packag
  • ROS入门21讲笔记(十二)常用可视化工具

    一 QT类可视化工具 1 1 rqt console rqt console 为显示和过滤ROS信息提供了一个GUI插件 1 2 rqt plot rqt plot使用不同的绘图后端提供数值可视化功能 1 3 rqt Image view
  • (二)CMake 使用头文件

    一 include directories 该命令用于增加一个编译头文件 其基本语法是 xff1a include directories span class token punctuation span span class token
  • cargo 宏展开遇到的问题

    最近学习rust xff0c 看到宏展开命令 span class token comment 单独文件 span rustc Z unstable options pretty span class token operator 61 s
  • 工程师笔记|常见的嵌入式软件工程师面试题

    Q xff1a 什么是ISR xff1f A xff1a ISR 是指中断服务程序 这些是存储在特定内存地址的函数 xff0c 当发生某种类型的中断时会调用这些函数 Cortex M 处理器系列具有管理中断执行的 NVIC Q xff1a
  • 计算机中的速率、带宽、时延、利用率解读

    计算机网络的性能一般是指它的几个重要的性能指标 但除了这些重要的性能指标外 xff0c 还有一些非性能特征 xff08 nonperformance characteristics xff09 也对计算机网络的性能有很大的影响 那么 xff
  • 手把手教你写链表,小学生看了都说好~

    摘要 xff1a 明明我们在之前已经接触了数组 xff0c 感到数组已经是万能的数据存储位置了 但是 xff0c 如果我们一直在使用比较复杂的数据 xff08 也就是比较多的数据时 xff09 xff0c 肯定会感到很反感 因为对于数组这种
  • 15-JavaScript高级程序设计-创建对象

    一 创建对象 创建单个对象 xff1a Object构造函数 new Object 对象字面量 xff08 参见8 Object amp Array xff09 创建多个对象 xff1a 以下7种方式 1 工厂模式 span class t
  • FreeRtos源码分析之启动任务调度vTaskStartScheduler(二)

    一 概述 FreeRtos在创建任务之后 xff0c 需要启动任务调度器才能使任务正常有序的运行 任务调度器的开启依赖于底层硬件 xff0c 对于CortexM3内核而言 xff0c 任务调度器需要用到中断和滴答定时器 FreeRtos在对
  • FreeRtos源码分析之任务状态管理(三)

    一 概述 FreeRtos的每一个任务都有一个对应的优先级 xff0c 较高优先级的任务具有优先运行的权利 xff0c 当高优先级的任务调用系统的延时函数或者需要阻塞等待某些信号时 xff0c 会让出CPU的使用权 xff0c 从而使低优先
  • FreeRtos源码分析之任务切换原理(四)

    一 CortexM3中断优先级 CortexM3支持多达240个外部中断和16个内部中断 xff0c 每一个中断都对应一个中断都对应一个优先级寄存器 每一个优先级寄存器占用8位 xff0c STM32采用其中的高四位来表示优先级 xff0c
  • ubuntu切换python版本

    一 概述 在ubuntu环境下进行嵌入式开发 xff0c 我们在进行不同的项目开发时 xff0c 可能会遇到python环境不统一的情况 这时 xff0c 我们可以通过update alternatives来方便更新ubuntu下的pyth
  • 本地Windows远程连接阿里云服务器图形界面(使用vnc viewer)

    文章目录 前言Motivation of writing1 场景说明2 给阿里云服务器安装图形界面3 给服务器配置VNC Server4 让服务器放行5901端口5 本地windows配置vnc viewer总结 标题 xff1a 本地Wi
  • 十分钟教你配置frp实现内网穿透

    十分钟教你配置frp实现内网穿透 一 frp的作用 利用处于内网或防火墙后的机器 xff0c 对外网环境提供 http 或 https 服务 对于 http https 服务支持基于域名的虚拟主机 xff0c 支持自定义域名绑定 xff0c
  • 5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

  • Jetson带CUDA编译的opencv4.5安装教程与踩坑指南,cmake配置很重要!

    环境 xff1a Jetson NX 43 Jetpack4 4 43 Ubuntu18 04 0 jtop前后对比1 安装教程2 踩坑指南2 1 cv2 error OpenCV 4 4 0 tmp pip build 2do2xloi
  • C++ 获取系统当前时间

    C 43 43 获取系统当前时间 c 43 43 time函数 C 43 43 的日期和时间函数获取系统当前时间实例大体思路具体使用与解析四 回顾与梳理 c 43 43 time函数 C 43 43 的日期和时间函数 C 43 43 标准库