首页 > 产品 > 微控制器 (MCU) 和处理器 > C2000入门基础 >

C2000

最新课程

热门课程

C2000入门基础(四)—C2000的时钟和中断系统

讲完他的复位的话 我们接下来看一下它这个中断 理解一下 C2000 内部的 一个中断到底是怎么搞的怎么去做的 中断好比是说像我们人类一样 我们平时坐在办公室 然后我们再做一些我们自己常规的一些事情 这个时候我们的中断相当于我们的各种电话 各种人找你 你怎么去按你的优先级去处理这种事情 因为他要打断你的常规的一些事情 来看一下右边的话是这个芯片内核 它从内核级别它能够去处理的 它其实只能处理14个 然后再加几个不可屏蔽的中断 其实他自己本身 我的大脑本来只能响应这么几个而已 但这个远远是不能满足我周边这么多外设 这个事情的 所以我们会有一个叫做PIE的这个扩展 是说我们加了一个扩展模块 让他能够去分类的去处理各种各样的一个外设 我们来看一下这个模块 这个模块是这样子的 是说它分为 12 组 每一组分别可以直接牵扯到 芯片级别的 12 个主要的一个中断 每一组我又把它细分开来 对应每一个外设的一个中断请求 所以这样子的话12×8是等于96 是说我通过我的扩展之后 我一下子可以处理的很多的 一个中断的一个请求了 其实相当于你们的什么IO口扩展ad扩展 这是我们中断扩展这么来的 所以我们要 我们的外设要有一个中断请求的话 我外设级别给他一个使能他一个中断的 就是使能外设中断 然后对应的一个它到底是处于哪一组的 我把他使能了 它是属于CPU级别的哪一组也把使能了 这样子我从链路上 我把这个链路把他使能这样子 下次他如果有事情的时候 我能够保证它能够到 C2000 内核 能够让他去让 C2000 去处理 这里的话是它的一个过程 芯片复位之后 它这个刚才讲到了 到了这个入口 是我的芯片到这个具体的一个位置去取址之后 他会先跑一段这个int00的这个代码 这个代码其实是初始化一些 简单的一些环境变量 又把我一些变量的初始值 搬到我的全局变量里面去 然后再调我的一个main 是我用户自己写的一个主函数入口 在主函数入口里面再做一个初始化 初始化里面其实包含了各种各样的 一些外设手手脚脚之类的一些初始化 还有其中包括这个对这个中断 中断向量这些模块的一个初始化 比如把我的一些把我一些中断的服务函数 是我中断之后要怎么去办的些函数 把它放到对应的一些入口地址里面去 那他可以去当有中断来的时候 他能够到对应的一个入口去取我的一个地址 讲完中断的话 我们来看一下时钟 时钟相当于人的一个心脏 它的每一次跳动是能够维持 能够保证这个芯片的一个正常运行 你始终过快过慢都是心律不正常 首先我们来看一下它 内部有两个内部的一个时钟 分别都是十兆的一个时钟 除了内部的一个时钟源之外 我们还有一个外部的一个时钟输入 一个是我可以直接给他一个有源时钟信号 它直接可以另外的话有一个无源晶振 这是外部时钟输入 这三个构成它的一个时钟源 然后如果这三个时钟源 我都可以通过内部的一些寄存器配置 然后再加个一些锁相环 锁相环其实是给他倍频或者说分频之类的 然后最终达到一个给到C2000的一个时钟频率 比如我这里十兆 然后做一个 20分频分十兆 然后做一个12分频 然后再除以二变成60兆给C2000了 上面是时钟 所以时钟其实算是比较简单的 而且我们也有对应的一些配置例程 用起来很方便 还有的话是我们的一个看门狗 看门狗是看门的 然后我们它里面是用它来 复位我们的一些C2000内核 当我们的程序跑飞了之后 他会有一个默认的时间去把它复位了 这里的话比如我们如果给这个看门狗 给一个十兆的一个时钟的话 它会在 13.11 毫秒的时候 它就去复位 如果你没有及时的去清除掉 这个时钟计数的话它会复位 当然你这个时间是可以配的 你只要把这个时钟改了就行了 我们来看一下它的一个流程图 首先这个时钟这个时钟输入 然后经过一个分频 其实是你实际上的一个技术频率 我这里会有两个开关 举例我把这个这个是看门狗使能的 我把它这个通过寄存器 其实寄存器的一个位我把它置1了 他是可以过来了 我可以开始工作了 他这里面会有一个八位的一个看门狗计数器 他一直在这里开始计数了 其实所谓的给它喂狗 给它喂狗其实是你在代码里面 往某一个寄存器 往这个寄存器里面去写55AA或者说系统复位 这样的话会把这个清零 所以我必须保证 在他计数到八个位都是一之前我把它清掉 否则它这里会导致你复位了 这是看门狗复位 所以也是比较简单的

讲完他的复位的话

我们接下来看一下它这个中断

理解一下 C2000 内部的

一个中断到底是怎么搞的怎么去做的

中断好比是说像我们人类一样

我们平时坐在办公室

