1.0 DS1302-外部RTC

2023-05-16

一、综述

  DS1302是美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片,因为应用非常广泛,结果就导致了大量的国产仿制品,GC1302是一款国产DS1302仿制芯片,使用方法和DS1302完全相同。

二、应用

1、电路原理

在这里插入图片描述
  上图是一个典型的应用图,MCU通过CE、I/O、SCLK三个引脚控制GC1302工作,GC1302有两种供电方式:备用电源Vcc1和主电源Vcc2,GC1302工作在两者较大者,Vcc2>Vcc1+0.2v,Vcc2供电,Vcc1>Vcc2,Vcc1供电。故当Vcc2失效时,由Vcc1接替工作。
  一般情况下,Vcc2由MCU供电,Vcc1外接备用电源,通过设计的充电电路,可以为可充放纽扣电池、大电容等充电。当Vcc2供电时,可以控制是否对备用电源充电,但是使用不可充电的纽扣电池时,不要使用充电功能。
  图中的备用电源是外接电容,但是没有设计充电电路。假设加入充电电路给电容充电,经实际测量,如果Vcc2是3.3V,电容充满时为3V左右,大概工作3天,降到1.6V左右,此时已经基本无法维持GC1302正常计时。

2、命令字格式

  命令字用来启动数据传输,它的格式如下所示
在这里插入图片描述
  第7位:必须是1,如果是0,禁止对GC1302写入。
  第6位:0表示访问时钟/日历数据,1访问RAM数据。GC1320不仅可以保存时钟,可以RAM中保存一些用户数据。
  第5~1位:GC1302寄存器地址。
  第0位:0表示写操作,1表示读操作。
  下图是读写RTC数据的具体命令字,每一行给出了读写某个寄存器的命令字以及寄存器的存储内容。在这里插入图片描述
  例如第三行,读命令字为0x85,写命令字为0x86,该寄存器保存小时信息,并且数据范围1-12或0-23。该命令字的二进制为0b1000 0101,则第7位1,使能操作,第6位0,RTC访问,第5~1位,寄存器地址0x02,第0位1,表示写操作。
  注意,寄存器中保存的数据是BCD格式,例如要保存秒数是54s,实际保存时转化为16进制并不是0x36,而是0x54。
  有几组寄存器需要特殊的说明:
  0x81、0x80,当CH为1时,时钟暂停,为0时,时钟开启。
  0x8F、0x8E,当WP为0时,允许修改时钟寄存器,为1时,禁止修改。
  0x91、0x90,充电使能及充电参数配置,TCS,位4~位7是1010才使能充电,DS是二极管选择位,用来表示在Vcc2和Vcc1之间连接了1个还是2个二极管,RS是电阻选择,表示Vcc2和Vcc1之间的电阻是多大。具体的配置如下图所示
在这里插入图片描述
  例如,充电电路为1二极管,2k欧电阻,如要开始充电,该寄存器需要配置为10100101,即0xA3。

3、通讯波形

  数据传输需要三条线,CE、SCLK和IO,空闲时,CE,SCLK为低电平,IO随意,也可以为低电平。
  CE为1时,才允许读写,否则不允许读写。同时在CE置1时,SCLK必须为0。
  SCLK的频率根据Vcc电压决定。例如当Vcc=5V,最大频率可达2MHz。手动拉高拉低对应的GPIO,并在拉高拉低中间加入一定的延时,即可产生SCLK。
在这里插入图片描述
  数据通讯时,掌握一个关键原则,RTC在SCLK上升沿采集IO数据,MCU在SCLK下降沿采集IO数据。

1、写字节

在这里插入图片描述
  首先写待读取寄存器的地址,然后再写要写入的字节。
  写寄存器地址时,把IO设置为输出模式,在SCLK低电平期间,把IO拉高或拉低,GC1302会在SCLK上升沿读取IO数据,即可读到发送的地址。MCU发送完地址后,还是同样的操作方式,继续写字节即可。
  简单来讲,写操作时,MCU在SCLK低电平期间把IO数据准备好,只要保证在SCLK上升沿之前准备好即可,然后把SCLK拉高,RTC就会采集IO上的数据。

