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
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
|