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

营销型网站建设专家网站制作建设公司

营销型网站建设专家,网站制作建设公司,c 怎么和网站做交互,武汉建设论坛遇到的问题: 未开优化是正常执行,打开优化,无法运行,定位到异常语句 //ADC_REG 是ADC结果寄存器地址 uint32 adc *(uint32 *)ADC_REG; uint32 temp adc&0xffff;未优化汇编代码 //uint32 adc *(uint32*)ADC_REG; MOVW R…

遇到的问题:
未开优化是正常执行,打开优化,无法运行,定位到异常语句

//ADC_REG 是ADC结果寄存器地址
uint32 adc = *(uint32 *)ADC_REG;
uint32 temp = adc&0xffff;

未优化汇编代码

//uint32 adc = *(uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
//uint32 temp = adc&0xffff;
UBFX 		R2 , 	R0,		#0,		#16		进行与运算

优化汇编代码

//uint32 adc = *(uint32 *)ADC_REG;
//uint32 temp = adc&0xffff;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDRH		R0,		[R8]					//半字节数据读取数据到R0

问题就在 LDRH指令;由于通用寄存器读取外设寄存器需要按照32位读取,并且需要使用的数据刚好就是半字,编译器优化后就使用LDRH指令进行半字读取,从功能上是等效的,但是由于内核寄存器对外设寄寄存器需要使用32位读取即LDR.W指令,编译器优化使用16位读取即LDRH,故此出现 busfault 。解决办法,即在读取时添加volatile,不使用用编译器优化。

volatile优化汇编代码

//uint32 adc = *(volatile uint32*)ADC_REG;
MOVW	 	R8 ,	#0X0824					//加载高16位地址
MOVT		R8 ,	#4090					//加载低16位地址
LDR.W		R0,		[R8]					//读取32位数据
UBFX 		R0, 	R0,		#0,		#16		//进行与运算
http://www.15wanjia.com/news/4477.html

相关文章:

  • 深圳做互联网教网站公司优化公司组织架构
  • 网站后台报表统计系统泰安seo培训
  • 义乌做公司网站成都网站优化平台
  • 大连网站建设佳熙科技公司百度指数热度榜
  • 1个g网站空间多少钱蚂蚁bt
  • 上海网站建设服务价格百度推广一年收费标准
  • 做设计有哪些地图网站百度下载安装免费版
  • 网站没有robots.txt什么是电商?电商怎么做
  • 如何在ftp给网站做百度自动推送seo推广软件怎样
  • 网站统计代码添加百度小说搜索风云榜
  • 国家企业信息系统公示查询福州seo网址优化公司
  • 如何在微信创建公众号长沙网站优化公司
  • 庆阳市建设工程网上投标网站怎么建网站教程图解
  • 制作网站怎么做的十个有创意的线上活动
  • 毕设做网站需要买域名么网站代运营多少钱一个月
  • 网站建设友链交换武汉seo招聘
  • 饭店的网站建设进行评价北京官网优化公司
  • wordpress上传限制seo外链平台
  • 设计一套企业网站设计报价短视频运营方案策划书
  • 怎么知道网站程序是什么做的南宁百度seo公司
  • 电子商务怎么做网站iis搭建网站
  • 寻找长沙网站建设互联网营销推广渠道
  • 网站被快照被劫持wordpress苏州关键词seo排名
  • 安装wordpress it worksseo的优化策略有哪些
  • dw做静态网站seo怎么弄
  • 什么网站做全景效果图好免费换友情链接
  • 电商网站开发平台上海专业的网络推广
  • 百度免费网站建设怎样做网站平台
  • 专门做熟妇的网站深圳全网营销方案
  • 网站编辑如何做网站关键词排名怎么优化