下面是驱动的代码
RTC_HandleTypeDef hrtc;
/ RTC init function /
void MX_RTC_Init(void)
{
RTC_TimeTypeDef sTime;
RTC_DateTypeDef sDate;
__HAL_RCC_PWR_CLK_ENABLE();//??????PWR
HAL_PWR_EnableBkUpAccess();//?????????
}
void HAL_RTC_MspInit(RTC_HandleTypeDef rtcHandle)
{
if (rtcHandle->Instance == RTC)
{
/ USER CODE BEGIN RTC_MspInit 0 /
/ USER CODE END RTC_MspInit 0 /
/ RTC clock enable /
__HAL_RCC_RTC_ENABLE();
/ USER CODE BEGIN RTC_MspInit 1 /
/ USER CODE END RTC_MspInit 1 */
}
}
void HAL_RTC_MspDeInit(RTC_HandleTypeDef rtcHandle)
{
if (rtcHandle->Instance == RTC)
{
/ USER CODE BEGIN RTC_MspDeInit 0 /
/ USER CODE END RTC_MspDeInit 0 /
/ Peripheral clock disable /
__HAL_RCC_RTC_DISABLE();
/ USER CODE BEGIN RTC_MspDeInit 1 /
/ USER CODE END RTC_MspDeInit 1 */
}
}
static rt_err_t stm32_rtc_control(struct rt_device dev,
int cmd,
void args)
{
struct tm *tm_now;
struct tm now;
RTC_TimeTypeDef sTime;
RTC_DateTypeDef sDate;
}
static rt_err_t stm32_rtc_init(struct rt_device *dev)
{
return RT_EOK;
}
static rt_err_t stm32_rtc_open(struct rt_device *dev, rt_uint16_t oflag)
{
return RT_EOK;
}
static rt_err_t stm32_rtc_close(struct rt_device *dev)
{
return RT_EOK;
}
static rt_size_t stm32_rtc_read(struct rt_device dev,
rt_off_t pos,
void buffer,
rt_size_t size)
{
stm32_rtc_control(dev, RT_DEVICE_CTRL_RTC_GET_TIME, buffer);
return size;
}
static rt_size_t stm32_rtc_write(struct rt_device dev,
rt_off_t pos,
const void buffer,
rt_size_t size)
{
stm32_rtc_control(dev, RT_DEVICE_CTRL_RTC_SET_TIME, (void *)buffer);
return size;
}
struct rt_device rtc_device;
int rt_hw_rtc_init(void)
{
MX_RTC_Init();
rtc_device.type = RT_Device_Class_RTC;
rtc_device.rx_indicate = RT_NULL;
rtc_device.tx_complete = RT_NULL;
rtc_device.init = stm32_rtc_init;
rtc_device.open = stm32_rtc_open;
rtc_device.close = stm32_rtc_close;
rtc_device.read = stm32_rtc_read;
rtc_device.write = stm32_rtc_write;
rtc_device.control = stm32_rtc_control;
rtc_device.user_data = RT_NULL;
}
INIT_BOARD_EXPORT(rt_hw_rtc_init);