You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.5 KiB

#ifndef __DS1302_H
#define __DS1302_H
#include "stm32f10x.h"
#define DS1302_CLK_RCC RCC_APB2Periph_GPIOA //时钟
#define DS1302_CLK_PORT GPIOA //端口
#define DS1302_CLK_PIN GPIO_Pin_7 //引脚
#define DS1302_DAT_RCC RCC_APB2Periph_GPIOA //时钟
#define DS1302_DAT_PORT GPIOA //端口
#define DS1302_DAT_PIN GPIO_Pin_6 //引脚
#define DS1302_RST_RCC RCC_APB2Periph_GPIOA //时钟
#define DS1302_RST_PORT GPIOA //端口
#define DS1302_RST_PIN GPIO_Pin_5 //引脚
#define DS1302_CLK_HIGH GPIO_SetBits(DS1302_CLK_PORT, DS1302_CLK_PIN) //引脚输出高电平
#define DS1302_CLK_LOW GPIO_ResetBits(DS1302_CLK_PORT, DS1302_CLK_PIN) //引脚输出低电平
#define DS1302_DAT_HIGH GPIO_SetBits(DS1302_DAT_PORT, DS1302_DAT_PIN) //引脚输出高电平
#define DS1302_DAT_LOW GPIO_ResetBits(DS1302_DAT_PORT, DS1302_DAT_PIN) //引脚输出低电平
#define DS1302_RST_HIGH GPIO_SetBits(DS1302_RST_PORT, DS1302_RST_PIN) //引脚输出高电平
#define DS1302_RST_LOW GPIO_ResetBits(DS1302_RST_PORT, DS1302_RST_PIN) //引脚输出低电平
#define DS1302_SET_IN ds1302_set_input_mode() //设置输入模式
#define DS1302_SET_OUT ds1302_set_output_mode() //设置输出模式
/*读相关寄存器地址*/
#define DS1302_READ_SECOND 0X81 //秒
#define DS1302_READ_MINUTE 0X83 //分
#define DS1302_READ_HOUR 0X85 //时
#define DS1302_READ_DAY 0X87 //日
#define DS1302_READ_MONTH 0X89 //月
#define DS1302_READ_WEEK 0X8B //周
#define DS1302_READ_YEAR 0X8D //年
//#define DS1302_READ_TIME 0XBF //读取全部时间
/*写相关寄存器地址*/
#define DS1302_WRITE_SECOND 0X80 //秒
#define DS1302_WRITE_MINUTE 0X82 //分
#define DS1302_WRITE_HOUR 0X84 //时
#define DS1302_WRITE_DAY 0X86 //日
#define DS1302_WRITE_MONTH 0X88 //月
#define DS1302_WRITE_WEEK 0X8A //周
#define DS1302_WRITE_YEAR 0X8C //年
#define DS1302_WRITE_PROTECT 0X8E //保护
//#define DS1302_WRITE_TIME 0XBE //写全部时间
extern uint8_t ds1302_time[7]; //存放日期和时间
extern uint8_t ds1302_date[7]; //存放日期和时间
void ds1302_write_byte(uint8_t addr_or_data); //DS1302 写一字节 函数
void ds1302_write_cmd(uint8_t addr,uint8_t dat); //DS1302 写命令 函数
uint8_t ds1302_read_byte(void); //DS1302 读一字节 函数
uint8_t ds1302_read_data(uint8_t addr); //DS1302 写一字节 函数
void bcd_to_dec(uint8_t *bcd,uint8_t times); //BCD 转 十进制 函数
void dec_to_bcd(uint8_t *dec,uint8_t times); //十进制 转 BCD 函数
void ds1302_init(void); //DS1302 初始化日期和时间 函数
void ds1302_read(void); //DS1302 读取 日期和时间 函数
#endif