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

网站微信二维码侧边栏漂浮框常州制作网站信息

网站微信二维码侧边栏漂浮框,常州制作网站信息,交易网站开发合同,克隆网站后怎么做一、RTC原理详解 1、6U内部自带到了一个RTC外设#xff0c;确切的说是SRTC。6U和6ULL的RTC内容在SNVS章节。6U的RTC分为LP和HP。LP叫做SRTC#xff0c;HP是RTC#xff0c;但是HP的RTC掉电以后数据就丢失了#xff0c;即使用了纽扣电池也没用。所以必须要使用LP#xff0c…一、RTC原理详解 1、6U内部自带到了一个RTC外设确切的说是SRTC。6U和6ULL的RTC内容在SNVS章节。6U的RTC分为LP和HP。LP叫做SRTCHP是RTC但是HP的RTC掉电以后数据就丢失了即使用了纽扣电池也没用。所以必须要使用LP也就是SRTC。 SNVS章节有些是跟加密有关的需要与NXP签订NDA协议才可以拿到。 RTC分为SNVS_LP和SNVS_HP 如果做产品建议使用外置RTC芯片PCF8563。 RTC很类似定时器外接32.768KHz的晶振然后就开始计时RTC使用两个寄存器来保存计数值。 RTC使用很简单打开RTC然后RTC就开始工作我们要做的就是不断地读取RTC计数寄存器获取时间值或者向RTC计数器写入时间值也就是调整时间。 SNVS_HPCOMR的bit31置1表示所有的软件都可以访问SNVS所有寄存器。Bit8也是和安全有关的我们置1也可以不置1. SNVS_LPCR寄存器bit0置1开始SRTC功能。 SNVS_LPSRTCMR的bit14:0为RTC计数寄存器的高15位 SNVS_LPSRTCLR是低32为RTC计数器与LPSRTCMR共同组成了SRTC计数器每1秒数据加1。 6U的RTC模式从1970年1月1日0时0点0分0秒。 二、时间乱码的问题 1、问题 当我们按照6U的参考手册编写代码读取SRTC的LPSRTCMR和LPSRTCLR获取时间值的时候发现按照手册的说法时间是错误的。 手册上写的LPSRTCMR是SRTC的高15bit。LPSRTCLR寄存器是SRTC的低32位。RTC计数器是47bit。 2、问题解决方法 LPSRTCMR作为SRTC计数器的高15位但是LPSRTCLR寄存器bit3115作为SRTC计数器的低17位。相当于SRTC的计数器是个32位的。不是47位 三、代码 参考7、I.MX6U参考资料\3、I.MX6ULL SDK包\devices\MCIMX6Y2\drivers //bsp_rtc.c #include bsp_rtc.h #include stdio.h/* * 描述:初始化RTC*/ void rtc_init(void) {/** 设置HPCOMR寄存器* bit[31] 1 : 允许访问SNVS寄存器一定要置1* bit[8] 1 : 此位置1需要签署NDA协议才能看到此位的详细说明* 这里不置1也没问题*/SNVS-HPCOMR | (1 31) | (1 8);#if 0struct rtc_datetime rtcdate;rtcdate.year 2018U;rtcdate.month 12U;rtcdate.day 13U;rtcdate.hour 14U;rtcdate.minute 52;rtcdate.second 0;rtc_setDatetime(rtcdate); //初始化时间和日期 #endifrtc_enable(); //使能RTC}/** 描述: 开启RTC*/ void rtc_enable(void) {/** LPCR寄存器bit0置1使能RTC*/SNVS-LPCR | 1 0; while(!(SNVS-LPCR 0X01));//等待使能完成}/** 描述: 关闭RTC*/ void rtc_disable(void) {/** LPCR寄存器bit0置0关闭RTC*/SNVS-LPCR ~(1 0); while(SNVS-LPCR 0X01);//等待关闭完成 }/** description : 判断指定年份是否为闰年闰年条件如下:* param - year: 要判断的年份* return : 1 是闰年0 不是闰年*/ unsigned char rtc_isleapyear(unsigned short year) { unsigned char value0;if(year % 400 0)value 1;else {if((year % 4 0) (year % 100 ! 0))value 1;else value 0;}return value; }/** description : 将时间转换为秒数* param - datetime: 要转换日期和时间。* return : 转换后的秒数*/ unsigned int rtc_coverdate_to_seconds(struct rtc_datetime *datetime) { unsigned short i 0;unsigned int seconds 0;unsigned int days 0;unsigned short monthdays[] {0U, 0U, 31U, 59U, 90U, 120U, 151U, 181U, 212U, 243U, 273U, 304U, 334U};for(i 1970; i datetime-year; i){days DAYS_IN_A_YEAR; /* 平年每年365天 */if(rtc_isleapyear(i)) days 1;/* 闰年多加一天 */}days monthdays[datetime-month];if(rtc_isleapyear(i) (datetime-month 3)) days 1;/* 闰年并且当前月份大于等于3月的话加一天 */days datetime-day - 1;seconds days * SECONDS_IN_A_DAY datetime-hour * SECONDS_IN_A_HOUR datetime-minute * SECONDS_IN_A_MINUTE datetime-second;return seconds; }/** description : 设置时间和日期* param - datetime: 要设置的日期和时间* return : 无*/ void rtc_setdatetime(struct rtc_datetime *datetime) {unsigned int seconds 0;unsigned int tmp SNVS-LPCR; rtc_disable(); /* 设置寄存器HPRTCMR和HPRTCLR的时候一定要先关闭RTC *//* 先将时间转换为秒 */seconds rtc_coverdate_to_seconds(datetime);SNVS-LPSRTCMR (unsigned int)(seconds 17); /* 设置高16位 */SNVS-LPSRTCLR (unsigned int)(seconds 15); /* 设置地16位 *//* 如果此前RTC是打开的在设置完RTC时间以后需要重新打开RTC */if (tmp 0x1)rtc_enable(); }/** description : 将秒数转换为时间* param - seconds : 要转换的秒数* param - datetime: 转换后的日期和时间* return : 无*/ void rtc_convertseconds_to_datetime(unsigned int seconds, struct rtc_datetime *datetime) {unsigned int x;unsigned int secondsRemaining, days;unsigned short daysInYear;/* 每个月的天数 */unsigned char daysPerMonth[] {0U, 31U, 28U, 31U, 30U, 31U, 30U, 31U, 31U, 30U, 31U, 30U, 31U};secondsRemaining seconds; /* 剩余秒数初始化 */days secondsRemaining / SECONDS_IN_A_DAY 1; /* 根据秒数计算天数,加1是当前天数 */secondsRemaining secondsRemaining % SECONDS_IN_A_DAY; /*计算天数以后剩余的秒数 *//* 计算时、分、秒 */datetime-hour secondsRemaining / SECONDS_IN_A_HOUR;secondsRemaining secondsRemaining % SECONDS_IN_A_HOUR;datetime-minute secondsRemaining / 60;datetime-second secondsRemaining % SECONDS_IN_A_MINUTE;/* 计算年 */daysInYear DAYS_IN_A_YEAR;datetime-year YEAR_RANGE_START;while(days daysInYear){/* 根据天数计算年 */days - daysInYear;datetime-year;/* 处理闰年 */if (!rtc_isleapyear(datetime-year))daysInYear DAYS_IN_A_YEAR;else /*闰年天数加一 */daysInYear DAYS_IN_A_YEAR 1;}/*根据剩余的天数计算月份 */if(rtc_isleapyear(datetime-year)) /* 如果是闰年的话2月加一天 */daysPerMonth[2] 29;for(x 1; x 12; x){if (days daysPerMonth[x]){datetime-month x;break;}else{days - daysPerMonth[x];}}datetime-day days;}/** description : 获取RTC当前秒数* param : 无* return : 当前秒数 */ unsigned int rtc_getseconds(void) {unsigned int seconds 0;seconds (SNVS-LPSRTCMR 17) | (SNVS-LPSRTCLR 15);return seconds; }/** description : 获取当前时间* param - datetime: 获取到的时间日期等参数* return : 无 */ void rtc_getdatetime(struct rtc_datetime *datetime) {unsigned int seconds 0;seconds rtc_getseconds();rtc_convertseconds_to_datetime(seconds, datetime); }//bsp_rtc.h #ifndef _BSP_RTC_H #define _BSP_RTC_H #include imx6ul.h/* 相关宏定义 */ #define SECONDS_IN_A_DAY (86400) /* 一天86400秒 */ #define SECONDS_IN_A_HOUR (3600) /* 一个小时3600秒 */ #define SECONDS_IN_A_MINUTE (60) /* 一分钟60秒 */ #define DAYS_IN_A_YEAR (365) /* 一年365天 */ #define YEAR_RANGE_START (1970) /* 开始年份1970年 */ #define YEAR_RANGE_END (2099) /* 结束年份2099年 *//* 时间日期结构体 */ struct rtc_datetime {unsigned short year; /* 范围为:1970 ~ 2099 */unsigned char month; /* 范围为:1 ~ 12 */unsigned char day; /* 范围为:1 ~ 31 (不同的月天数不同).*/unsigned char hour; /* 范围为:0 ~ 23 */unsigned char minute; /* 范围为:0 ~ 59 */unsigned char second; /* 范围为:0 ~ 59 */ };/* 函数声明 */ void rtc_init(void); void rtc_enable(void); void rtc_disable(void); unsigned int rtc_coverdate_to_seconds(struct rtc_datetime *datetime); unsigned int rtc_getseconds(void); void rtc_setdatetime(struct rtc_datetime *datetime); void rtc_getdatetime(struct rtc_datetime *datetime) ;#endif//main.c /************************************************************** 描述 : I.MX6U开发板裸机实验17 RTC实时时钟实验 其他 : 本实验学习如何编写I.MX6U内部的RTC驱动使用内部RTC可以实现一个实时时钟。 **************************************************************/ #include bsp_clk.h #include bsp_delay.h #include bsp_led.h #include bsp_beep.h #include bsp_key.h #include bsp_int.h #include bsp_uart.h #include bsp_lcd.h #include bsp_lcdapi.h #include bsp_rtc.h #include stdio.h/** description : main函数* param : 无* return : 无*/ int main(void) {unsigned char key 0;int i 3, t 0;char buf[160];struct rtc_datetime rtcdate;unsigned char state OFF;int_init(); /* 初始化中断(一定要最先调用) */imx6u_clkinit(); /* 初始化系统时钟 */delay_init(); /* 初始化延时 */clk_enable(); /* 使能所有的时钟 */led_init(); /* 初始化led */beep_init(); /* 初始化beep */uart_init(); /* 初始化串口波特率115200 */lcd_init(); /* 初始化LCD */rtc_init(); /* 初始化RTC */tftlcd_dev.forecolor LCD_RED;lcd_show_string(50, 10, 400, 24, 24, (char*)ZERO-IMX6UL RTC TEST); /* 显示字符串 */lcd_show_string(50, 40, 200, 16, 16, (char*)ATOMALIENTEK); lcd_show_string(50, 60, 200, 16, 16, (char*)2019/3/27); tftlcd_dev.forecolor LCD_BLUE;memset(buf, 0, sizeof(buf));while(1){if(t100) //1s时间到了{t0;printf(will be running %d s......\r, i);lcd_fill(50, 90, 370, 110, tftlcd_dev.backcolor); /* 清屏 */sprintf(buf, will be running %ds......, i);lcd_show_string(50, 90, 300, 16, 16, buf); i--;if(i 0)break;}key key_getvalue();if(key KEY0_VALUE){rtcdate.year 2018;rtcdate.month 1;rtcdate.day 15;rtcdate.hour 16;rtcdate.minute 23;rtcdate.second 0;rtc_setdatetime(rtcdate); /* 初始化时间和日期 */printf(\r\n RTC Init finish\r\n);break;}delayms(10);t;}tftlcd_dev.forecolor LCD_RED;lcd_fill(50, 90, 370, 110, tftlcd_dev.backcolor); /* 清屏 */lcd_show_string(50, 90, 200, 16, 16, (char*)Current Time:); /* 显示字符串 */tftlcd_dev.forecolor LCD_BLUE;while(1) { rtc_getdatetime(rtcdate);sprintf(buf,%d/%d/%d %d:%d:%d,rtcdate.year, rtcdate.month, rtcdate.day, rtcdate.hour, rtcdate.minute, rtcdate.second);lcd_fill(50,110, 300,130, tftlcd_dev.backcolor);lcd_show_string(50, 110, 250, 16, 16,(char*)buf); /* 显示字符串 */state !state;led_switch(LED0,state);delayms(1000); /* 延时一秒 */}return 0; }
文章转载自:
http://www.morning.jbxmb.cn.gov.cn.jbxmb.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.pqhgn.cn.gov.cn.pqhgn.cn
http://www.morning.tcylt.cn.gov.cn.tcylt.cn
http://www.morning.ngkng.cn.gov.cn.ngkng.cn
http://www.morning.rfldz.cn.gov.cn.rfldz.cn
http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn
http://www.morning.drytb.cn.gov.cn.drytb.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.rdtq.cn.gov.cn.rdtq.cn
http://www.morning.gllhx.cn.gov.cn.gllhx.cn
http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn
http://www.morning.mplb.cn.gov.cn.mplb.cn
http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn
http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn
http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn
http://www.morning.lkmks.cn.gov.cn.lkmks.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.fnjrh.cn.gov.cn.fnjrh.cn
http://www.morning.wjlhp.cn.gov.cn.wjlhp.cn
http://www.morning.lwbhw.cn.gov.cn.lwbhw.cn
http://www.morning.gfmpk.cn.gov.cn.gfmpk.cn
http://www.morning.mdwtm.cn.gov.cn.mdwtm.cn
http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn
http://www.morning.xymkm.cn.gov.cn.xymkm.cn
http://www.morning.drhnj.cn.gov.cn.drhnj.cn
http://www.morning.fmtfj.cn.gov.cn.fmtfj.cn
http://www.morning.twwts.com.gov.cn.twwts.com
http://www.morning.lhxrn.cn.gov.cn.lhxrn.cn
http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn
http://www.morning.ntyanze.com.gov.cn.ntyanze.com
http://www.morning.glpxx.cn.gov.cn.glpxx.cn
http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn
http://www.morning.nffwl.cn.gov.cn.nffwl.cn
http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn
http://www.morning.lznqb.cn.gov.cn.lznqb.cn
http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn
http://www.morning.sflnx.cn.gov.cn.sflnx.cn
http://www.morning.ryztl.cn.gov.cn.ryztl.cn
http://www.morning.xczyj.cn.gov.cn.xczyj.cn
http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn
http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn
http://www.morning.qdsmile.cn.gov.cn.qdsmile.cn
http://www.morning.tbstj.cn.gov.cn.tbstj.cn
http://www.morning.lrmts.cn.gov.cn.lrmts.cn
http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn
http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn
http://www.morning.rksnk.cn.gov.cn.rksnk.cn
http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn
http://www.morning.qjlkp.cn.gov.cn.qjlkp.cn
http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn
http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn
http://www.morning.bnylg.cn.gov.cn.bnylg.cn
http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn
http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn
http://www.morning.i-bins.com.gov.cn.i-bins.com
http://www.morning.wqpm.cn.gov.cn.wqpm.cn
http://www.morning.pjxw.cn.gov.cn.pjxw.cn
http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn
http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.morning.wqnc.cn.gov.cn.wqnc.cn
http://www.morning.skksz.cn.gov.cn.skksz.cn
http://www.morning.pbksb.cn.gov.cn.pbksb.cn
http://www.morning.dhpjq.cn.gov.cn.dhpjq.cn
http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn
http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn
http://www.morning.ymrq.cn.gov.cn.ymrq.cn
http://www.morning.qnyf.cn.gov.cn.qnyf.cn
http://www.morning.ylljn.cn.gov.cn.ylljn.cn
http://www.morning.qygfb.cn.gov.cn.qygfb.cn
http://www.morning.msgnx.cn.gov.cn.msgnx.cn
http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn
http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn
http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn
http://www.morning.xqltq.cn.gov.cn.xqltq.cn
http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn
http://www.morning.ltpph.cn.gov.cn.ltpph.cn
http://www.morning.wjrtg.cn.gov.cn.wjrtg.cn
http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn
http://www.tj-hxxt.cn/news/235434.html

