当前位置: 首页 > news >正文

域名到网站上线建公司网站要提供哪些素材

域名到网站上线,建公司网站要提供哪些素材,济南seo网络优化公司,直播网站建设1个节点多少钱一、实时时钟概述 1、实时时钟介绍 英文缩写#xff1a;RTC。显示年、月、日、时、分、秒、星期,自动计算闰年#xff0c;能够区分每个月的天数。 RTC特点#xff1a;能从RTC获取到具体的日期时间#xff0c;断掉后再开机时间仍然准确#xff08;需要纽扣电池#xff…一、实时时钟概述 1、实时时钟介绍 英文缩写RTC。显示年、月、日、时、分、秒、星期,自动计算闰年能够区分每个月的天数。 RTC特点能从RTC获取到具体的日期时间断掉后再开机时间仍然准确需要纽扣电池。 RTC模块分为两种一种集成在芯片内部另外一种是外接RTC芯片。 2、常用的实时时钟芯片 常见的实时时钟芯片 常见实时时钟芯片DS1302、DS1307、PCF8563等。 显示年、月、日、时、分、秒、星期自动计算闰年能够区分每个月的天数。 二、STM32内部实时时钟介绍 1、STM32内部实时时钟特点 实时时钟 (RTC) 是一个独立的 BCD 定时器 /计数器。 RTC 提供一个日历时钟、两个可编程闹钟中断以及一个具有中断功能的周期性可编程唤醒标志。 RTC 还包含用于管理低功耗式的自动唤醒单元。两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时 12 或 24 小时制、星期几、日期、月份和年份。此外还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、 29闰年、 30 和 31 天。并且还可以进行夏令时补偿。其它 32 位寄存器还包含可编程的闹钟亚秒、 秒、分钟、小时、星期几和日期。 此外还可以使用数字校准功能对晶振精度的偏差进行补偿。上电复位后所有 RTC 寄存器都会受到保护以防止可能的非正常写访问。无论器件状态如何运行模式、低功耗模式或处于复位状态只要电源电压保持在工作范围内RTC 便不会停止工作。 21 -- 0001 0101平常的十进制转为二进制 -- 0x15 十进制转为BCD码的二进制格式BCD能表示的范围是 0 - 9 21 -- 0010 0001 -- 0x21 2、RTC电源部分 RTC断掉主电源以后就会由VBAT供电所以可以做到断电数据不丢失的效果。 3、STM32内部实时时钟的功能介绍 RTC 单元的主要特性如下参见图 222 RTC 框图 ● 包含亚秒、秒、分钟、小时 12/24 小时制、星期几、日期、月份和年份的日历。 ● 软件可编程的夏令时补偿。 ● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。 ● 自动唤醒单元可周期性地生成标志以触发自动唤醒中断。 ● 参考时钟检测可使用更加精确的第二时钟源50 Hz 或 60 Hz来提高日历的精确度。 ● 利用亚秒级移位特性与外部时钟实现精确同步。 ● 可屏蔽中断 /事件— 闹钟 A — 闹钟 B — 唤醒中断 — 时间戳  — 入侵检测 ● 数字校准电路周期性计数器调整 — 精度为 5 ppm — 精度为 0.95 ppm在数秒钟的校准窗口中获得 ● 用于事件保存的时间戳功能 1 个事件 ● 入侵检测  — 2 个带可配置过滤器和内部上拉的入侵事件 ● 20 个备份寄存器 80 字节。发生入侵检测事件时将复位备份寄存器。 三、STM32内部实时时钟框架 四、RTC基本日历功能框架分析 1、RTC寄存器写保护 系统复位后可通过 PWR 电源控制寄存器 (PWR_CR) 的 DBP 位保护 RTC 寄存器以防止非正常的写访问。必须将 DBP 位置 1 才能使能 RTC 寄存器的写访问。上电复位后所有 RTC 寄存器均受到写保护。通过向写保护寄存器 (RTC_WPR) 写入一个密钥来使能对 RTC 寄存器的写操作。要解锁所有 RTC 寄存器RTC_ISR[13:8]、 RTC_TAFCR 和 RTC_BKPxR 除外的写保护 需要执行以下步骤 1. 将“0xCA”写入 RTC_WPR 寄存器。 2. 将“0x53”写入  RTC_WPR 寄存器。 写入一个错误的关键字会再次激活写保护。 保护机制不受系统复位影响。 2、RTC进入初始化模式(在设置RTC时间和日期要注意的) 要编程包括时间格式和预分频器配置在内的初始时间和日期日历值需按照以下顺序操作 1. 将 RTC_ISR 寄存器中的 INIT 位置 1 以进入初始化模式。在此模式下日历计数器将停止工作并且其值可更新。 2. 轮询 RTC_ISR 寄存器中的 INITF 位。当 INITF 置 1 时进入初始化阶段模式。大约需要2 个 RTCCLK 时钟周期由于时钟同步。 3. 要为日历计数器生成 1 Hz 时钟应首先编程 RTC_PRER 寄存器中的同步预分频系数然后编程异步分频系数。即使只需要更改这两个字段中之一也必须对 RTC_PRER寄存器执行两次单独的写访问。 4. 在影子寄存器 RTC_TR 和 RTC_DR中加载初始时间和日期值然后通过 RTC_CR寄存器中的 FMT 位配置时间格式 12 或 24 小时制。 5. 通过清零 INIT 位退出初始化模式。随后自动加载实际日历计数器值在 4 个 RTCCLK时钟周期后重新开始计数。 当初始化序列完成之后日历开始计数。 系统复位后应用可读取 RTC_ISR 寄存器中的 INITS 标志以检查日历是否已初始化。如果该标志为 0表明日历尚未初始化因为年份字段设置为其上电复位时的默认值 (0x00)。要在初始化之后读取日历必须首先用软件检查 RTC_ISR 寄存器的 RSF 3、RTC同步读取RTC时间和日期时要注意的 要正确读取 RTC 日历寄存器RTC_SSR、 RTC_TR 和 RTC_DR APB1 时钟频率 (fPCLK1 )必须等于或大于 fRTCCLK RTC 时钟频率的七倍。这可以确保同步机制行为的安全性。如果 APB1 时钟频率低于 RTC 时钟频率的七倍则软件必须分两次读取日历时间寄存器和 日期寄存器。这样当两次读取的 RTC_TR 结果相同时才能确保数据正确。否则必须执行第三次读访问。任何情况下 APB1 的时钟频率都不能低于 RTC 的时钟频率。每次将日历寄存器中的值复制到 RTC_SSR、 RTC_TR 和 RTC_DR 影子寄存器时 RTC_ISR 寄存器中的 RSF 位都会置 1 。每两个 TRCCLK 周期执行一次复制。为确保这 3 个值来自同 一时刻点读取 RTC_SSR 或 RTC_TR 时会锁定高阶日历影子寄存器中的值直到读取 RTC_DR。为避免软件对日历执行读访问的时间间隔小于 2 个 RTCCLK 周期第一次读取 日历之后必须通过软件将 RSF 清零并且软件必等待到 RSF 置 1 之后才可再次读取 RTC_SSR、 RTC_TR 和 RTC_DR 寄存器。 4、STM32内部实时时钟寄存器说明 RTC 时间寄存器 (RTC_TR) 位 22 PM AM/PM 符号 (AM/PM notation) 0 AM 或 24 小时制 1 PM位 21:20 HT[1:0]小时的十位BCD 格式 (Hour tens in BCD format) 位 16:16 HU[3:0]小时的个位BCD 格式 (Hour units in BCD format) 位 15 保留必须保持复位值。位 14:12 MNT[2:0]分钟的十位BCD 格式 (Minute tens in BCD format) 位 11:8 MNU[3:0]分钟的个位BCD 格式 (Minute units in BCD format) 位 7 保留必须保持复位值。位 6:4 ST[2:0]秒的十位BCD 格式 (Second tens in BCD format) 位 3:0 SU[3:0]秒的个位BCD 格式 (Second units in BCD format) RTC 日期寄存器 (RTC_DR) RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作 位 23:20 YT[3:0]年份的十位BCD 格式 (Year tens in BCD format)位 19:16 YU[3:0]年份的个位BCD 格式 (Year units in BCD format)位 15:13 WDU[2:0]星期几的个位 (Week day units) 000禁止 001星期一 ... 111星期日位 12 MT月份的十位BCD 格式 (Month tens in BCD format)位 11:8 MU月份的个位BCD 格式 (Month units in BCD format)位 7:6 保留必须保持复位值。位 5:4 DT[1:0]日期的十位BCD 格式 (Date tens in BCD format)位 3:0 DU[3:0]日期的个位BCD 格式 (Date units in BCD format) RTC 控制寄存器 (RTC_CR) 位 6 FMT小时格式 (Hour format)0 24 小时/天格式 1 AM/PM 小时格式位 5 BYPSHAD旁路影子寄存器 (Bypass the shadow registers)0日历值从 RTC_SSR、 RTC_TR 和 RTC_DR 读取时取自影子寄存器该影子寄存器每两个 RTCCLK 周期更新一次。 1日历值从 RTC_SSR、 RTC_TR 和 RTC_DR 读取时直接取自日历计数器。 注意如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率则必须将 BYPSHAD 置“1”。 RTC 初始化和状态寄存器 (RTC_ISR) 位 7 INIT初始化模式 (Initialization mode) 0自由运行模式。1初始化模式用于编程时间和日期寄存器RTC_TR 和 RTC_DR以及预分频器寄存器 (RTC_PRER)。计数器停止计数当 INIT 被复位后计数器从新值开始计数。位 6 INITF初始化标志 (Initialization flag) 当此位置 1 时 RTC 处于初始化状态此时可更新事件、日期和预分频器寄存器。 0不允许更新日历寄存器。1允许更新日历寄存器。 位 5 RSF寄存器同步标志 (Registers synchronization flag) 每次将日历寄存器的值复制到影子寄存器RTC_SSRx、 RTC_TRx 和 RTC_DRx时都 会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF1) 或在旁路影子寄存器模 式 (BYPSHAD1) 下该位由硬件清零。该位还可由软件清零。 0日历影子寄存器尚未同步1日历影子寄存器已同步 RTC 预分频器寄存器 (RTC_PRER) 位 22:16 PREDIV_A[6:0]异步预分频系数 (Asynchronous prescaler factor) 下面是异步分频系数的公式 ck_apre 频率 RTCCLK 频率/(PREDIV_A1) 注意 PREDIV_A [6:0] 000000 为禁用值。 位 15 保留必须保持复位值。 位 14:0 PREDIV_S[14:0]同步预分频系数 (Synchronous prescaler factor) 下面是同步分频系数的公式 ck_spre 频率 ck_apre 频率/(PREDIV_S1) RTC 写保护寄存器 (RTC_WPR) 位 7:0 KEY写保护关键字 (Write protection key) 可通过软件对该字节执行写操作。 读取该字节时始终返回 0x00。 有关如何解锁 RTC 寄存器写保护的介绍请参见RTC 寄存器写保护。 五、RTC自动唤醒功能 通过设定一个时间周期当时间到了的时候就会产生一些标志/中断通过IO口将当前标志输出出去产生外部中断。一般自动唤醒都是设定一秒产生一次中断在中断中获取RTC时间/日期。 1、RTC自动唤醒功能相关寄存器 RTC 控制寄存器 (RTC_CR) 位 14 WUTIE使能唤醒定时器使能 (Wakeup timer interrupt enable) 0禁止唤醒定时器中断1使能唤醒定时器中断 位 10 WUTE唤醒定时器使能 (Wakeup timer enable) 0禁止唤醒定时器1使能唤醒定时器 位 2:0 WUCKSEL[2:0]唤醒时钟选择 (Wakeup clock selection) 000选择 RTC/16 时钟001选择 RTC/8 时钟010选择 RTC/4 时钟011选择 RTC/2 时钟10x选择 ck_spre 时钟通常为 1 Hz11x选择 ck_spre 时钟通常为 1 Hz并将 WUT 计数器值增加 216见下面的注释 RTC 初始化和状态寄存器 (RTC_ISR) 位 10 WUTF唤醒定时器标志 (Wakeup timer flag)当唤醒自动重载计数器计数到 0 时由硬件将此标志置 1。 该标志由软件写零清除。 软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 位2 WUTWF唤醒定时器写标志 (Wakeup timer write flag)在 RTC_CR 寄存器中的 WUTE 位置 0 后当唤醒定时器值可更改时由硬件将该位置 1。0不允许更新唤醒定时器配置1允许更新唤醒定时器配置 RTC 唤醒定时器寄存器 (RTC_WUTR) 六、​​​​​​​RTC闹钟功能 1、RTC闹钟功能框图分析 2、RTC闹钟功能相关寄存器 RTC 控制寄存器 (RTC_CR) 位 13 ALRBIE 闹钟 B 中断使能 (Alarm B interrupt enable) 0闹钟 B 中断禁止 1闹钟 B 中断使能位 12 ALRAIE闹钟 A 中断使能 (Alarm A interrupt enable) 0禁止闹钟 A 中断 1使能闹钟 A 中断 位 9 ALRBE 闹钟 B 使能 (Alarm B enable) 0禁止闹钟 B 1使能闹钟 B 位 8 ALRAE 闹钟 A 使能 (Alarm A enable) 0禁止闹钟 A 1使能闹钟 A RTC 初始化和状态寄存器 (RTC_ISR) 位 9 ALRBF闹钟 B 标志 (Alarm B flag) 当时间/日期寄存器RTC_TR 和 RTC_DR与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时由 硬件将该标志置 1。 该标志由软件写零清除。位 8 ALRAF闹钟 A 标志 (Alarm A flag) 当时间/日期寄存器RTC_TR 和 RTC_DR与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时由 硬件将该标志置 1。 该标志由软件写零清除。 位 1 ALRBWF闹钟 B 写标志 (Alarm B write flag) 在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后当闹钟 B 的值可更改时由硬件将该位置 1。 该位在初始化模式下由硬件清零。 0不允许更新闹钟 B 1允许更新闹钟 B位 0 ALRAWF闹钟 A 写标志 (Alarm A write flag) 在 RTC_CR 寄存器中的 ALRAE 位置 0 后当闹钟 A 的值可更改时由硬件将该位置 1。 该位在初始化模式下由硬件清零。 0不允许更新闹钟 A 1允许更新闹钟 A RTC 闹钟 A 寄存器 (RTC_ALRMAR) RTC 闹钟 B 寄存器 (RTC_ALRMBR) RTC基本日历功能  软件设计 1. 打开PWR的时钟 2. 选择PWR寄存器中的CR寄存器的DBP 位置 1 3. 选择时钟源 4.开启相应的时钟源 5.判断开启成功没有 6. 选择相应的时钟源到RTC里 7.使能RTC的时钟 8.解除写保护 将“0xCA”写入 RTC_WPR 寄存器。 将“0x53”写入  RTC_WPR 寄存器。 9.将 RTC_ISR 寄存器中的 INIT 位置 1 以进入初始化模式。在此模式下日历计数器将停止工作并且其值可更新。 10.轮询 RTC_ISR 寄存器中的 INITF 位。当 INITF 置 1 时进入初始化阶段模式。大约需要2 个 RTCCLK 时钟周期由于时钟同步。 11. 要为日历计数器生成 1 Hz 时钟应首先编程 RTC_PRER 寄存器中的同步预分频系数然后编程异步分频系数。即使只需要更改这两个字段中之一也必须对 RTC_PRER寄存器执行两次单独的写访问。 12.在影子寄存器 RTC_TR 和 RTC_DR中加载初始时间和日期值然后通过 RTC_CR寄存器中的 FMT 位配置时间格式 12 或 24 小时制。 13.通过清零 INIT 位退出初始化模式。随后自动加载实际日历计数器值在 4 个 RTCCLK时钟周期后重新开始计数。 当初始化序列完成之后日历开始计数。 14.读取相应的时间出来 #include rtc.hconst char *pt __TIME__; const char *pd __DATE__; TIME_DATA time_data; u8 month[12][5] {Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; /*********************************************************** 函数功能判断闰年函数 函数形参年 函数返回值0平年 1闰年 ************************************************************/ u8 Pd_Rn(u16 year) {if( (year%40 year%100! 0) || (year%400 0) ){return 1;}return 0; }/*********************************************************** 函数功能1990年1月1日到今天的天数函数 函数形参年 月 日 函数返回值星期几 ************************************************************/ u8 Statistics_Days(u16 year, u8 mon, u8 day) {u32 buf 0;//存储天数u16 i;//0-66535u8 week 0;for(i 1990; i year; i){if( Pd_Rn(i) ){buf 366;}else{buf 365;}}switch(mon)//7{case 12: buf 30; case 11: buf 31; case 10: buf 30; case 9: buf 31; case 8: buf 31; case 7: buf 30; case 6: buf 31; case 5: buf 30; case 4: buf 31; case 3: buf 28; buf Pd_Rn(year); case 2: buf 31; case 1: buf 0; }//统计从这个1日 到 今天的天数buf day;//1990年1月1日 到 今天的天数switch(buf % 7){case 1: week 1; break;case 2: week 2; break;case 3: week 3; break;case 4: week 4; break;case 5: week 5; break;case 6: week 6; break;case 0: week 7; break;}return week;//将星期几返回出去了 }//设置时间 ErrorStatus RTC_Set_Time(void) {/*****************解析时间**********************/time_data.hour (pt[0]-0)*10 (pt[1]-0);//、得到小时time_data.minute (pt[3]-0)*10 (pt[4]-0);//得到分钟time_data.second (pt[6]-0)*10 (pt[7]-0);//得到秒RTC_TimeTypeDef RTC_TimeTypeInitStructure;RTC_TimeTypeInitStructure.RTC_Hours time_data.hour;RTC_TimeTypeInitStructure.RTC_Minutes time_data.minute;RTC_TimeTypeInitStructure.RTC_Seconds time_data.second;RTC_TimeTypeInitStructure.RTC_H12 RTC_H12_AM;return RTC_SetTime(RTC_Format_BIN,RTC_TimeTypeInitStructure); }//设置日期 ErrorStatus RTC_Setime_dataate() {u8 str[4] {0};u8 i;/*****************解析日期**********************/for(i 0; i 3; i){str[i] pd[i];//May}str[i] \0;for(i 0; i 12; i){if(strcmp((char *)str, (char *)month[i]) 0 ){i 1;break;//找到月份了}}time_data.month i;//得到月if( pd[4] ){time_data.day pd[5]-0;//得到日}else{time_data.day (pd[4]-0)*10 (pd[5]-0);//得到日}time_data.year (pd[9]-0)*10 (pd[10]-0);//得到年/*****************解析星期**********************/time_data.week Statistics_Days(time_data.year2000, time_data.month, time_data.day);//得到星期几RTC_DateTypeDef RTC_DateTypeInitStructure;RTC_DateTypeInitStructure.RTC_Year time_data.year;RTC_DateTypeInitStructure.RTC_Month time_data.month;RTC_DateTypeInitStructure.RTC_Date time_data.day;RTC_DateTypeInitStructure.RTC_WeekDay time_data.week;return RTC_SetDate(RTC_Format_BIN,RTC_DateTypeInitStructure); }/************************ 函数功能RTC初始化 形参无 返回值成功返回0失败返回1 说明24小时制 ************************/ u8 My_Rtc_Init(void) {RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问 RTC_WriteProtectionCmd(DISABLE); u16 retry 0; //RCC_LSEConfig(RCC_LSE_ON);//LSE 开启 RCC_LSICmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) RESET) //检查指定的RCC标志位设置与否,等待低速晶振就绪{retry;delay_ms(10);if(retry 200){ return 1; //LSE 开启失败. }}RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟 RCC_RTCCLKCmd(ENABLE); //使能RTC时钟 RTC_InitTypeDef RTC_InitStructure;RTC_InitStructure.RTC_AsynchPrediv 0x7F;//RTC异步分频系数(1~0X7F)RTC_InitStructure.RTC_SynchPrediv 0xF9;//RTC同步分频系数(0~7FFF)RTC_InitStructure.RTC_HourFormat RTC_HourFormat_24;//RTC设置为,24小时格式RTC_Init(RTC_InitStructure);if(RTC_ReadBackupRegister(RTC_BKP_DR1) ! 0xbbbb){RTC_Set_Time(); //设置时间RTC_Setime_dataate(); //设置日期RTC_WriteBackupRegister(RTC_BKP_DR1, 0xbbbb); }return 0; }//RTC唤醒功能初始化 void Rtc_Wakeup_Init(void) {EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line EXTI_Line22;EXTI_InitStructure.EXTI_LineCmd ENABLE;EXTI_InitStructure.EXTI_Mode EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Rising;EXTI_Init(EXTI_InitStructure);//配置RTC_WakeUpCmd(DISABLE);//关闭WAKE UPRTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);//唤醒时钟选择RTC_SetWakeUpCounter(0);//设置WAKE UP自动重装载寄存器RTC_ClearITPendingBit(RTC_IT_WUT); //清除RTC WAKE UP的标志EXTI_ClearITPendingBit(EXTI_Line22);//清除LINE22上的中断标志位RTC_ITConfig(RTC_IT_WUT,ENABLE);//开启WAKE UP 定时器中断//设置中断NVIC_SetPriority(RTC_WKUP_IRQn,NVIC_EncodePriority(7-2,1,1));NVIC_EnableIRQ(RTC_WKUP_IRQn);RTC_WakeUpCmd(ENABLE);//开启WAKE UP 定时器  }//WAKE UP中断函数 void RTC_WKUP_IRQHandler(void) {u8 data[256];u8 time[256];RTC_TimeTypeDef RTC_TimeStruct;RTC_DateTypeDef RTC_DateStruct;RTC_ClearFlag(RTC_FLAG_WUTF); //清除中断标志EXTI_ClearITPendingBit(EXTI_Line22);//清除中断线22的中断标志 RTC_GetTime(RTC_Format_BIN,RTC_TimeStruct);RTC_GetDate(RTC_Format_BIN,RTC_DateStruct);sprintf((char*)data,20%02d-%02d-%02d-%01d,RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date,RTC_DateStruct.RTC_WeekDay);sprintf((char*)time,%02d:%02d:%02d,RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds); }//RTC闹钟功能初始化周几的闹钟 void Rtc_Alarm(u8 week,u8 hour, u8 minute, u8 second) {EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line EXTI_Line17;EXTI_InitStructure.EXTI_LineCmd ENABLE;EXTI_InitStructure.EXTI_Mode EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Rising;EXTI_Init(EXTI_InitStructure);//配置外部中断线RTC_AlarmTypeDef RTC_AlarmAStruct;RTC_AlarmCmd(RTC_Alarm_A,DISABLE); //先关闭闹钟ARTC_TimeTypeDef RTC_TimeTypeInitStructure;RTC_TimeTypeInitStructure.RTC_Hours hour;RTC_TimeTypeInitStructure.RTC_Minutes minute;RTC_TimeTypeInitStructure.RTC_Seconds second;RTC_TimeTypeInitStructure.RTC_H12 RTC_H12_AM;RTC_AlarmAStruct.RTC_AlarmDateWeekDay week;RTC_AlarmAStruct.RTC_AlarmDateWeekDaySel RTC_AlarmDateWeekDaySel_WeekDay;//按星期闹钟RTC_AlarmAStruct.RTC_AlarmMask RTC_AlarmMask_None;//不屏蔽 RTC_AlarmAStruct.RTC_AlarmTime RTC_TimeTypeInitStructure; RTC_SetAlarm(RTC_Format_BIN,RTC_Alarm_A,RTC_AlarmAStruct);//设置中断NVIC_SetPriority(RTC_Alarm_IRQn,NVIC_EncodePriority(7-2,1,1));NVIC_EnableIRQ(RTC_Alarm_IRQn); //使能闹钟A的中断RTC_ITConfig(RTC_IT_ALRA,ENABLE); //开启闹钟ARTC_AlarmCmd(RTC_Alarm_A,ENABLE); }//闹钟A中断服务函数 void RTC_Alarm_IRQHandler() {//判断中断是否发生if(RTC_GetITStatus(RTC_IT_ALRA)SET){RTC_ClearITPendingBit(RTC_IT_ALRA);//清中断标志位}EXTI_ClearITPendingBit(EXTI_Line17); } TIME_DATA dateAndTime;//获取当前时间 TIME_DATA *RTC_getDateAndTime(void) {RTC_DateTypeDef RTC_Date;//定义结构体用于保存获取的日期和时间RTC_TimeTypeDef RTC_Time;RTC_GetDate(RTC_Format_BIN,RTC_Date);RTC_GetTime(RTC_Format_BIN,RTC_Time); dateAndTime.year RTC_Date.RTC_Year;dateAndTime.month RTC_Date.RTC_Month;dateAndTime.day RTC_Date.RTC_Date;dateAndTime.week RTC_Date.RTC_WeekDay;dateAndTime.hour RTC_Time.RTC_Hours;dateAndTime.minute RTC_Time.RTC_Minutes;dateAndTime.second RTC_Time.RTC_Seconds;dateAndTime.ampm RTC_Time.RTC_H12;return dateAndTime; } #ifndef RTC_H_ #define RTC_H_ #include stm32f4xx.h #include stdio.h #include string.h typedef struct {u8 hour;u8 minute;u8 second;u8 year;u8 month;u8 day;u8 week;u8 ampm; }TIME_DATA;typedef struct {u8 twentyMsCount;u8 hour;u8 minute;u8 second; }timeStamp_t;u8 My_Rtc_Init(void); void Rtc_Wakeup_Init(void); void Rtc_Alarm(u8 week,u8 hour, u8 minute, u8 second); TIME_DATA *RTC_getDateAndTime(void); #endif
http://www.pierceye.com/news/510806/