2、读字节

在这里插入图片描述
  首先要写待读取寄存器的地址,然后再读RTC发送的字节。
  写寄存器地址时,把IO设置为输出模式,在SCLK上升沿到来之前,准备好IO的数据,GC1302在SCLK上升沿读取地址。
  时段1,这是一段SCLK的高电平,它是读字节的关键时段。在该期间,RTC已经在刚过去的上升沿读取完命令字的最后一位,会马上输出寄存器的数据,在紧接的下降沿,MCU需要采集RTC输出的数据。故在时段1内,MCU需要把IO由输出切换为输入。
  后续RTC会在SCLK的下降沿到来之前,把IO输出数据准备好,等SCLK的下降沿到来时,MCU采集IO数据。
  如果在时段1内,没有及时的切换IO为输入模式,很有可能因为GPIO的输出推挽模式,导致IO的电平无法被GC1302控制,从而丢失数据。

三、源码

  如下代码基于STMF411芯片,仅供参考,主要是提供一种思路

#define DS1302_STOP 	        0x80 
 
#define DS1302_READ_BURST 		0xBF
#define DS1302_WRITE_BURST 		0xBE
#define DS1302_WRITE_SEC 		0x80
#define DS1302_READ_SEC 		0x81
#define DS1302_WRITE_MINUTE 	0x82
#define DS1302_READ_MINUTE 		0x83
#define DS1302_WRITE_HOUR 		0x84
#define DS1302_READ_HOUR 		0x85
#define DS1302_WRITE_DATE 		0x86
#define DS1302_READ_DATE 		0x87

#define DS1302_WRITE_CHARGE 	0x90
#define DS1302_READ_CHARGE 		0x91

void delay_200us(void)
{
	uint16_t a = 0;
	for(uint16_t i=0; i<30; i++)
		a++;
}

void delay_100us(void)
{
	uint16_t a = 0;
	for(uint16_t i=0; i<15; i++)
		a++;
}

void DS1302_Start()    // 传输开始,拉高CE
{
	HAL_GPIO_WritePin(DS1302_CE_PORT, DS1302_CE_PIN, GPIO_PIN_RESET);
	HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET);
	delay_200us();
	HAL_GPIO_WritePin(DS1302_CE_PORT, DS1302_CE_PIN, GPIO_PIN_SET);
	delay_200us();
}

void DS1302_Over()    // 传输结束,拉低CE
{
   HAL_GPIO_WritePin(DS1302_CE_PORT, DS1302_CE_PIN, GPIO_PIN_RESET);
   HAL_GPIO_WritePin(DS1302_IO_PORT, DS1302_IO_PIN, GPIO_PIN_RESET);
   HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET);
}

void DS1302_ClearWriteProtection()// 清除写保护
{
	DS1302_Start();
	DS1302_WriteByte(0x8E);
	DS1302_WriteByte(0x00);
	DS1302_Over();
}
 
void DS1302_SetWriteProtection()  // 设置写保护
{
	DS1302_Start();
	DS1302_WriteByte(0x8E);
	DS1302_WriteByte(0x80);
	DS1302_Over();
}

void set_out(void)    // data IO设置为输出模式
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	
	GPIO_InitStruct.Pin = DS1302_IO_PIN;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
	GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
	HAL_GPIO_Init(DS1302_IO_PORT, &GPIO_InitStruct);
}

void set_in(void)   // data IO设置为输入模式
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	
	GPIO_InitStruct.Pin = DS1302_IO_PIN;
	GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
	GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
	HAL_GPIO_Init(DS1302_IO_PORT, &GPIO_InitStruct);
}