相关文章:

  • 用php做网站上传图片的代码福建建筑信息平台
  • 支付宝手机网站支付免费logo素材
  • 精品课程网站的设计与实现江苏建设工程
  • 法国网站域名wordpress 判断是否页面
  • 广州哪里有做网站推广ui设计兼职平台有哪些
  • php网站开发实例教程书免费人才招聘网站
  • 网站设计好以后怎么上线东莞找工作求职招聘
  • 国外有哪些做建筑材料的网站seo快排公司哪家好
  • 潍坊网站建设选聚搜网络好浙江省建设厅网站在哪里
  • 织梦做的网站为什么显示404四字顺口名字公司
  • 公司网站案例展示网站开发 聊天窗口
  • 江苏网站建设找拉米拉wordpress登录可见插件
  • 哈尔滨建设工程招聘信息网站jsp如何做网站界面
  • 网站设计风格及特点wordpress不能显示分类页
  • 提供网站制作公司电话建筑工程网上申报
  • WordPress显示网站加载时间好看的模板网站建设
  • 网站引导页动态效果怎么做的wordpress上长缺少临时文件夹
  • 网上免费个人网站整套vi设计都包含哪些
  • 网站建设背景和目标包子店vi设计
  • 表单大师 做网站注册网站登录
  • 许昌公司网站开发2024近期时事热点素材
  • 怀宁做网站wordpress聊天系统
  • 视频 播放网站怎么做的重庆网站建设 菠拿拿
  • 网站开发 博客学做app
  • 单位建网站手机设置管理网站
  • 灯塔建设网站wordpress主题加载语言包
  • 怎么做像小刀网一样的网站工业设计网站哪个好用
  • 局域网视频网站建设室内设计师联盟账号
  • 淘宝客网站建设平台网站开发的在淘宝上是什么类目
  • 网站建设需要学那些中国50大电商排名