81 lines
1.9 KiB
C
81 lines
1.9 KiB
C
#ifndef __MW_RTC_DEFINE__
|
||
#define __MW_RTC_DEFINE__
|
||
|
||
|
||
#include "public_diy.h"
|
||
#include "stm32f10x_gpio.h"
|
||
#include "stm32f10x_rcc.h"
|
||
|
||
#define RTCTYPE_NULL (0u)
|
||
#define RTCTYPE_PCF8563 (1u)
|
||
#define RTCTYPE_OTHER (2u)
|
||
|
||
#define RTCTYPE_DEFINE (RTCTYPE_NULL)
|
||
|
||
|
||
/* RTC GPIO definition */
|
||
/* RTC SCL */
|
||
#define RCC_GPIO_RTC_SCL RCC_APB2Periph_GPIOA
|
||
#define GPIO_PORT_RTC_SCL GPIOA
|
||
#define GPIO_PIN_RTC_SCL GPIO_Pin_1
|
||
/* RTC SDA */
|
||
#define RCC_GPIO_RTC_SDA RCC_APB2Periph_GPIOA
|
||
#define GPIO_PORT_RTC_SDA GPIOA
|
||
#define GPIO_PIN_RTC_SDA GPIO_Pin_0
|
||
|
||
/* RTC pin control */
|
||
/* SCL write pin state */
|
||
#define RTC_W_SCL(x) GPIO_WriteBit(GPIO_PORT_RTC_SCL, GPIO_PIN_RTC_SCL, (BitAction)(x))
|
||
/* SDA write pin state */
|
||
#define RTC_W_SDA(x) GPIO_WriteBit(GPIO_PORT_RTC_SDA, GPIO_PIN_RTC_SDA, (BitAction)(x))
|
||
/* get sda pin state */
|
||
#define GET_RTC_SDA_STATE() GPIO_ReadInputDataBit(GPIO_PORT_RTC_SDA, GPIO_PIN_RTC_SDA)
|
||
|
||
// typedef enum
|
||
// {
|
||
// e_rtcType_pcf8563 = 0,
|
||
|
||
|
||
// // 总个数
|
||
// e_rtcType_number
|
||
// }rtc_type_enum;
|
||
|
||
/* rtc时间信息 */
|
||
typedef struct
|
||
{
|
||
uint8_t year; // 年
|
||
uint8_t month; // 月
|
||
uint8_t day; // 日
|
||
uint8_t week; // 星期
|
||
uint8_t hour; // 时
|
||
uint8_t minute; // 分
|
||
uint8_t second; // 秒
|
||
}rtc_time_infor;
|
||
|
||
typedef struct
|
||
{
|
||
// rtc类型 pcf8563等
|
||
uint8_t rtc_type;
|
||
// // 时间信息 年月日星期时分秒
|
||
// rtc_time_infor time_infor;
|
||
// rtc外设初始化程序
|
||
uint8_t (*init)(void);
|
||
// 重启程序,若返回值为0xFF则表示无重启功能,无效。
|
||
uint8_t (*reboot)(void);
|
||
// 获取rtc时间信息
|
||
uint8_t (*get_rtc_time)(rtc_time_infor*);
|
||
// 设置rtc的时间信息
|
||
uint8_t (*set_rtc_time)(rtc_time_infor);
|
||
}rtc_drv_str;
|
||
|
||
// void rtc_gpio_init(void);
|
||
void rtc_SDA_as_output(void);
|
||
|
||
void rtc_SDA_as_input(void);
|
||
|
||
uint8_t rtc_is_SDA_as_openDrain_output(void);
|
||
|
||
uint8_t rtc_is_SDA_as_floating_input(void);
|
||
|
||
#endif
|