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

嵌入式C基础知识(19)

时序

在前面我们说到当处理器要向外设芯片写数据时,需要先将所需访问的外设的地址放在地址总线上,然后,由译码器将地址总线上的数据转换成片选信号,片选信号则使能目标外设芯片,接下来处理器写数据到数据总线上,从而完成一个写操作。显然,在处理器将数据写到数据总线之前地址线上的数据必须一直保留一段时间,否则的话译码器不能长时间的使片选信号有效。

当完成了数据的写操作后,处理器就不需要保证地址总线上的地址有效了。我们可以看出,这一系列的操作都有一定严格的时间顺序的,这称之为时序。时序描述了处理器与外部设备的交互信号 “规程”,大家只有按照这一“规程”来操作,才能保证处理器与外部设备之间能正常的通讯。这好比,我们的道路上的红绿灯,如果我们行人和车辆不按照其指示来通行的话,就会出现事故。通常,采用时序图来描述芯片之间通讯的信号“规程”。

ADDRESS是表示地址总线的,DQ是表示数据总线的,CE是片选信号,且是低电平有效,其宽度要保证在进行读操作时总是有效的。学会看时序图对于做嵌入式系统开发非常有帮助,因为我们不可避免的要与芯片打交道。

在时序图中,通常会标识很多的时间需求信息。在写启动代码时需要初始化各地址空间的片选地址寄存器和读写时序,时序的配置依据就是来自于外设芯片的时间需求,这是芯片手册很重要的一部分内容。当一个地址空间中存在多个外设芯片时,我们需要考虑到其中最慢的外设芯片的时间需求,否则的话有的芯片就不能正常工作。

enum用法

enum是C语言中用来修饰枚举类型变量的关键字,使用enum关键字可以创建一个新的“类型”并指定它可具有的值。要注意的是,枚举类型是一种基本数据类型,一个枚举常量的占的字节数为4个字节,仅仅恰好和int类型的变量占的字节数相同,并不意味着,枚举类型等同于int型。

typedef enum week {

Mon = 1,

Tues,

Wed,

Thurs

} day;

在没有显式说明的情况下,枚举常量默认第一个枚举常量的值为0,往后每个枚举常量依次递增1;

在部分显式说明的情况下,未指定的枚举名的值将依着之前最有一个指定值向后依次递增;

一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换后才能赋值;

同一枚举类型中不同的枚举成员可以具有相同的值;

同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的枚举成员(枚举常量)。

枚举类型的目的是提高程序的可读性,其语法与strut的语法类似。只要是能使用整型常量的地方就可以使用枚举常量,例如,在声明数组的时候可以使用枚举常量表示数组的大小,在switch语句中可以把枚举常量作为标签。

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

相关文章:

  • java 2(程序流程控制)【含例题详解】
  • 基于Conda完成创建多版本python环境
  • 35岁的测试被裁,公司地位还不如00后...
  • vue H5跳转小程序报错:config:fail,Error: 系统错误,错误码:63002,invalid signature
  • 来面试阿里测开工程师,HR问我未来3-5年规划,我给HR画个大饼。
  • 【2373. 矩阵中的局部最大值】
  • Read book Netty in action(Chapter VII)--ChannelHandler和ChannelPipeline
  • react的严格模式 和 解决react useEffect执行两次
  • C++中的STL
  • 【沐风老师】3dmax一键窗户生成器插件使用方法详解
  • 【图像处理】数字图像处理基础(分辨率,像素,显示...)
  • UE实现相机飞行效果CesiumForUnreal之DynamicPawn飞行原理浅析
  • AIGC被ChatGPT带火!底层基础算力有望爆发式增长
  • 【链表OJ题(一)】移除链表元素
  • 【解锁技能】学会Python条件语句的终极指南!
  • 如何通过rem实现移动端的适配?
  • 【论文阅读】-姿态识别
  • 3.1 模拟栈+表达式求值
  • 【Python语言基础】——Python 创建表
  • 外贸建站,为什么别人的询盘更多更精准?
  • Gateway集成Netty服务
  • SpringMVC控制层private方法中出现注入的service对象空指针异常
  • 【Unity】P4 脚本文件(基础)
  • (2023版)零基础入门网络安全/Web安全,收藏这一篇就够了
  • Vue3电商项目实战-登录模块2【05-登录-表单校验、06-登录-消息提示组件封装、07-登录-账户登录、08-登录-手机号登录、09-退出登录】
  • Python 中都有哪些常见的错误和异常?
  • 51单片机-1
  • 【Azure 架构师学习笔记】-Azure Data Factory (4)-触发器详解-事件触发器
  • 【项目设计】高并发内存池(三)[CentralCache的实现]
  • 2023年,35岁测试工程师只能被“优化裁员”吗?肯定不是····