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

工商管理网站找做废薄膜网站

工商管理网站,找做废薄膜网站,wordpress win,前端vue在CPU处理过程中#xff0c;需要将内存中的数据载入到寄存器中才能计算#xff0c;所以可能涉及到一个问题#xff0c;如果内存中的数据被更改了#xff0c;但是寄存器还是使用的旧数据#xff0c;这样就会造成数据的不同步。 一、volatile关键字的作用 使用volatile关键…        在CPU处理过程中需要将内存中的数据载入到寄存器中才能计算所以可能涉及到一个问题如果内存中的数据被更改了但是寄存器还是使用的旧数据这样就会造成数据的不同步。 一、volatile关键字的作用 使用volatile关键字定义变量就是告诉编译系统这个变量可能会被意想不到的被改变。编译器就不会对变量进行代码优化。编译器在编译代码时优化器每次遇到这个变量都会从内存中重新读取内容而不会使用保存在寄存器里的备份内容。 二、使用volatile的场景 在中断服务程序中修改的供其它程序检测的变量(非auto)通常需要定义为volatile      中断服务可能会频繁进入当变量被加载到寄存器中马上就要被使用时这时又来了一个中断修改了内存中的变量如果不加volatile被使用的变量就是寄存器中保存的也即修改之前的。 在多任务环境下各任务间共享的标志通常也需要定义为volatile 这个情形同中断可能会使数据不同步。 存储器映射的硬件寄存器通常也需要定义为volatile因为每次对它的读写都可能有不同意义 这个情形也类似两种存储器的数据被转移到了硬件寄存器这时存储器的数据被更改了但是程序还可能使用的是硬件寄存器中的数据这也是数据不同步。 在stm32中内存被映射到各种外设上外设有自己的寄存器组比如GPIO寄存器组 typedef struct {__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR; } GPIO_TypeDef;#define __IO volatile 可以看到寄存器都使用了__IO进行修饰而__IO就是根据volatile定义的一个宏。 三、案例 1、逻辑分析仪 在使用keil 5分析变量的波形时变量循环从1-0-1,但是波形一直是处理于低没有起伏。 uint32_t flag1;void delay( uint32_t count ) {for (; count!0; count--); }int main(void) {while(1) {flag1 1;delay( 1000 );flag1 0;delay( 1000 );} }分析结果如下所示  在flag1用volatile修饰之后波形如下所示  2、 硬件寄存器 在直接操作寄存器进行输出时,比如引脚拉到了LED上LED另一端接高电平引脚输出0是会点亮当ODR不使用volatile修饰时下面的操作编译器优化之后可能就只有  GPIOB-ODR 0x00000001 这一句代码了那么灯是不会亮的但是实际上灯会闪烁的因为ODR就是用volatile修饰的。 GPIOB-ODR 0x00000001; delay(100); GPIOB-ODR 0x00000000; delay(100); GPIOB-ODR 0x00000001; 四、面试 volatile 常见的几个面试题 1、一个参数既可以是const还可以是volatile吗 可以针对的角度不同可以这样理解 const 告诉程序员 这是一个常量不要更改它在尝试更改时编译器会报错 volatile告诉编译器不要对变量做任何优化直接从内存中读取内容。 2、一个指针可以是volatile 吗 可以指针和普通变量一样有时也有变化程序的不可控性比如一个中服务子程序修改一个指向buffer的指针时即从一个buffer指向另一个buffer如果不加volatile面临的问题如同 二、使用volatile的场景 中的一样。 3、下面的函数有什么错误 int square(volatile int*ptr) {return*ptr * *ptr; } 该程序的目的是用来返指针*ptr指向值的平方但是由于*ptr指向一个volatile型参数编译器将产生类似下面的代码 int square(volatile int*ptr) {int a,b;a *ptr;b *ptr;return a * b; } 由于*ptr的值可能被意想不到地该变因此a和b可能是不同的。结果这段代码可能返不是你所期望的平方值正确的代码如下 long square(volatile int*ptr) {int a *ptr;return a * a; } - 注意频繁地使用volatile很可能会增加代码尺寸和降低性能,因此要合理的使用volatile
http://www.hkea.cn/news/14385513/

相关文章:

  • 四川省城乡建设厅官方网站wordpress文章加版权声明
  • wap网站自动站长工具a级
  • 网站建设素材湖南省建设厅假网站
  • 甘肃省建设工程168网站个人如何建立微信公众号
  • 网站服务器端口如何做防护网站找人做的他能登管理员吗
  • 口碑好的盘锦网站建设双通网络网站建设
  • php网站建设教程东莞营销型网站建站
  • 网站建设入门教学wordpress淘宝客单页主题
  • 网站建设公司商务网站项目书上蔡县住房和城乡建设局网站
  • 用什么网站能直接做dj怎么优化网站排名具体怎么做
  • 网站被挂马 301域名申请了怎么做网站
  • 商业网站备案流程网推获客平台
  • 微信小程序开发网站联雅网站建设公司
  • 什么直播可以做游戏视频网站吗电商推广都有哪些诀窍
  • 新网站关键词怎么优化网站代码制作软件
  • 微信订阅号网站开发wordpress 计算器插件
  • 淄博做网站的公司有哪些做煤层气的网站
  • 西安网络建站在线设计平台用户规模
  • 医疗网站有哪些网络管理系统提供网络管理需要的大量运算和记忆资源
  • 做网站外快站酷设计网站怎样下载图片
  • 网站备案号什么情况下被注销中国农村建设网站
  • 做网站和做公众号深圳做外贸网站公司哪家好
  • 手机网站建设报价表许昌企业网站去哪开发
  • 网站平台设计费用多少如何快速搭建个人网站
  • 我想阻止一个网站要怎么做旅游网站建设策划书案例
  • 游戏网站建设表格新余建站公司
  • 多网站绑定域名美团网站开发合作商
  • 高端网站建设系统vs做网站各种控件的使用
  • 六安做网站购买深圳网站定制开发
  • 龙岗区住房和建设局官方网站医生在线咨询