uint8_t gc1302_read_byte(uint8_t cmd)  // 读相应的寄存器数据
{
	DS1302_Start();
	uint8_t i = 0;
	// write cmd
	for(i=0;i<8;i++)
	{
		HAL_GPIO_WritePin(DS1302_IO_PORT, DS1302_IO_PIN, (GPIO_PinState)(cmd&0x01));
		cmd >>= 1;
		delay_100us();
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_SET);
        if(i == 7)   // 注意,当命令字的第7位在上升沿结束后,需要在下降沿之前马上把该IO设置为输入模式
			set_in();
			delay_200us(); 
		else
            // 在上升沿和下降沿之间延时200us,即周期为400us,频率为2.5KHz左右
            // 该频率可以随意设置,只要不超过最大值即可
			delay_200us();  
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET);
		delay_100us();
	}
	
	// read data
	uint8_t data = 0;
	for(i=0;i<8;i++)
	{      
		data >>= 1;
		if(HAL_GPIO_ReadPin(DS1302_IO_PORT, DS1302_IO_PIN))
		{
			data |= 0x80;
		}
		delay_100us();
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_SET);
		delay_200us();
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET);
		delay_100us();
	}
	set_out();
	DS1302_Over();
	return data;
}

void gc1302_send_byte(uint8_t data_byte)   // 写一个字节的时序
{
	for(uint8_t i=0;i<8;i++)
	{
		HAL_GPIO_WritePin(DS1302_IO_PORT, DS1302_IO_PIN, (GPIO_PinState)(data_byte&0x01));
		data_byte >>= 1;
		delay_100us();
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_SET);
		delay_200us();
		HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET);
		delay_100us();
		//delay_200us();
	}
}

void gc1302_write_byte(uint8_t cmd, uint8_t data)  // 写相应的寄存器数据
{
	DS1302_Start();
	gc1302_send_byte(cmd);
	gc1302_send_byte(data);
	DS1302_Over();
}

void gc1302_test()
{
    uint8_t write_data[4] = {0x30,0x12,0x18,0x04};  //BCD格式,该时间为4号18时12分30秒
    uint8_t read_data[4] = {0};
    DS1302_ClearWriteProtection();    // 清除写保护
	gc1302_write_byte(DS1302_WRITE_SEC, DS1302_STOP);	// 停止计时
	gc1302_write_byte(DS1302_WRITE_MINUTE, write_data[1]);  // 设置分
	gc1302_write_byte(DS1302_WRITE_HOUR, write_data[2]);    // 设置时
	gc1302_write_byte(DS1302_WRITE_DATE, write_data[3]);    // 设置天
	gc1302_write_byte(DS1302_WRITE_SEC, write_data[0]);     // 设置秒,并开始计时
    
    gc1302_write_byte(DS1302_WRITE_CHARGE, 0xA5);      // 使能充电
    
    read_data[0] = gc1302_read_byte(DS1302_READ_SEC);
    read_data[1] = gc1302_read_byte(DS1302_READ_MINUTE);
    read_data[2] = gc1302_read_byte(DS1302_READ_HOUR);
    read_data[3] = gc1302_read_byte(DS1302_READ_DATE);
    
}


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