然后我们再做一些我们自己常规的一些事情

这个时候我们的中断相当于我们的各种电话

各种人找你

你怎么去按你的优先级去处理这种事情

因为他要打断你的常规的一些事情

来看一下右边的话是这个芯片内核

它从内核级别它能够去处理的

它其实只能处理14个

然后再加几个不可屏蔽的中断

其实他自己本身

我的大脑本来只能响应这么几个而已

但这个远远是不能满足我周边这么多外设

这个事情的

所以我们会有一个叫做PIE的这个扩展

是说我们加了一个扩展模块

让他能够去分类的去处理各种各样的一个外设

我们来看一下这个模块

这个模块是这样子的

是说它分为 12 组

每一组分别可以直接牵扯到

芯片级别的 12 个主要的一个中断

每一组我又把它细分开来

对应每一个外设的一个中断请求

所以这样子的话12×8是等于96

是说我通过我的扩展之后

我一下子可以处理的很多的

一个中断的一个请求了

其实相当于你们的什么IO口扩展ad扩展

这是我们中断扩展这么来的

所以我们要

我们的外设要有一个中断请求的话

我外设级别给他一个使能他一个中断的

就是使能外设中断

然后对应的一个它到底是处于哪一组的

我把他使能了

它是属于CPU级别的哪一组也把使能了

这样子我从链路上

我把这个链路把他使能这样子

下次他如果有事情的时候

我能够保证它能够到 C2000 内核

能够让他去让 C2000 去处理

这里的话是它的一个过程

芯片复位之后

它这个刚才讲到了

到了这个入口

是我的芯片到这个具体的一个位置去取址之后

他会先跑一段这个int00的这个代码

这个代码其实是初始化一些

简单的一些环境变量

又把我一些变量的初始值

搬到我的全局变量里面去

然后再调我的一个main

是我用户自己写的一个主函数入口

在主函数入口里面再做一个初始化

初始化里面其实包含了各种各样的

一些外设手手脚脚之类的一些初始化

还有其中包括这个对这个中断

中断向量这些模块的一个初始化

比如把我的一些把我一些中断的服务函数

是我中断之后要怎么去办的些函数

把它放到对应的一些入口地址里面去

那他可以去当有中断来的时候

他能够到对应的一个入口去取我的一个地址

讲完中断的话

我们来看一下时钟

时钟相当于人的一个心脏

它的每一次跳动是能够维持

能够保证这个芯片的一个正常运行

你始终过快过慢都是心律不正常

首先我们来看一下它

内部有两个内部的一个时钟

分别都是十兆的一个时钟

除了内部的一个时钟源之外

我们还有一个外部的一个时钟输入

一个是我可以直接给他一个有源时钟信号

它直接可以另外的话有一个无源晶振

这是外部时钟输入

这三个构成它的一个时钟源

然后如果这三个时钟源

我都可以通过内部的一些寄存器配置

然后再加个一些锁相环

锁相环其实是给他倍频或者说分频之类的

然后最终达到一个给到C2000的一个时钟频率

比如我这里十兆

然后做一个 20分频分十兆

然后做一个12分频

然后再除以二变成60兆给C2000了

上面是时钟

所以时钟其实算是比较简单的

而且我们也有对应的一些配置例程

用起来很方便

还有的话是我们的一个看门狗

看门狗是看门的

然后我们它里面是用它来

复位我们的一些C2000内核

当我们的程序跑飞了之后

他会有一个默认的时间去把它复位了

这里的话比如我们如果给这个看门狗

给一个十兆的一个时钟的话

它会在 13.11 毫秒的时候

它就去复位

如果你没有及时的去清除掉

这个时钟计数的话它会复位

当然你这个时间是可以配的

你只要把这个时钟改了就行了

我们来看一下它的一个流程图

首先这个时钟这个时钟输入

然后经过一个分频

其实是你实际上的一个技术频率

我这里会有两个开关

举例我把这个这个是看门狗使能的

我把它这个通过寄存器

其实寄存器的一个位我把它置1了

他是可以过来了

我可以开始工作了

他这里面会有一个八位的一个看门狗计数器

他一直在这里开始计数了

其实所谓的给它喂狗

给它喂狗其实是你在代码里面

往某一个寄存器

往这个寄存器里面去写55AA或者说系统复位

这样的话会把这个清零

所以我必须保证

在他计数到八个位都是一之前我把它清掉

否则它这里会导致你复位了

这是看门狗复位

所以也是比较简单的

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

C2000入门基础(四)—C2000的时钟和中断系统

所属课程:C2000入门基础 发布时间:2016.03.30 视频集数:7 本节视频时长:00:07:55
TI C2000 是已针对处理、传感和驱动进行优化以提高闭环性能的 32 位实时控制MCU。本入门课程从其基本技术点和在白色家电上的应用作了讲解。 C2000 的数学优化型内核可为设计人员提供能够提高系统效率、可靠性以及灵活性的方法。功能强大的集成外设使这些实时器件成为适合各种应用的完美单芯片控制解决方案。
TI培训小程序