CVTE 等公司的嵌入式面试

本文详细介绍了嵌入式编程中const、extern、volatile和static的关键字作用,包括它们在内存管理、程序维护和多线程环境中的应用。同时,讨论了I²C总线的最大挂载数量、STM32的GPIO配置、指针操作、浮空和高阻态的区别,并给出了编程题目的实例。此外,还涉及了结构体、动态内存分配、字符串处理以及C语言中的宏定义与const的区别。

CVTE 等公司的嵌入式面试

1.自我介绍

我叫。。。优势。。。。做过啥设计

2.const 关键字的作用

1.保护定义的变量防止意外的修改,增强程序的健壮性

为什么会被意外的修改呢?有可能时在别的.c文件使用的时候,修改了。

怎么修改,通过指针修改

程序维护,升级的重要性

https://blog.youkuaiyun.com/zhanshen112/article/details/80783258

这里的23例题,讲解了static局部变量如何防止被修改。

看到const 的一个反应是它只读。

4

https://blog.youkuaiyun.com/silently_frog/article/details/96737764?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161175906016780255239714%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161175906016780255239714&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29_name-3-96737764.pc_search_result_hbase_insert&utm_term=const+%25E5%2586%2585%25E5%25AD%2598 关于const 内存分配的知识

3.extern 关键字的作用

说明这个变量在别的C文件已经被声明了。

不能重复定义 ,定义只能允许一次!!

volatile 关键字的作用

被设计用来修饰被不同线程访问和修改的变量

因为不同的线程、硬件,或者操作系统访问的时候是会改变值的

确保指令不会因编译器的优化而省略

既每次都从变量的地址中读取数据

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

static 关键字的作用

存储于进程的全局数据区 (有点类似全局变量)

static 主要是让自己定义的变量,或者函数只能在这个C文件中使用, 你定义的时候不需要考虑别的文件是否由同样的变量,就算有不怕。

注意:全局变量和静态全局变量的区别

1)全局变量的话,一般指的是没有用static所定义的变量,它可以在其它文件被调用,只要在变量前面加上extern就可以了。

2)全局静态变量的话,前面加上static,表示只能在这个文件内使用了,当然了,这也是有好处的,这样不用管其它文件是否定义了相同的变量。即使加了extern 也是不行的

https://baike.baidu.com/item/static/9598919?fr=aladdin#2

static 变量, 静态,因为只能在本文件被调用,所以在程序运行的一开始就被初始化,也是唯一一次初始化

https://blog.youkuaiyun.com/zhanshen112/article/details/80783258

这里的23例题,讲解了static局部变量如何防止同文件中其它函数被修改。

i2c总线最多可以挂多少个ic

i2c总线最多可以挂多少个ic?有哪些因素决定?
1.由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。
2.还受总线电容 400pf的限制,一端测地,一端测线,不能超过400pf

STM32GPIO口中的推挽输出和开漏输出的问题

具体看这里 “https://www.firebbs.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值