1.0 DS1302-外部RTC 的相关文章

  • f103 hal RTC_alarm使用方法

    1 初始化RTC RTC handle span class token punctuation span Instance span class token operator 61 span span class token consta
  • Undefined symbol RTC_DateStruct (referred from main.o).

    被自己蠢哭了 我是两个工程文件合在一起用的 一个工程中的 c文件变量定义之后是在另一个 c文件中共用的所以用了 extern RTC TimeTypeDef RTC TimeStruct extern RTC DateTypeDef RTC
  • 时钟芯片DS1302时序分析、读写代码解析

    1 DS1302芯片原理图分析 引脚名称功能X1 X2外接32 768kHz 晶振 xff0c 用于内部计时SCLK和主控通信的时钟线I O数据输入输出引脚CE使能引脚VCC1接电池供电 xff0c 保证主板掉电时间能继续走VCC2主板的电
  • DS1302时钟芯片(SPI协议)

    DS1302时钟芯片 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 xff0c 且具有闰年补偿等多种功能 可以把该芯片看成一个小型的单片机 xff0c 其内部
  • DS1302时钟芯片介绍及使用教程

    1 芯片简介 DS1302 涓流充电计时芯片包含一个实时时钟 日历和 31 字节的静态 RAM 通过简单的串行接口与微处理器通讯 这个实时时钟 日历提供年月日 时分秒信息 对于少于 31 天的月份月末会自动调整 还有闰年校正 由于有一个 A
  • 树莓派RTC

    文章目录 一 RTC准备二 RTC芯片三 为什么使用hwclock显示找不到硬件总结 一 RTC准备 在使能树莓派RTC之前 xff0c 需要先为树莓派RTC模块安装电池 xff08 一般为纽扣电池 xff09 二 RTC芯片 树莓派4B使
  • STM32与DS1302设计时钟芯片,超详细

    DS1302 是DALLAS 公司推出的涓流充电时钟芯片 xff0c 内含有一个实时时钟 日历和31 字节静态RAM xff0c 通过简单的串行接口与单片机进行通信 实时时钟 日历电路提供秒 分 时 日 周 月 年的信息 xff0c 每月的
  • 蓝桥杯单片机-DS1302时钟模块

    一 简介 1 采用SPI三线接口通信 xff08 SCK SDA RST xff09 上升沿数据被写入DS1302 xff0c 下降沿被读出 二 应用 1 在ds1302 c文件中定义三个数组 unsigned char code READ
  • ds1302——斌哥51

    以下内容分别借鉴了 清翔 51 xff0c 斌哥51 xff0c 以及CSDN 普通的不普通少年 内部结构 xff1a DS1302 包括时钟 日历寄存器和 31 字节 xff08 8 位 xff09 的数据暂存寄存器 xff0c 数据通信
  • 基于stm32f103zet6的DS1302学习

    由于硬件出了问题 xff0c 也就是外部低速晶振没用 xff0c 震不起来 xff0c 然后查看了网上的帖子 xff0c STM32的RTC果然口碑不怎么样 xff0c 所以果断换DS1302 xff0c 在移植的过程中还算顺利 xff0c
  • 时钟芯片DS1302的原理及使用

    一 描述 DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 且具有闰年补偿等多种功能 DS1302芯片包含一个用于存储实时时钟 日历的 31 字节的静态
  • 基于线性预测的语音编码原理解析

    早期的音频系统都是基于声音的模拟信号实现的 在声音的录制 编辑和播放过程中很容易引入各种噪声 从而导致信号的失真 随着信息技术的发展 数字信号处理技术在越来越多领域得到了应用 数字信号更是具备了易于存储和远距离传输 没有累积失真 抗干扰能力
  • 拥抱国产化,推动产业互联网,拍乐云做了什么?

    新一轮科学技术进步法的修订中提出要健全科技创新保障措施 完善创新体系 为促进实现高水平科技自立自强提供法治保障 随着国家对信息安全 科学自主的要求越来越高 音视频技术作为视频会议 应急指挥 办公协同 远程银行等行业场景的基础技术支撑 其独立
  • 揭开“视频超分”黑科技的神秘面纱

    在看电影时 有一幕大家应该都非常熟悉 警察从证据图片中选取一块区域放大 再放大 直到一个很小的目标变得清晰可见 从而发现重要的线索 现实中是不是真的有这样的技术 可以把模糊的小图变得清晰 答案是 一定程度上可以 这项黑科技就是超分辨率技术
  • 【STM32】详解RTC实时时钟的概念和配置&示例代码

    一 什么是RTC RTC Real time Clock 实时时钟 本质上是一个支持BCD编码的定时器 计数器 主电源断电后能够由电池供电 使其时钟跳转依然正常 二 STM32F4芯片内的RTC功能 日历时钟 时分秒 年月日 星期 两个闹钟
  • ClearCase 中是否有 RTC 等效的“挂起模式”?

    我发现 RTC 中的 暂停更改设置 非常有用 而且由于我们也在使用 ClearCase 数十个用户 我想知道 ClearCase 中是否也提供该功能 如果不是 它可以由 script trigger hook 生成吗 我们使用UCM 我想解
  • 如何使用纯 java api 更改 RTC 流和组件所有权?

    我需要更改组件和流的所有权 我正在尝试查找任何用于此目的的 API 请帮忙 这里我有一个代码片段 但我不知道它是如何工作的 IScmService scmService null IRepositoryItemService itemSer
  • 如何查明工作项更改集文件项是否是新添加或修改的?

    我有一些更改集对象 我需要查明更改集中的文件是否是新添加或修改的 下面是我用来获取更改集的代码 IChangeSetHandle changeSets convertToChangeSetHandles extracted changeSe
  • Eclipse 将编译器合规性更新到 1.7

    我在更新 Eclipse 工作区的编译器合规性时遇到一些问题 我实际上使用的是 RTC 但它本质上是 Eclipse 目前 它使用 1 6 的 jdk 因此我可以将 JDK 合规性更改为 1 6 的限制 但是 我在我的项目中使用 jdk 1
  • 在 RTC 中交付后如何丢弃更改集

    我意外地交付了更改集 其中包括一些在 RTC 中具有本地系统特定配置的附加配置文件 有没有办法在交付后放弃这些更改 我的意思是 这些变化不应该随着其他团队成员的变化而发生 如果有的话请提供任何指示 有没有办法在交付后放弃这些更改 不完全是

