#ifndef __DS1302DRV_H__ #define __DS1302DRV_H__ #include "stm32f7xx_hal.h" #include "stm32f7xx_hal.h" #define DEF_true 1 #define DEF_false 0 #define kRamSize 31 #define DS1302_SCLK_GPIO_Port GPIOB #define DS1302_SCLK_Pin GPIO_PIN_9 //DS1302_CE_GPIO_Port, DS1302_CE_Pin #define DS1302_CE_GPIO_Port GPIOE #define DS1302_CE_Pin GPIO_PIN_1 //DS1302_IO_GPIO_Port, DS1302_IO_Pin #define DS1302_IO_GPIO_Port GPIOE #define DS1302_IO_Pin GPIO_PIN_0 typedef enum { kSecondReg = 0, kMinuteReg = 1, kHourReg = 2, kDateReg = 3, kMonthReg = 4, kDayReg = 5, kYearReg = 6, kWriteProtectReg = 7, kChargeReg = 8, // The RAM register space follows the clock register space. kRamAddress0 = 32 } DS1302_Register; typedef enum { kClockBurstRead = 0xBF, kClockBurstWrite = 0xBE, kRamBurstRead = 0xFF, kRamBurstWrite = 0xFE } DS1302_Command; typedef enum { kSunday = 1, kMonday = 2, kTuesday = 3, kWednesday = 4, kThursday = 5, kFriday = 6, kSaturday = 7 } DS1302_Day; extern uint8_t time_buf_reg[8]; uint8_t bcdToDec(const uint8_t bcd) ; uint8_t decToBcd(const uint8_t dec) ; uint8_t hourFromRegisterValue(const uint8_t value); void DS1302_writeOut(const uint8_t value, uint8_t readAfter) ; uint8_t DS1302_readIn(void) ; uint8_t DS1302_readRegister(const uint8_t reg) ; void DS1302_writeRegister(const uint8_t reg, const uint8_t value) ; void DS1302_writeProtect(const uint8_t enable) ; void DS1302_halt(const uint8_t enable) ; void DS1302_writeRam(const uint8_t address, const uint8_t value) ; uint8_t DS1302_readRam(const uint8_t address) ; void DS1302_writeRamBulk(const uint8_t* const data, int len) ; void DS1302_readRamBulk(uint8_t* const data, int len) ; //Top layer function void DS1302_timeRead(void) ; void DS1302_timeWrite(void) ; #endif /* __DS1302DRV_H__ */