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

嵌入式C基础知识(7)

是否可以传递任何参数并从 ISR 返回值

不可以。不能传递任何参数并从 ISR 返回值。 ISR 不返回任何内容,并且不允许传递任何参数。 当硬件或软件事件发生时调用 ISR,而代码不会调用它。 这就是为什么不向 ISR 传递参数的原因。 由于代码不调用 ISR,因此没有调用代码来读取 ISR 的返回值。 这就是 ISR 不返回任何值的原因。

extern 关键字的作用

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明此函数/变量是在别处定义,但是要再此处引用。注意extern不能用来修饰局部变量。具体应用示例:

在a.c文件中

unsignedcharkey;voidfunc(void){...}

在main.c文件中

#include"a.h"

externunsignedcharkey;externvoidfunc(void);intmain(){if(key=="a")func();return0;}

局部变量能否和全局变量重名?

能,局部会屏蔽全局。

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

如何理解中断延迟

中断延迟是处理器响应中断请求所需的时钟周期数。 这个时钟周期数是中断请求的断言和中断处理程序的第一条指令之间的计数。

Cortex-M 处理器系列的中断延迟:

Cortex-M 处理器的中断延迟非常低。 下表显示了具有零等待状态存储器系统的 Cortex-M 处理器的中断延迟。

处理器

零等待状态内存的周期

Cortex-M0

16

Cortex-M0+

15

Cortex-M3

12

Cortex-M4

12

Cortex-M7

12

C语言中的声明和定义

函数和变量的声明不会分配内存,但定义会分配相应的内存空间。

函数和变量的声明可以有很多次,但定义只有一次。

函数的定义和声明方式都是默认extern的,即函数默认是全局的。可以采用static实现对函数的隐藏。

变量的声明和定义默认都是局部的,在当前编译单元或者文件中可用。

引用与指针有什么区别?

答:

1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

如何减少中断延迟?

有几种方法可以减少 Embedded C 中的中断延迟。中断延迟取决于许多因素。 以下是一些因素的列表:

  • 平台和中断控制器

  • CPU时钟速度

  • 定时器频率

  • 缓存配置

  • 应用程序等

因此,可以使用正确选择平台和处理器来轻松降低中断延迟。还可以通过缩短 ISR 并避免在 ISR 中调用函数来减少中断延迟。

C语言的变量

(1) C语言变量的基本类型有哪些?

五种基本类型:char, int, float, double, void. void是空类型,一般用于限制函数的返回和参数以及用来定义空指针。

(2) 局部变量和全局变量区别?

- 生存周期不同:局部变量存在于模块中,生存期从模块开始到结束。

- 存储位置不同:局部变量保存在栈空间内,栈地址是不固定的,由编译器自动分配和释放,全局变量保存在静态存储区的数据段中。

(3) 局部变量和全局变量是否可以重名?

可以,但是局部变量会屏蔽全局变量,如果在程序中使用因为重名被屏蔽的全局变量,需要在变量前加::。

inta=10;intmain(){inta=9;printf("%d\n",a);//输出局部变量

printf("%d\n",::a);//输出全局变量

return0;}

http://www.lryc.cn/news/2973.html

相关文章:

  • 大数据系列之:安装pulsar详细步骤
  • 色彩-基础理论
  • 1629_MIT_6.828_xv6_chapter1操作系统的组织
  • 基于Golang哈希算法监控配置文件变化
  • 关于一笔画问题的一些思考(欧拉路Fleury算法、逐步插入回路法、以及另一种可能的解法)
  • vlookup怎么用详细步骤,看这一篇就够了
  • 雅思经验(9)之小作文常用词汇总结
  • 【Python语言基础】——Python NumPy 数组创建
  • 【大数据】Hadoop-Kms 安装及相关详细配置,看完你就会了
  • SpringCloud分布式框架
  • Csss属性display,visibility区别,对渲染页面的影响
  • 怎么给笔记本电脑外接两台显示器?
  • 生成树协议 — STP
  • git必会的知识点
  • 【hello, world】计算机系统漫游
  • 1. SpringMVC 简介
  • 《解谜三星堆:开启中华文明之门》-范勇 笔记
  • 锐捷(十四)mpls vxn optionc的关键问题所在和具体问题分析
  • Python语言零基础入门教程(十四)
  • Https 协议超强讲解(一)
  • 5.Redis 实现点赞 优化登陆(验证码 token..)
  • scscanner:一款功能强大的大规模状态码扫描工具
  • Word 和 LaTeX 文档相互转换
  • python自动发送邮件实现
  • ccc-Classification-李宏毅(4)
  • Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)
  • 【C++/QT】QT5.6解析Excel教程(qtxlsx)
  • C++之智能指针
  • Redis实战-session共享之修改登录拦截器
  • 数据可视化,流程化处理pycharts-