华建河北住房和城乡建设厅网站中企动力网站怎么样

bicheng/2026/1/24 7:47:32/文章来源:
华建河北住房和城乡建设厅网站,中企动力网站怎么样,江阴市建设局网站管理通道,房山做网站公司1. RTC的简介 STM32 的实时时钟#xff08;RTC#xff09;是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器#xff0c;在相应软件配置下#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置… 1. RTC的简介  STM32 的实时时钟RTC是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器在相应软件配置下可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。         RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后会自动禁止访问后备寄存器和 RTC以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前 先要取消备份区域BKP写保护。 2. RTC的框图 这里用的是STM32其实与GD都是差不多。 RTC 由两个主要部分组成 第一部分(APB1 接口第二部分是后备区域。 与RT_DIV寄存器设置可编程产生 1 秒的 RTC 时间基准 TR_CLK。每一秒到来RTC_CNT 寄存器的值就会加1。RTC_CNT是32位的寄存器。1秒到还可以产生中断。以及溢出中断。以及闹钟中断。当RTC_ALR寄存器与RTC_CNT一样。 我们通过读取RTC_CNT的大小多少秒然后转换成实时时钟年月日时分秒 如果我要设置一个实时时钟转成秒然后设置到RTC_CNT。 不管是设置与获取都是操作RTC_CNT并且单位是秒。具体怎么转成实时时钟要自己写逻辑。 实时时钟都是以1970年1月1日00 00:00为开始。(红色字是重点 由于RTC_CNT是32位的可被初始化为当前的系统时间一个 32 位的时钟计数器按秒钟计算可以记录 4294967296 秒约合 136 年左右。所以最大1970 136。如果大于这个年就会溢出。 3. 代码实现 RTC.h #ifndef _RTC_H #define _RTC_H#include gd32f10x.h #include stdio.h//日期时间结构体 typedef struct{//时间uint8_t hour;uint8_t min;uint8_t sec;//日期uint16_t w_year;uint8_t w_month;uint8_t w_day; }_calender_obj;extern _calender_obj calender; //日期、时间结构体变量 extern uint8_t const month_table[12];void RTC_Config(void); //RTC配置 uint8_t RTC_Init(void); //RTC初始化 void RTC_NVIC_Config(void); //配置RTC中断uint8_t RTC_Set(uint16_t syear, uint8_t smonth, uint8_t sday, uint8_t shour, uint8_t smin, uint8_t ssec); //将设置时间转化为秒数给到RTC_CNT uint8_t RTC_Get(void); //得到RTC_CNT的值并转换为日期时间 uint8_t Is_Leap_Year(uint16_t year); //判断year是否闰年 uint8_t RTC_Get_Week(uint16_t year,uint8_t month,uint8_t day); #endifRTC.c #include RTC.h_calender_obj calender;uint8_t const table_week[12]{0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表 uint8_t const month_table[12]{31,28,31,30,31,30,31,31,30,31,30,31};//平年月份的天数uint32_t timecount 0;//RTC配置 void RTC_Config(void){rcu_periph_clock_enable(RCU_BKPI); //备份区域的时钟要先使能rcu_periph_clock_enable(RCU_PMU); //电源管理时钟使能pmu_backup_write_enable(); //使能备份域访问允许bkp_deinit(); //备份域复位rcu_osci_on(RCU_LXTAL); //使能外部低速时钟rcu_osci_stab_wait(RCU_LXTAL); //等待外部低速时钟稳定rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); //时钟源选择rcu_periph_clock_enable(RCU_RTC); //使能RTC时钟rtc_register_sync_wait(); //等待寄存器与APB1时钟同步rtc_lwoff_wait(); //等待RTC的最后一次操作完成rtc_interrupt_enable(RTC_INT_SECOND);//使能RTC的秒中断rtc_lwoff_wait(); //等待RTC的最后一次操作完成rtc_prescaler_set(32767); /* 配置RTC_PRL的值(时钟分频) */rtc_lwoff_wait(); //等待RTC的最后一次操作完成 }//RTC初始化 uint8_t RTC_Init(void){RTC_Config();RTC_Set(2023, 8, 21, 23, 13, 15);RTC_NVIC_Config();//配置中断的优先级return 0; }// 配置RTC的中断优先级 void RTC_NVIC_Config(void){nvic_irq_enable(RTC_IRQn, 2, 0); }//RTC的中断服务函数 void RTC_IRQHandler(void){if(rtc_flag_get(RTC_FLAG_SECOND) ! RESET){ //判断是否为秒中断rtc_flag_clear(RTC_FLAG_SECOND);RTC_Get();printf(Now time is: %d-%d-%d %d:%d:%d\r\n, calender.w_year, calender.w_month, calender.w_day, calender.hour, calender.min, calender.sec);} }//将设置时间转化为秒数给到RTC_CNT uint8_t RTC_Set(uint16_t syear, uint8_t smonth, uint8_t sday, uint8_t shour, uint8_t smin, uint8_t ssec){uint32_t seccounts 0;uint16_t temp_year 1970;uint8_t temp_month;if(syear1970 || syear2099){ //设置的时间不合理return 1;}//整年的秒数while(temp_year syear){if(Is_Leap_Year(temp_year))seccounts 31622400; //闰年一年的秒数 366* 24 * 60 *60else seccounts 31536000; //平年一年的秒数 365* 24 * 60 *60temp_year;}//整月的秒数smonth--;for(temp_month 0; temp_monthsmonth; temp_month){seccounts (uint32_t)month_table[temp_month]*86400;if(Is_Leap_Year(syear)temp_month1)seccounts 86400; //如果设置的年份是闰年在二月这个月份要加多一天}//日、时、分、秒的处理seccounts (uint32_t)(sday-1)*86400; //整日的秒数 24 * 60 * 60seccounts (uint32_t)shour*3600;//小时seccounts (uint32_t)smin*60; //分seccounts ssec; //秒rtc_lwoff_wait();rtc_counter_set(seccounts);return 0; }//得到RTC_CNT的值并转换为日期时间 uint8_t RTC_Get(void){//把timecount转换为日期时间并赋给calenderuint32_t temp_days timecount/86400;uint16_t temp_year 1970;uint16_t temp_month;uint32_t temp_seconds;timecount rtc_counter_get();//读取RTC_CNT寄存器的值//处理天数中的整年if(temp_days0){while(temp_days365){if(Is_Leap_Year(temp_year)){//如果是闰年if(temp_days365){temp_days - 366;}else{break;}}else{temp_days - 365;}temp_year;}calender.w_year temp_year;//剩下不足一年的再处理整月temp_month 1; //用来临时存放月份while(temp_days 28){ //超过了一个月if(Is_Leap_Year(calender.w_year) temp_month 2){if(temp_days29){ //闰年的2月是29天temp_days - 29;}else{break;}}else{if(temp_days month_table[temp_month-1]){//剩余的天数是不是大于temp_month这个月整月的天数temp_days - month_table[temp_month-1];}else{break;}}temp_month;}}calender.w_month temp_month;calender.w_day temp_days1;//处理剩下的不足一天的秒数时分秒temp_seconds timecount%86400; //不足一天的秒数calender.hour temp_seconds/3600;calender.min (temp_seconds%3600)/60;calender.sec temp_seconds%60;return 0; }uint8_t Is_Leap_Year(uint16_t year){ //判断year是否闰年if(year%4 0){if(year%100 0){if(year%400 0)return 1;elsereturn 0;}else{return 1;}}else{return 0;} }//获得现在是星期几 //功能描述:输入公历日期得到星期(只允许1901-2099年) //year,month,day公历年月日 //返回值星期号 uint8_t RTC_Get_Week(uint16_t year,uint8_t month,uint8_t day) { uint16_t temp2;uint8_t yearH,yearL;yearHyear/100; yearLyear%100; // 如果为21世纪,年份数加100 if (yearH19)yearL100;// 所过闰年数只算1900年之后的 temp2yearLyearL/4;temp2temp2%7; temp2temp2daytable_week[month-1];if (yearL%40month3)temp2--;return(temp2%7); }main.c #include gd32f10x_eval.h#include LED.h #include SYSTICK_DELAY.h #include RTC.hint main(){gd_eval_com_init(EVAL_COM0); // 初始化USART0LED_Init();my_systick_config();printf(This is a RTC DEMO test.\r\n);RTC_Init();while(1){LED1_Toggle();my_systick_delay_ms(1000); //delay 1000 ms} }/*重写fputc*/ int fputc(int ch, FILE *f) {usart_data_transmit(EVAL_COM0,ch); //通过串口把ch给发送出去while(RESET usart_flag_get(EVAL_COM0, USART_FLAG_TBE));return ch; } 通过串口工具来显示实时时钟。先设置然后在读取通过串口显示出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站的管理更新维护中企动力企业电子商务