相关文章:

  • 做网络写手 哪个网站比较好电商网站开发用什么语言
  • 如何做网站资讯淘宝官网登录入口
  • 江苏建设工程招标网官方网站免费网址怎么申请注册
  • 河池网站优化网络宣传渠道有哪些
  • 外贸建立网站怎么做42区 网站开发指南
  • wordpress多本小说站出售延安做网站
  • 北京快速网站建设找工作一般上什么网站比较好
  • 做外贸必须有公司网站么下沙网站制作
  • 西安学校网站建设网站搜索工具
  • 小型网站的建设方案龙江人社app二维码图片
  • 西宁微网站建设wordpress更新文章post.php错误
  • 网络营销网站平台有哪些众希网站建设
  • 网站建设营销的技巧公司招聘网站排行榜
  • 长治网站建设收费多少农村自建房设计图 户型图
  • 广州网站建设 骏域网站建设做搜狗网站优化首页软
  • 广州网站设计软件简约大方网站
  • 网站建设与管理专业好吗做国际贸易如何建网站
  • 小说百度风云榜上海seo网络推广渠道
  • 建设局网站打不开是什么原因wordpress客户端插件
  • 农业 网站源码网站制作产品优化
  • 企业公司网站制作建设怎么区分营销型网站
  • 如何选择顺德网站建设网站开发源代码
  • 北京城乡建设部网站网站页面是自己做还是使用模板
  • 网新企业网站管理系统厦门好景科技做网站
  • 手机网站开发语言深圳网站建设培训
  • wordpress做的视听网站怎么用ftp清空网站
  • 网站建设能干什么网页设计代码模板人物介绍
  • 桂阳网站设计做p2p投资理财的网站
  • 做学术论文的网站从化专业做网站
  • 从化网站制作狮山公司网站建设