嵌入式下的c语言(一)

本文介绍了嵌入式系统中选择C语言的原因,强调了其在底层驱动开发中的优势。文章详细阐述了C语言的编译过程,包括预处理、编译、汇编和链接四个阶段,并探讨了GPIO寄存器操作和位操作函数的使用,以帮助理解底层开发的基本思路。同时,文章提到了枚举(enum)在C语言中的作用,以及其在提高代码效率和可读性方面的贡献。
摘要由CSDN通过智能技术生成

为什么是C

> 实际上现在科技这么发达,板子的资源往往是有溢出的,使得C的优势名不是那么的明显, 就比如直接使用MicroPython进行开发,但毫无疑问这类型的开发环境体现出高度的封装和集成性, 导致出现问题时往往一脸懵逼,并且在追求效率的情况下开发底层驱动C语言操作底层的性能无法代替(当然不讨论智能硬件),况且用还是有助于我们学习底层的,所以还是从c开始吧(基于库函数)。

我就是想水1000字领个黑洞

必要的C:

想要操作寄存器直接写代码是这样的:

*unsigned int*)(0x40010c0c) = 0xffff //GPIOB_ODR置位/地址一定是无符号的

显然可读性不强。我们需要达到以下效果:

GPIOB->ODR = 0Xffff

涉及到gcc , 宏等

c语言的编译过程:

预处理

将一些宏定义转换成具体的操作或数;linux shell:

cpp -o *.i(目标文件) *.c

gcc -E -o *.i *.c

编译

将.i文件转换为.s文件;

gcc -S -o *.s(汇编语言) *.c

汇编

讲.s 文件转换为.o文件

gcc -c -o *.o(机器码) *.c

链接

直接链接除.o文件之外还有一些库文件链接成项目 build;

gcc -o build(unix可执行文件) *c

所以从道理上讲,宏定义 define/include/ifdef 等等不算关键字,在预处理阶段就被转换为具体的操作了,完全可以:

int define;

基本语句

常用的宏有:

#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值