GNU计划是什么 GNU计划是由理查德斯托曼在1983年9月27日公开发起的自由软件集体协作计划,其目标是创建一套完全自由的操作系统GNU。这个操作系统的内容软件完全以GPL方式发布,意味着用户拥有运行、复制、分发、学习、修改和改进该软件的自由。 GNU的命名…

负责网站开发的岗位怎么做售房网站

本科非计算机专业,在深圳做了四年软件测试工作,从之前的一脸懵的点点点,到现在会点自动化测试,说一点点非计算机专业人员从事软件测试的心得体会,仅供参考交流。 如果你是非计算机专业,毕业不久&#xff0…

泰州网站建设团队兰州做高端网站的公司

递归&#xff1a;通过自我调用解决问题的函数 注意&#xff1a; #1.递归出口 #2.当前问题如何变成子问题 例子&#xff1a;利用递归写一个阶乘函数&#xff0c;F(n),求n的阶乘 def f(n):if n < 1:return 1ans n * f(n-1)return ans print(f(5)) 例子&#xff1a;汉诺塔…

如何在百度上发布广告济南网站优化公司哪家好

1.设计一个只能在堆上创建对象的类 实现方式&#xff1a; 将类的构造函数私有&#xff0c;拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。提供一个静态的成员函数&#xff0c;在该静态成员函数中完成堆对象的创建。代码示例如下&#xff1a; class HeapOnly { publi…

