C语言编译在固定地址,C语言语法在不同编译器下的问题,简单谈谈地址,试用初学者...

ReceiveData = *(u32 *)&SPI2_RxBUF[1];

ReceiveData = *((u32 *)&SPI2_RxBUF[1]);

对于C语言来说语法上没什么区别,*与& 都是同等优先级,结合方式从右到左。

这两句都是取SPI2_RxBUF[1]的地址,强制转换为32位地址指针,取指针即可得到32位数据,然后赋值给ReceiveData。

bb1f4d0a523873603835bb61e30643e0.png

先看一段代码

d070000d62444eca8b98473a49c877f3.jpg

可以看到程序运行之后:ReceiveData = 0x00010000 这是Windows下QT的编译环境

那么再看一段Keil中STM32仿真时的代码

程序运行到了265行,但是处于262行的等式,可以发现他们并不相等。keil编译环境,

ReceiveData = *(u32 *)&SPI2_RxBUF[1];   该等式ReceiveData值为0x00000000,高位直接被编译器舍弃了。

ReceiveData = *((u32 *)&SPI2_RxBUF[1]); 该等式ReceiveData才是0x00010000,需要加上括号才可以,才成功被赋值。

所以C语言的语法,对于初学者可以大致熟悉即可,不用像教科书那样去抠字眼,考试那样去做题,具体优先级直接加括号实际些。

这个问题我还找了好久才发现,一开始一直以为是SPI数据传输是不是出现了问题,一步步检查还花费了不少时间。

有朋友可能注意到:赋值的时候有两种写法

ReceiveData = *((u32 *)&SPI2_RxBUF[1]);

ReceiveData = (u32)SPI2_RxBUF[2]<<16 | SPI2_RxBUF[1];

基于当前的平台我们可以知道它是小端序。

unsigned short int SPI2_RxBUF[4] = {0x0000,0x0000,0x0001,0xffff};

地址//0x20004000     0x20004002   0x20004004   0x20004006

数据//0x0000,            0x0000,          0x0001,          0xffff

第一种写法

//mov 直接取地址,(u32 *)0x20004002 去取32位数据 1个机器周期

//mov 赋值

第二种写法

//栈,R0 R1 R2 ... R7 CPU内部的寄存器, N个机器周期,耗时间

//mov R1 0x0001

//左移的汇编指令,移16位,

//mov R2 0x0000

//或 R1 R2

//mov 赋值

哈哈,我的汇编不好,只知道大概的意思,简单来书如果是连续内存存储的,直接用取地址的方式快一些,简单而且方便。

如有不对之处望海涵及留言告知。一起学习共同进步

邮箱:fifteenpeng@163.com

——十五

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "linux下c语言编程入门.pdf" 是一本在网盘上提供的适用于Linux系统下的C语言编程入门教程的电子书。它可能包含了C语言基础、语法、数据类型、指针、数组、字符串等内容,并且以适合初学者的方式进行讲解。 通过这本书,你可以学习如何在Linux系统下进行C语言编程。Linux是一个非常流行且强大的操作系统,许多开发者选择使用它来开发软件。C语言是一种底层语言,功能强大且广泛应用于各种领域,如系统编程、嵌入式开发和网络编程等。因此,学习如何在Linux下进行C语言编程将为你的编程生涯打下坚实的基础。 在学习这本教程时,你可以期望了解C语言的基本概念和语法,掌握如何使用它编写简单的程序,并逐步深入了解更高级的概念,如函数、结构体和文件操作等。这本教程可能会提供一些示例和练习,以帮助你更好地理解和应用所学内容。 值得一提的是,这本书在网盘上提供,意味着你可以免费获取它,而不需要花费额外的费用。你只需有一个可用的网络连接,并在网盘上搜索并下载这本书即可开始你的学习之旅。 总而言之,"linux下c语言编程入门.pdf" 是一个适用于Linux系统的C语言入门教程,它将为初学者提供学习C语言编程的基础知识,并帮助他们在Linux系统上开始编写简单的C程序。这本书的免费提供使得获取它变得容易,只需搜索并下载即可开始学习。 ### 回答2: linux下c语言编程入门.pdf 网盘是一个在线存储和分享文件的平台,专门提供给用户上传、下载和传输PDF格式的C语言编程入门教程。 在linux系统下进行C语言编程是一种常见的选择,因为linux系统本身就内置了gcc编译器,可以直接进行C语言程序的编译和运行。而linux下c语言编程入门.pdf 网盘提供了对应的教程,方便初学者快速入门和学习C语言编程。 使用linux下c语言编程入门.pdf 网盘,可以从以下几个方面获得帮助和资源: 1. 学习资料:网盘上提供了C语言编程的入门教程,用户可以下载该PDF文件,通过阅读学习基本的C语言语法、数据类型、控制结构等知识。这些教程通常结构清晰、易于理解,适合初学者入门。 2. 代码示例:网盘上可能还提供了一些C语言编程的代码示例,用户可以通过下载这些示例代码,实践理论知识,加深对C语言编程的理解。这些示例代码可能包括了一些常见的编程练习,能够帮助用户掌握C语言的基本语法和常用函数。 3. 讨论和交流:网盘上往往有一个交流平台,用户可以在这个平台上发布问题、交流心得、分享经验等。通过与其他初学者或有经验的程序员的交流,用户可以互相学习,获取更多关于C语言编程的知识和技巧。 总之,linux下c语言编程入门.pdf 网盘是一个提供C语言编程学习资源的平台,可以帮助初学者系统地学习和掌握C语言编程的基础知识。通过下载相关教程和代码示例,以及参与交流和讨论,用户可以逐步提升自己的C语言编程能力。 ### 回答3: linux下c语言编程入门.pdf是一本介绍在Linux系统下使用C语言进行编程的教程。该教程可以通过网盘进行下载和分享。 在网盘中,用户可以搜索并找到该教程,然后选择下载到本地或者在线阅读。用户可以通过网盘提供的下载链接将该教程保存到自己的电脑或其他设备上,方便随时学习和查阅。 该教程的内容包括C语言的基础知识、语法、数据类型、运算符、流程控制语句等等,适合初学者入门使用。同时,还介绍了在Linux系统中使用C语言进行开发的一些常见工具和技巧,如gcc编译器、Makefile使用、调试工具等等。 通过学习该教程,用户可以了解到C语言在Linux系统中的应用和开发环境的搭建方式。同时,也可以学习到如何使用C语言编写简单的程序和应用,如计算器、猜数字游戏等等。 总而言之,linux下c语言编程入门.pdf是一本在Linux系统中学习和使用C语言编程的入门教程,用户可以通过网盘进行下载和学习。这本教程对于有志于学习C语言编程的初学者来说,是一个很好的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值