随机推荐

  • 单例模式(java代码实现)

    应用单例模式时 xff0c 类只能有一个对象实例 xff0c 这么做的目的是避免不一致状态 饿汉式单例 xff1a xff08 立即加载 xff09 饿汉式单例 public class Singleton1 指向自己实例的私有静态引用 x
  • C++函数后面加“:”的含义

    转载 xff1a C 43 43 函数后面加 xff1a 的含义 hhd1988的专栏 CSDN博客 1 c 43 43 成员函数后面跟 xff1a 表示的是赋值 xff0c 这是c 43 43 的特性 如下 xff1a A int aa
  • 因子图(factor graph)

    因子图 xff08 factor graph xff09 Factor Graph 是概率图的一种 xff0c 概率图有很多种 xff0c 最常见的就是Bayesian Network 贝叶斯网络 和Markov Random Fields
  • 词袋模型(Bag of Features,BOF)

    Bag of Features xff08 BOF xff09 对于程序而言这个人就是一堆像素嘛 xff0c 让它直接找的话它只能一个个像素的去比较然后返回最接近的了 xff08 近邻算法 xff09 但是现实中物体的形状颜色会发生变化 x
  • SNMPv3基于用户的安全模型USM及消息格式

    一 USM相关网址 SNMPv3使用了基于用户的安全模型USM RFC 3411 Architecture for SNMP Frameworks http www ietf org rfc rfc3411 txtRFC 3414 User
  • 超详细的python搭建区块链(下)

    在前面 超详细的python搭建区块链 xff08 中 xff09 我们搭建了一个简单的区块链 在这个简单的区块链能够实现交易 挖矿等基本功能 不过 xff0c 区块链上的节点应该是分散的 如果它们是分散的 xff0c 我们究竟如何确保它们
  • RuntimeError: Expected 4-dimensional input for 4-dimensional weight [32, 1, 5, 5]

    文章目录 1 问题引入2 运行报错3 代码4 分析原因5 解决办法6 完整代码7 参考文献 1 问题引入 今天在使用pytorch训练一个模型的 xff0c 数据集的读取是使用pytorch自带的函数来进行读取和预处理的 xff0c 网络使
  • 如何在Linux服务器上安装Anaconda(超详细)

    目录 1 安装Anaconda1 1 下载anaconda的安装包1 2 解决安装出现的bug1 3 安装anaconda1 4 点击Enter xff08 回车键 xff09 1 5 输入 yes1 6 继续点击 Enter1 7 输入
  • Pytorch实现FGSM(Fast Gradient Sign Attack)

    目录 1 相关说明2 相关简述3 代码实现3 1 引入相关包3 2 输入3 3 定义被攻击的模型3 4 定义FGSM攻击函数3 5 测试函数 4 可视化结果5 可视化对抗样本6 预训练模型下载7 训练模型8 完整代码 1 相关说明 最近在整
  • RuntimeError: element 0 of tensors does not require grad and does not have a grad_

    文章目录 1 问题描述2 解决方案2 1 方案12 2 方案2 3 参考文献 1 问题描述 今天在跑代码的过程中 xff0c 因为要训练一个模型然后在测试阶段使用PGD来生成相应的adv image来测试这个模型 xff0c 结果运行到测试
  • Pycharm 搭建 Django 项目 (非常详细)

    目录 1 安装需求2 准备工作2 1 新建项目2 2 输入相关配置2 3 项目创建完成2 4 查看安装 Django 版本2 5 启动项目2 6 解决一点小问题 3 一点小补充4 参考文献 1 安装需求 在使用 python 框架 Djan
  • Docker

    官方网站 xff1a https www docker com Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c
  • SpringBoot + Thymeleaf 实现发送验证码计时器功能

    x1f4e2 本文章通过实战记录相关问题以及提供解决方案 x1f464 公众号 xff1a 恩故事还在继续 目录 1 功能需求2 效果图展示3 代码4 参考文献5 联系我 1 功能需求 实现找回密码然后点击获取验证码之后出现XX秒候重新获取
  • 解决 SpringBoot 图片加载失败

    x1f4e2 本文章通过实战记录相关问题以及提供解决方案 x1f464 公众号 xff1a 恩故事还在继续 目录 1 问题描述2 解决方案2 1 打开 IDEA 3 参考文献 1 问题描述 在使用 SpringBoot 开发项目的时候发现了
  • 仿牛客论坛项目部署总结

    x1f4e2 本文章通过实战记录相关问题以及提供解决方案 x1f464 公众号 xff1a 恩故事还在继续 目录 1 前言2 部署项目需求3 环境配置3 1 阿里云服务器3 2 本地文件上传到服务器3 3 MySQL配置与安装3 4 Mav
  • 时间片轮转调度算法的计算

    在分时系统中 xff0c 最简单最常用的就是基于时间片轮转调度算法 xff0c 时间片轮转调度算法是非常公平的处理机分配方式 xff0c 让就绪队列的每个进程每次仅运行一个时间片 1 时间片轮转调度算法的基本原理 在时间片轮转调度算法中 x
  • IntelliJ IDEA添加注释常用的快捷键

    IDEA可以使用快捷键添加行注释Ctrl 43 块注释Ctrl 43 Shift 43 xff0c 还可以快速生成类注释 方法注释等 下面就介绍这几种快捷键的用法 1 行注释Ctrl 43 首先你的光标要处于这一行 xff0c 处于这行的哪
  • Android Studio 设置代码提示和代码自动补全快捷键

    想必使用过Eclipse的小伙伴们都习惯Eclipse快捷键带来的方便 但是当我们使用Android studio来进行开发的时候也想要这种方便该怎么办呢 当然使用过Android studio的小伙伴可能已经知道了它的方便以及强大之处 接
  • 编写一个算法,实现一维数组a输入任意n个整数,假设n=7,输入7个数字为3,7,6,8,9,4,1

    问题描述 编写一个算法 xff0c 实现一维数组a输入任意n个整数 xff0c 假设n 61 7 xff0c 输入7个数字为3 7 6 8 9 4 1 xff0c 然后建立一个具有如图所示的方阵 xff0c 并输出打印 1 3 7 6 8
  • 1.0 DS1302-外部RTC

    一 综述 DS1302是美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 xff0c 因为应用非常广泛 xff0c 结果就导致了大量的国产仿制品 xff0c GC1302是一款国产DS1302仿制芯片 xff0c 使用方法