wordpress网站定制怎么做才能设计出好的网站

缓存 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于高速存储媒介上。 缓存的本质就是用空间换时间&#xff0c;牺牲数据的实时性&#xff0c;以服务器内存中的数据暂时代替从数据库读取最新的数据&#xff0c;减少数据库IO&#…

锦州建设信息网站徐州建设企业网站

SQL Injection 就是通过把恶意的sql命令插入web表单递交给服务器&#xff0c;或者输入域名或页面请求的查询字符串递交到服务器&#xff0c;达到欺骗服务器&#xff0c;让服务器执行这些恶意的sql命令&#xff0c;从而让攻击者&#xff0c;可以绕过一些机制&#xff0c;达到直…

企业门户网站建设渠道网站积分商城该怎么建立

创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 1.工厂方法模式&#xff1a;&#xff08;常用&#xff0c;需要掌握&#xff09; 定义&#xff1a;定义了一个创建对象的抽象方法&#xff0c;由子类决定要实例化的类。…

被墙域名黑别人网站vue做门户网站用什么ui

一、Spring Boot简介与背景 在当前的Java应用程序开发领域&#xff0c;Spring Boot 已经成为了一种非常受欢迎的选择。Spring Boot是Spring Framework的一种扩展&#xff0c;旨在简化基于Spring的应用程序的开发和部署过程。它的出现填补了许多传统Spring开发中的空白&#xf…

国内p2p网站建设周末做兼职上什么网站找

