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

联盟文明网站建设有新广州四楚seo顾问

联盟文明网站建设有新,广州四楚seo顾问,百度网盘怎么做网站,怎么装wordpress1. 看门狗 看门狗: 用于设备在 程序异常(死机) 时 可以自动重启设备 实现原理: 通过定时器 进行定时 , 在定时器时间结束前 进行 喂狗 重置定时器时间 若时间到,还没有喂狗,系统重启 本质就是一个定时器, 如何定时? 定时器 本质是对 晶振时钟进行 计… 1. 看门狗 看门狗: 用于设备在 程序异常(死机) 时 可以自动重启设备 实现原理:  通过定时器 进行定时 , 在定时器时间结束前 进行 喂狗 重置定时器时间 若时间到,还没有喂狗,系统重启  本质就是一个定时器, 如何定时? 定时器 本质是对 晶振时钟进行 计数  2. 看门狗定时器实验 实验需求,  5S 无操作 复位重启  1. uart  printf移植   2. 原理图 内部控制器 无外部电路  3. 看门狗控制器  2.1 工作原理图 如图所示  2.2 输出定时器信号的 频率 输出定时器信号的 频率   总线时钟 / (分频值1) / 重载值 ; 或 输出定时器信号的 频率   总线时钟 /固定分频/ (分频值1) / 重载值 ; 看门狗系统时钟为100M  446页 例如 5S ---  0.2hz 0.2hz  100 MHz/ (分频值1) / 重载值 ;    //取固定分频为128  100Mhz/128  781250 0.2hz  781250 / (预分频值1) / 重载值 ; 0.2hz  781250  / (2491)/ 重载值 ; 0.2hz  3125 / 重载值 ; 重载值  15625 2.3 寄存器配置 :  WTCON 看门狗控制寄存器 WTCON   [15:8]  配置预分频值  范围[0-255] 249 [5]      1 使能 wdt  开始定时 [4:3]    固定分频  16  32  64  128 [2]     时间到,是否触发中断信号   1 触发中断  [0]     时间到,是否触发复位信号   1 触发复位  WTDAT 重载寄存器 WTDAT 重载寄存器   [15:0]  取值范围 0-65535 WTCNT 计数寄存器 WTCNT 计数寄存器  [15:0]    取值范围 0-65535 WTCLRINT  中断清除寄存器 WTCLRINT 中断清除寄存器  2.4 写程序 watch_dog------main #includeexynos_4412.h #includeuart.h //看门狗-----复位模式 //初始化wdt实现5S内 不操作 重启 void wdt_init() {//预分频 249WDT.WTCON (WDT.WTCON ~(0XFF8)) | (2498);//固定分频 128----对应的原理图的0x3WDT.WTCON (WDT.WTCON ~(0X33)) | (0x33);//触发复位 [0] 时间到,是否触发复位信号 1 触发复位 WDT.WTCON | 1; //5s时间 // 重载寄存器 WDT.WTDAT 15625;//计数寄存器WDT.WTCNT 15625;//启动wdtWDT.WTCON | 15; }//接收一个字符 char getc() {//等待数据到来while( ! (UART2.UTRSTAT2 1) );return UART2.URXH2 0XFF; }int main() {char c;int a 100;uart_init();printf(hello!a%d\r\n,a);//初始化看门狗wdt_init();while(1){c getc();//通过串口 获取字符putc(c);//输出到串口//喂狗再次将计数寄存器重置WDT.WTCNT 15625;}return 0; } 3. 实现 wdt 中断模式  每秒触发一次中断 使led3闪烁 中断模式:  wdt中断 id 75 1hz  100 MHz/ (分频值1) / 重载值 ;    //取固定分频为128  100Mhz/128  781250 1hz  781250 / (预分频值1) / 重载值 ; 1hz  781250  / (2491)/ 重载值 ; 1hz  3125 / 重载值 ; 重载值  3125 dog_test----main.c #includeexynos_4412.h #includeuart.h//实现 wdt 中断模式 每秒触发一次中断//初始化led3 void led3_init(){//配置引脚模式GPX1.CON (GPX1.CON ~(0xf0)) | (0x1 0);//配置数据寄存器// GPX1.DAT | 1;GPX1.DAT ~1;//配置上下拉寄存器GPX1.PUD ~(0x30); }//中断初始化 exit_init(){//GIC 面向中断源//开启总中断ICDDCR 1;//配置端口中断使能//中断模式: wdt中断 id 75//75/322 75%3211ICDISER.ICDISER2 | 111;//配置端口优先级 优先级设置为5//75/4 18 75%43 ---- [15:8]ICDIPR.ICDIPR18 (ICDIPR.ICDIPR18 ~(0xff24)) | (524);//配置中断源送去哪个cpu处理 0x1表示直送cpu0//寄存器分步格局 与ICDIPR 完全一样 ICDIPTR.ICDIPTR18 (ICDIPTR.ICDIPTR18 ~(0xff24)) | (0x124);//GIC 面向cpu//cpu响应中断使能 1 使能 0 不使能CPU0.ICCICR 1;//配置cpu过滤优先级CPU0.ICCPMR 255;}//中断响应c语言入口函数在汇编汇总调用当irq异常触发时 void do_irq(){//获取中断号int id CPU0.ICCIAR;printf(irq_id %d\n,id);//根据中断id来处理对应的事件switch(id){case 75:printf(exit enable!!!);//点亮led3GPX1.DAT ^ (10); //先清除中断 源头的挂起 看门狗的中断//写入任何值清除WDT.WTCLRINT 8;//在清除GIC分配器层中断挂起 与ICDISER_CPU 结构一样 id:57//置为1 清除ICDICPR.ICDICPR2 | 111;break;}//最后清除cpu中断挂起//写入中断id清除对应中断挂起CPU0.ICCEOIR id;}//看门狗初始化 void dog_init(){//预分频WDT.WTCON (WDT.WTCON ~(0xff8)) | (2498);//固定分频WDT.WTCON (WDT.WTCON ~(0x33)) | (33);//触发中断信号 [2] 时间到,是否触发中断信号 1 触发中断 WDT.WTCON | 12;//重载寄存器WDT.WTDAT 3125;//计数寄存器WDT.WTCNT 3125;//开启看门狗WDT.WTCON | 15;}int main() {int a 100;uart_init();printf(hello!a%d\r\n,a);led3_init();dog_init();exit_init();while(1);return 0; } 4. 使用WDT定时器 中断功能 实现 精确ms延时 msleep(nms) 中断模式:  wdt中断 id 75 1s  1000ms 1ms  0.001s  10^-3 s 1000hz  100 MHz/ (分频值1) / 重载值 ;    //取固定分频为128  100Mhz/16  6250000 1000hz  6250000 / (预分频值1) / 重载值 ; 1000hz  6250000  / (241)/ 重载值 ;1000hz 1000hz  250000 / 重载值 ; 重载值  250 dog_delay----main.c #includeexynos_4412.h #includeuart.h//实现 wdt 中断模式 每毫秒触发一次中断 volatile unsigned int count 0;//延时 ms void delay(unsigned short ms){unsigned int tmp count;//存放刚进入delay函数时 count 的数值// while(count tmpms);//这种算法没有规避溢出问题while(count-tmp ms);//这种算法规避了溢出问题,不必纠结算法用就完事了}//中断初始化 exit_init(){//GIC 面向中断源//开启总中断ICDDCR 1;//配置端口中断使能//中断模式: wdt中断 id 75//75/322 75%3211ICDISER.ICDISER2 | 111;//配置端口优先级 优先级设置为5//75/4 18 75%43 ---- [15:8]ICDIPR.ICDIPR18 (ICDIPR.ICDIPR18 ~(0xff24)) | (524);//配置中断源送去哪个cpu处理 0x1表示直送cpu0//寄存器分步格局 与ICDIPR 完全一样 ICDIPTR.ICDIPTR18 (ICDIPTR.ICDIPTR18 ~(0xff24)) | (0x124);//GIC 面向cpu//cpu响应中断使能 1 使能 0 不使能CPU0.ICCICR 1;//配置cpu过滤优先级CPU0.ICCPMR 255;}//中断响应c语言入口函数在汇编汇总调用当irq异常触发时 void do_irq(){//获取中断号int id CPU0.ICCIAR;//根据中断id来处理对应的事件switch(id){case 75:count;//先清除中断 源头的挂起 看门狗的中断//写入任何值清除WDT.WTCLRINT 8;//在清除GIC分配器层中断挂起 与ICDISER_CPU 结构一样 id:57//置为1 清除ICDICPR.ICDICPR2 | 111;break;}//最后清除cpu中断挂起//写入中断id清除对应中断挂起CPU0.ICCEOIR id;}//看门狗初始化 void dog_init(){//预分频WDT.WTCON (WDT.WTCON ~(0xff8)) | (248);//固定分频WDT.WTCON (WDT.WTCON ~(0x33)) | (03);//触发中断信号 [2] 时间到,是否触发中断信号 1 触发中断 WDT.WTCON | 12;//重载寄存器WDT.WTDAT 250;//计数寄存器WDT.WTCNT 250;//开启看门狗WDT.WTCON | 15; }int main() {int a 100;uart_init();printf(hello!a%d\r\n,a);dog_init();exit_init();while(1){delay(2000);printf(hello world \r\n);delay(5000);printf(hhhhhhhhh \r\n);}return 0; } 5. 简述 static和volatile 关键字的含义和作用。(10分) 1static 关键字 对于变量static 关键字使得局部变量具有静态存储期在程序执行过程中只被初始化一次并且它们的值在多次执行函数时会保持持久性。 对于函数static 关键字将函数的作用域限制在文件内部只能在当前文件中调用函数。 对于类中的成员static 关键字可用于创建静态成员这些成员在所有类对象之间是共享的而不是每个对象拥有自己的副本。 static 关键字也可以用于限制代码的可见性。通过将函数和变量声明为 static可以将它们的作用域限制在当前文件或当前模块对其他文件或模块不可见。 2volatile 关键字 volatile 用于修饰变量用来指示变量可能会被程序以外的因素修改因此编译器在对这些变量进行优化时应该小心处理。 volatile 关键字的主要作用是告诉编译器不要对变量进行优化每次访问变量时都要从内存中读取而不是使用缓存的值。 使用 volatile 关键字可以确保对变量的读取和写入操作不会被编译器优化掉适用于多线程环境、硬件寄存器和中断服务程序等场景。 总结static 关键字用于控制对象的存储方式、作用域和可见性volatile 关键字用于指示变量的可能变动性以防止编译器优化。它们在不同的场景中有不同的作用并且在编写代码时需要根据需要正确使用它们。
http://www.zqtcl.cn/news/916265/

