RTC_InitTypeDef RTC_InitStructure;
RTC_TimeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DataStructure;
/****************************************************************************************
*函 数 名:bsp_InitRtc
*函数功能:初始化rtc
*形 参:无
*返 回 值:无
*****************************************************************************************/
void bsp_InitRtc(void)
{
RTC_InitTypeDef RTC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);/*使能后备寄存器访问*/
if(RTC_ReadBackupRegister(RTC_BKP_DR0) != 0xA0A0)
{
RCC_LSEConfig(RCC_LSE_ON);/*使能LSE振荡器*/
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)/*等待就绪*/
{
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);/*选择RTC时钟源*/
RCC_RTCCLKCmd(ENABLE);/*使能RTC时钟*/
RTC_WaitForSynchro();/*等待RTC APB寄存器同步*/
/*配置RTC数据寄存器和分频器*/
RTC_InitStructure.RTC_AsynchPrediv = 0x7f;
RTC_InitStructure.RTC_SynchPrediv = 0xff;
RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
RTC_Init(&RTC_InitStructure);
/*设置年月日和星期*/
RTC_DataStructure.RTC_Year = 0x15;
RTC_DataStructure.RTC_Month = 0x12;
RTC_DataStructure.RTC_Date = 0x06;
RTC_DataStructure.RTC_WeekDay = 0x07;
RTC_SetDate(RTC_Format_BCD,&RTC_DataStructure);
/*设置时分秒 及显示格式*/
RTC_TimeStructure.RTC_H12 = RTC_H12_AM;
RTC_TimeStructure.RTC_Hours = 0x21;
RTC_TimeStructure.RTC_Minutes = 0x30;
RTC_TimeStructure.RTC_Seconds = 0x00;
RTC_SetTime(RTC_Format_BCD,&RTC_TimeStructure);
/*配置备份寄存器,表示已经设置过RTC*/
RTC_WriteBackupRegister(RTC_BKP_DR0,0xA0A0);
}
}
/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: c程序入口
* 形 参:无
* 返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
char buf[30];
/*
ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在 system_stm32f4xx.c 文件,主要功能是
配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM
*/
bsp_Init();//初始化RTC
/* 进入主程序循环体 */
while (1)
{
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
RTC_GetDate(RTC_Format_BIN, &RTC_DataStructure);
sprintf(buf,
"20%0.2d/%0.2d/%0.2d",
RTC_DataStructure.RTC_Year,
RTC_DataStructure.RTC_Month,
RTC_DataStructure.RTC_Date);
printf("%s",buf);//输出时间到串口
printf("\r\n");//换行
sprintf(buf,
"%0.2d:%0.2d:%0.2d",
RTC_TimeStructure.RTC_Hours,
RTC_TimeStructure.RTC_Minutes,
RTC_TimeStructure.RTC_Seconds);
printf("%s",buf);//输出日期到串口
printf("\r\n");//换行
bsp_DelayMS(990);
}
}
关键字:STM32F407 RTC时间
引用地址:
STM32F407的RTC时间
推荐阅读最新更新时间:2024-03-16 15:36
stm32f407硬件spi读写sst25vf闪存flash代码
void SPI_FLASH_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Enable the SPI periph */ RCC_APB2PeriphClockCmd(FLASH_SPI_CLK, ENABLE); /* Enable SCK, MOSI and MISO GPIO clocks */ RCC_AHB1PeriphClockCmd(FLASH_SPI_SCK_GPIO_CLK | FL
[单片机]
【STM32F407】第2章 ThreadX USBX协议栈介绍
2.1 初学者重要提示 1、 ThreadX是小型RTOS的巅峰之作,通过了各行各业的安全认证,并且大部分都是最高安全标准。作为 中间件 的USBX文件系统也通过了各种安全认证。 2.2 Express Logic公司介绍 ThreadX的作者是William lamie(同样是Nucleus RTOS的原始作者,于1990年发布)。1996的时候成立了Express Logic,并于1997发布首版ThreadX RTOS。 ThreadX4发布于2001年,ThreadX5发布于2005年,ThreadX6发布于2020年。 FileX – ThreadX的嵌入式文件系统于1999年发布首版。 NetX – Thr
[单片机]
stm32f407多个定时器产生PWM(TIM1、TIM4、TIM9)
#include pwm.h u16 Right_Forward = 100; // PB7 TIM4_CH2 void TIM42_PWM_Init(u32 arr,u32 psc , u32 CCR2_Val ) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_PinAFConfig(GP
[单片机]
stm32f407_hal库_工程模板
硬件平台: stm32f407ve 软件平台: win10 (OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.18363 N/A Build 18363) Keil5 5.26.2 HAL库版本: 2.14.0(目前下载的最新的) 1.在工程路径下建立一个空的文件夹 2.打开keil5,没有建立工程,应该示空白工程(我的版本是5.26.2)。 3.我现在安装的hal库的版本: 4. 新建工程 5. 选择工程保存的路径,就是第一步新建的文件夹
[单片机]
STM32F407中断学习笔记
中断与事件的区别 相同点:中断和事件都是触发的一种,都是可以设置触发的; 异同点: 中断触发后必须有中断处理子程序IRQ handle,例如比如按键中断触发,实现一个LED的闪烁,可以在按键按下后,在中断处理程序中实现某个LED的电平反转 但在事件中,事件是没有中断处理子程序的,事件发生后,会直接发出一个脉冲信号给与之联动的操作,也可以同样实现LED电平的反转,只要有事件发生,就会有一个脉冲信号,这样的好处是,不需要CPU干预了,可以节省CPU的处理资源,相比中断处理,速度还更快,因为硬件的速度总是比软件处理快。 EXTI 功能框图 EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所
[单片机]
【stm32f407】I2C实验
一.I2C介绍 IIC(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。如图: I2C协议一共有6种协议信号 ① 空闲状态 ② 开始信号 ③ 停止信号 ④ 应答信号 ⑤ 数据的有效性 ⑥ 数据传输 1) 空闲信号 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场
[单片机]
【STM32】stm32f407 + DS18B20 碰出不一样的火花
前言 之前在这篇文章:【STM32学习记录4】1.44寸TFT液晶屏显示字符、汉字和图片 卖了一个关子: 开发板:stm32f407VET6 开发环境:keil5 MDK 一、硬件基础——DS18B20 1.DS18B20简介 2.硬件连接 根据手册,DS18B20的硬件接法很简单,分为以下两种: 需要注意的是不管哪一种接法DQ上一定要接个上拉电阻 1.【寄生接法】 DS18B20_GND → to→ STM32F407_GND DS18B20_VCC → to→ STM32F407_GND DS18B20_DQ → to→ STM32F407_P** DQ引脚可接任意IO口 关于寄生方式,
[单片机]
STM32F407的GPIO操作
/* #include stm32f4_discovery.h #include stm32f4xx_conf.h uint32_t Gb_TimingDelay; void Delay(uint32_t nTime); void main( ) { SysTick_Config(SystemCoreClock / 1000); //设置systemtick 一毫秒中断 RCC- AHB1ENR |= 0x00000008; //使能GPIOD 时钟 RCC- APB2ENR |= (1 14); //使能syscfg 时钟 GPIOD- MODER &= 0x00FFFFFF; //设置PD12,13,14,
[单片机]