U盘是我们生活和工作中最常用的移动储存设备&#xff0c;经常被用来存放各种重要数据&#xff0c;为了保证数据的安全&#xff0c;我们需要加密U盘。那么&#xff0c;U盘加密方法有哪些呢&#xff1f; U盘加密普通方法 如果你的U盘储存数据不多&#xff0c;并且对于加密的要求…

建设银行网站每天几点更新重庆怎么站seo

什么是动态规划 对于动态规划问题&#xff0c;我将拆解为如下五步曲&#xff0c;这五步都搞清楚了&#xff0c;才能说把动态规划真的掌握了&#xff01; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组&a…

陵水网站建设价格富阳网站设计

文章目录 Linux学习笔记操作系统Linux初识Linux的诞生Linux内核Linux发行版 虚拟机VMware安装远程连接Linux系统FinalShellFinalShell连接Linux WSL配置UbuntuLinux常用命令1.入门2.ls命令cd命令3.pwd命令4.相对路径和绝对路径5.mkdir命令6.文件操作命令&#xff08;1&#xff…

个人免费网站建设wordpress 数码主题

进程管理 基本概念进程控制进程上下文切换 线程进程和线程的比较进程通信管道消息队列共享内存信号量信号socket 基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元.并行和并发:状态: 其中挂起是指没有给程序分配实际…

黄埔移动网站建设网站设网站设计

本文重点 梯度下降算法和正规方程是两种常用的机器学习算法,用于求解线性回归问题。它们各自有一些优点和缺点,下面将分别对它们进行详细的讨论。 区别 1. 梯度下降算法是一种迭代的优化算法,通过不断迭代调整参数来逼近最优解。它的基本思想是根据目标函数的梯度方向,沿…

学习网站后台维护网站开发过程阶段

作者推荐 视频算法专题 本文涉及知识点 数学 回溯 字符串 性能优化 LeetCode1307. 口算难题 给你一个方程&#xff0c;左边用 words 表示&#xff0c;右边用 result 表示。 你需要根据以下规则检查方程是否可解&#xff1a; 每个字符都会被解码成一位数字&#xff08;0 - …

郑州优化网站收费标准wordpress 超酷主题

点此进入官网&#xff0c;专家1对1&#xff1a;应用身份管理服务OneAccess_华为云IDaaS-华为云

网站横幅代码网站制作属于什么专业

文章目录 力扣题目工程代码C实现python实现 力扣题目 给你一个长度为 n 下标从 0 开始的字符串 blocks &#xff0c;blocks[i] 要么是 ‘W’ 要么是 ‘B’ &#xff0c;表示第 i 块的颜色。字符 ‘W’ 和 ‘B’ 分别表示白色和黑色。 给你一个整数 k &#xff0c;表示想要 连…

靖江建设行业协会网站淘客优惠券推广网站怎么做

实时时钟RTC是一个独立的定时器。RTC模块拥有一个连续计数的计数器&#xff0c;在软件配置下&#xff0c;可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 在掉电情况下 RTC仍可以独立运行 只要芯片的备用电源…

网站的后台怎么做app营销策略有哪些

横、纵表 定义 横表定义&#xff1a;一个对象的所有属性在一行&#xff0c;列的定义是对象的各个字段 举例&#xff1a;学生成绩表 姓名 Java C语言 ​ 张三 100 88 纵表定义&#xff1a;一个对象的所有属性被分配到多行&#xff0c;列的定义是对象的字段和字段的值 举例…

视频广告联盟平台排名优化工具下载

一、事件与处理 程序在运算过程中发生的一些事情&#xff1a;鼠标单击、键盘的按下... 这些的事件的监控与处理在Qt中不是以信号的方式处理的。 当这些事件发生时会调用QObject类中的功能函数&#xff08;虚函数&#xff09;&#xff0c;所有的控件类都继承了这个类。 常用的鼠…

铜川做网站的公司上海装修公司排名前20

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 网康下一代防火墙(NGFW)是一款可以全面应对应用层威胁的高性能防火墙。通过深入洞察网络流量中的用户、应用和内容&#xff0c;并…