相关文章:

  • 天津做家政的网站购物网站功能模块图
  • 哪个网站好网站赚钱的方式
  • 班级网站建设开题报告在线音乐网站开发摘要
  • 昆山装饰公司网站建设wordpress olve
  • 重庆哪个区最繁华百度seo排名规则
  • 长春火车站高清图片网站商城微信支付宝支付宝支付接口
  • 市场体系建设司在官方网站支付宝手机网站支付
  • dedecms 模版网站网站图标下载
  • 余姚 做网站北京南站
  • 腾讯建设网站视频视频视频中国建筑信息平台
  • 关于政务网站建设的调查问卷搜狗网页版
  • 网站开发工程师优势宁波seo网站
  • 做网站用什么编程软件php网站中水印怎么做
  • p2网站模板做视频官方网站
  • 网站建设季度考核评价工作php做网站有哪些优点
  • 设计某网站的登录和注册程序凡科建站添加文章
  • wordpress 批量打印wordpress 数据库优化
  • 购物网站开发设计类图网络架构指什么
  • 学校网站建设方法wordpress 调用用户名
  • 深圳创建网站公司哈尔滨全员核酸检测
  • 网站开发实施计划宠物网站 html模板
  • 在线生成手机网站商城网站平台怎么做
  • 深圳专业企业网站制作哪家好写作网站新手
  • 福建泉州曾明军的网站桥梁建设期刊的投稿网站
  • 国内设计网站公司wordpress电视主题下载
  • 自贡网站开发河南省建设网站首页
  • 昆明网站推广优化服务器代理
  • wordpress 网站统计插件福建省建设工程职业注册网站
  • 手机移动端网站是什么上海网站设计服务商
  • 多语言网站建设推广孝感门户网