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

建设银行的网站用户名是什么百度95099如何转人工

建设银行的网站用户名是什么,百度95099如何转人工,wordpress淘宝客商城,工业设计属于什么大类一、原理 Unix#xff1a; 一些系统是使用32bit有符号数存储#xff0c;实际范围为-2,147,483,648到2,147,483,647‌即~ 经过计算int32数据会在2038年1月19日溢出#xff0c;可以看到转换的为北京时间。 STM32的时间戳为无符号时间戳。 我们需要把秒计数器的时间通过计算…一、原理 Unix 一些系统是使用32bit有符号数存储实际范围为-2,147,483,648到2,147,483,647‌即~ 经过计算int32数据会在2038年1月19日溢出可以看到转换的为北京时间。 STM32的时间戳为无符号时间戳。 我们需要把秒计数器的时间通过计算得到秒技术其对应的时间然后根据时区进行偏移考虑到品平年闰年大月小月闰月等。 可以根据c语言官方函数直接计算 UTC、GMT GMT是之前的时间标准UTC是计算了偏移量的现行标准。中国一般使用GMT8/UTC8。Unix时间戳没有闰秒即协调世界时间的功能所以可能秒数会偏差。 时间戳和日期进行转换数据类型 time_t实际上是int64类型用来存储秒计数值 tm类型为定义日期的结构体struct tm 其中year为从1900年的第几年最小应该为70mon月份从0开始wday表示周几yday表示每年的第几天isdst是否使用夏令时1表示用0不用-1表示不知道。 夏令时为在夏天的某段时间将时间提前一个小时。 实际使用 mktime函数原理通过输入的年月日时分秒计算其他参数会自动计算回填可以通过此函数自动计算星期。 strftime函数参数(char *c,size_length,const *char,const struct tm*),其中const *char为格式字符串。函数使用为将const struct tm*的内容通过const *char格式化字符存入长度为size_length的数组char *c中。 其他函数 二、 STM32的BKP备份寄存器RTC实时时钟 1、BKP原理 BKP寄存器数据需要VBT保持供电来进行掉电不丢失实际使用方式和Flash类似。手册建议VBT无外部供电时接到VDD并上100nf的滤波电容。 TAMPER在STM32F103C8T6中在PC13。可以外接上拉电阻和开关接地做保护措施接收到低电平清除寄存器内容。主电源断电后侵入检测仍然有效。RTC校准时钟可以对RTC时钟进行校准。存储RTC时钟校准寄存器可以配合RTC校准时钟对RTC进行校准。 2、BKP的基本结构 3、STM32的RTC外设 STM32的RTC类似DS1302外置实时时钟。RTC输入时钟具有20bit的分配器即可分配1-的分频。 RTC框图 灰色部分为VBT断电供电部分选择RTC时钟-RTCCLK提供时钟-RTC_DIV余数寄存器自减计数溢出后产生TR_CLK并且通过RTC_PRL重装载寄存器进行重装载预分频器原理-通过TR_CLK的RTC_CNT进行计数(为无符号32bit) RTC_CNT的计满溢出中断为RTC_Overflow。其中RTC_ALR为闹钟和RTC_CNT一样的uint32寄存器当RTC_ALR和RTC_CNT计数相同会产生RTC_Alarm信号前往中断系统或唤醒芯片退出睡眠模式WKUP-PA0引脚也可以唤醒设备。RTC_Sencond中断来自TR_CLK的秒计数。中断选项中IE结尾的是中断使能F结尾的是中断标志位。 晶振选择 一般可以选择三个时钟源。根据STM32RTC时钟树可以看到包括2高速、2低俗、2内部、2外部共4个晶振作为晶振源详细可见定时器文章。高速时钟一般为内部运行和主要外设使用低速时钟一般供RTC、看门狗等使用。可以看到LSE OSC指向RTCCLK。且RTC有三个来源时钟。 32.768可直接经过分频1Hz。硬件电路计数器也方便进行计数溢出得到频率信号。一般使用LSE。 4、RTC基本结构 5、电路 CR2032纽扣电池印制面为正极。 6、操作注意事项 PWR是电源管理 第二点寄存器同步操作的原因因为PCLK1APB1总线时钟36MHz在主电源掉电时会停止。为了保证RTC掉电不丢失RTC都是在RTCCLK32.768Hz同步下变更的。所以用APB1总线读取RTC寄存器内容存在时钟不同步问题。时钟不同步会导致读取到错误数据。所以在APB总线刚开启时要进行时钟同步。RTC_CRL为时钟配置使能标志位使用时需要先配置。库函数自动进行了配置。RTC的RTOFF为等待结束标志位。等待即可当RTOFF1才可写入。主要还是因为时钟频率不一样不能立即更新。 三、程序实例 问题1VBT供电导致STM32系统供电指示灯和OLED下电后还会有一些微弱显示。 问题2有些芯片RTC晶振不起振。会导致程序卡死在晶振等待起振的地方。 1、写入BKP备份寄存器和从备份寄存器读出显示到OLED。 将STM32断电、VBT不断电STM32上电查看BKP数据是否掉电保存。保存数据 将VBT断电、STM32断电然后STM32在上电查看BKP数据是否掉电保存。不保存数据 main.c #include stm32f10x.h // Device header #include Delay.h #include OLED.huint16_t Data[4]{0x01,0x02,0x03,0x04};//写入的数据 uint16_t GetData[4];//BKP读出的数据 int main(void){OLED_Init();RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//开启PWR时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);//开启BKP时钟PWR_BackupAccessCmd(ENABLE);//开启RTC和BKP的访问使能BKP_WriteBackupRegister(BKP_DR1,Data[0]);//数据写入在做STM32下电测试时写入代码注释BKP_WriteBackupRegister(BKP_DR2,Data[1]);BKP_WriteBackupRegister(BKP_DR3,Data[2]);BKP_WriteBackupRegister(BKP_DR4,Data[3]);OLED_ShowString(1,1,BKP:);GetData[0] BKP_ReadBackupRegister(BKP_DR1);//数据读出GetData[1] BKP_ReadBackupRegister(BKP_DR2);GetData[2] BKP_ReadBackupRegister(BKP_DR3);GetData[3] BKP_ReadBackupRegister(BKP_DR4);OLED_ShowHexNum(2,1,GetData[0],2);OLED_ShowHexNum(2,4,GetData[1],2);OLED_ShowHexNum(2,7,GetData[2],2);OLED_ShowHexNum(2,10,GetData[3],2);while(1){Delay_ms(200);}return 0; }2、RTC时钟 时间显示如果VBT供电那么STM32复位或下电RTC时钟不会丢失RTC和BKP都可通过VBT供电。 main.c #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include MyRTC.h #include time.h Unixdate GetTime; time_t CNT; time_t DIVData;int main(void){OLED_Init();MyRTC_Init();OLED_ShowString(1,1,Date: - - );OLED_ShowString(2,1,Time: : : );OLED_ShowString(3,1,CNT :);OLED_ShowString(4,1,DIV :);while(1){GetTime GetNowTime();//获取RTC内的时间CNT GetCounter();DIVData GetDIV();OLED_ShowNum(1,6,GetTime.years,4);OLED_ShowNum(1,11,GetTime.months,2);OLED_ShowNum(1,14,GetTime.day,2);OLED_ShowNum(2,6,GetTime.hours,2);OLED_ShowNum(2,9,GetTime.minutes,2);OLED_ShowNum(2,12,GetTime.second,2);OLED_ShowNum(3,6,CNT,10);OLED_ShowNum(4,6,DIVData,10);}return 0; }MyRTC.c #include stm32f10x.h // Device header #include time.h #include MyRTC.h Unixdate SetTime; void MyRTC_Init(void){//时钟配置RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);//使能RTC和BKP访问PWR_BackupAccessCmd(ENABLE);//开启LSE/LSI并等待启动完成RCC_LSEConfig(RCC_LSE_ON);while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)!SET); // RCC_LSICmd(ENABLE);//备用配置LSI为内部时钟并启动 // while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)!SET);//等待启动完成//使用BKP来判断是否断电若断电则进行初始化相当于用BKP做了一个标志位if(BKP_ReadBackupRegister(BKP_DR1)!0xA5A5){//选择LSE为时钟源并使能时钟RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);// RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//备用选择LSI作为时钟源RCC_RTCCLKCmd(ENABLE);//等待时钟同步等待RTC上一次操作完成RTC_WaitForSynchro();RTC_WaitForLastTask();//配置预分频器,LSE32768Hz,分频32768后为1HzLSI40000HzRTC_SetPrescaler(32768-1);//函数内置写CNF1/0进入了配置模式/退出配置模式只有配置模式可以写入寄存器// RTC_SetPrescaler(40000-1);//备用使用LSI作为时钟源 RTC_WaitForLastTask();Time_Init(SetTime);SetNowTime(SetTime);BKP_WriteBackupRegister(BKP_DR1,0xA5A5);}else{//若BKP不断电则不初始化//等待时钟同步等待RTC上一次操作完成RTC_WaitForSynchro();RTC_WaitForLastTask();}}/*** brief 获取当前CNT* param * arg * param * arg * retval None*/ uint32_t GetCounter(void){return RTC_GetCounter(); }/*** brief 获取当前余数值计数值* param * arg * param * arg * retval None*/ uint32_t GetDIV(void){return RTC_GetDivider(); }/*** brief 设置当前时间* param 输入为Unixdate自定义日期类型* arg * param * arg * retval None*/ void SetNowTime(Unixdate UnixdataStructure){struct tm NowTime;time_t count;NowTime.tm_min UnixdataStructure.minutes;NowTime.tm_hour UnixdataStructure.hours;NowTime.tm_mday UnixdataStructure.day;NowTime.tm_mon UnixdataStructure.months;NowTime.tm_year UnixdataStructure.years;NowTime.tm_sec UnixdataStructure.second;count mktime(NowTime)-8*60*60;//设置时间到RTC输入东八区时间偏移到0时区RTC_SetCounter(count);RTC_WaitForLastTask();//等待完成 }/*** brief 获取RTC当前时间* param * arg * param * arg * retval 返回当前RTC对应的日期时间*/ Unixdate GetNowTime(void){struct tm NowTime;Unixdate UnixdataStructure;time_t count;count RTC_GetCounter()8*60*60;//获取当前计数偏移到东八区STM32默认函数为0区时间RTC_WaitForLastTask();//等待完成NowTime *localtime(count);//根据计数值换算成日期时间将值传给NowTimeUnixdataStructure.years NowTime.tm_year1900;UnixdataStructure.months NowTime.tm_mon1;UnixdataStructure.day NowTime.tm_mday;UnixdataStructure.hours NowTime.tm_hour;UnixdataStructure.minutes NowTime.tm_min;UnixdataStructure.second NowTime.tm_sec;return UnixdataStructure; }/*** brief 日期变量初始化* param 输入为日期变量结构体地址直接对其进行改变* arg * param * arg * retval None*/ void Time_Init(Unixdate *UnixdataStructure){UnixdataStructure-years 2025-1900;UnixdataStructure-months 1-1;UnixdataStructure-day 3;UnixdataStructure-hours 23;UnixdataStructure-minutes 59;UnixdataStructure-second 56; } MyRTC.h #ifndef __MYRTC_H #define __MYRTC_H #include stm32f10x.h // Device header//#pragma pack(n)可修改编译器字节对齐数 typedef struct{uint8_t second;//(0-60)suint8_t minutes;//(0-59)minuint8_t hours;//(0-23)huint8_t months;//月(1-12)uint8_t day;//月中第几天(1-31)uint16_t years;//年 }Unixdate;void MyRTC_Init(void); uint32_t GetCounter(void); uint32_t GetDIV(void); Unixdate GetNowTime(void); void Time_Init(Unixdate *UnixdataStructure); void SetNowTime(Unixdate UnixdataStructure); #endif 其他 数据范围原理 int32范围为~数据在计算机中为补码存储 即int32范围: 在最大值情况下符号位为 0其余 31 位均为 1 0111 1111 1111 1111 1111 1111 1111 1111 在最小值情况下符号位为 1其余 31 位全为 0 1000 0000 0000 0000 0000 0000 0000 0000 最高位表示符号位1为负第32bit为如上所以正数可以达到,负数可以达到。 最大值(2^{31} - 1 2147483647)最小值(-2^{31} -2147483648) 同理int16范围为2^15-1  ~  -2^15  (32767~-32768) int8_t范围为2^7-1  ~  -2^7  (127~-128)
http://www.w-s-a.com/news/689447/

相关文章:

  • 欧阳网站建设2022华为云营销季
  • 快速学做网站高水平的大连网站建设
  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况
  • 网站开发工具安卓版专业小程序商城开发
  • 网站不备案影响收录吗深圳住房网站app
  • 交网站建设域名计入什么科目开发平台教程
  • 个人网站定制北京快速建站模板
  • 河南海华工程建设监理公司网站高端论坛网站建设
  • 网站建设网络推广方案图片编辑器免费
  • 如何用dw做网站设计设计头条
  • 网站建设基础及流程北京商场购物中心排名
  • 青州市城乡建设局网站自建网站步骤
  • wordpress文章延迟加载优化设计答案四年级上册语文
  • 做网站源码要给客户嘛怎么在运行打开wordpress
  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp