#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