历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | 飞思卡尔RTI实时中断模块

发布者:码上奇迹 来源: eefocus关键字:飞思卡尔  RTI 手机看文章 扫描二维码
随时随地手机看文章

实时中断就是一个定时模块,定时溢出,产生中断。 第一步,实时中断RTI 在默认情况下是关闭的,怎样才能让 RTI 工作呢? 这就用到实时中断控制寄存器 RTICTL 了。 RTICTL是一个八位寄存器,第七位没定义,只用到低七位[RTR6~RTR0]。当RTR[6:4]=000时,实时中断被禁止,只要当RTR[6:4] 不全为0时,实时中断就开了同时实时中断的溢出周期也是由该寄存器配置的。 RTI 的参考时间是外部晶振的时钟OSCCLK。故,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK  第二步,要想在实时中断溢出时产生一个中断,则用到寄存器 CRGINT 了。                 


当CRGINT_RTIE=1时,每个周期结束时,就会产生一个中断只要配置好上面说的两个寄存器,再写上相应的中断函数,实时中断就可以用了。顺便提一下,实时中断 RTI 的中断号是 7 CRGFLG_RTIF 是实时中断的标志位,当 RTI 溢出时,CRGFLG_RTIF 就会由硬件置1,向CRGFLG_RTIF 写1,可以清零标志位。这和51单片机不一样,51单片机的标志位清零是向相应的寄存器写0 与 RTI 相关的寄存器还有 CLKSEL_RTIWAI,不过一般都不会用到。当CLKSEL_RTIWAI=1时,只要系统进入等待模式,RTI 就停止工作。当CLKSEL_RTIWAI=0时,在等待模式下,RTI 仍然工作实时中断写到这里接进尾声了,下面附些与实时中断相关的程序:实时中断就是一个定时模块,定时溢出,产生中断。 第一步,实时中断RTI 在默认情况下是关闭的,怎样才能让 RTI 工作呢? 这就用到实时中断控制寄存器 RTICTL 了。 RTICTL是一个八位寄存器,第七位没定义,只用到低七位[RTR6~RTR0]。当RTR[6:4]=000时,实时中断被禁止,只要当RTR[6:4] 不全为0时,实时中断就开了同时实时中断的溢出周期也是由该寄存器配置的。 RTI 的参考时间是外部晶振的时钟OSCCLK。故,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK  第二步,要想在实时中断溢出时产生一个中断,则用到寄存器 CRGINT 了。                 


当CRGINT_RTIE=1时,每个周期结束时,就会产生一个中断只要配置好上面说的两个寄存器,再写上相应的中断函数,实时中断就可以用了。顺便提一下,实时中断 RTI 的中断号是 7 CRGFLG_RTIF 是实时中断的标志位,当 RTI 溢出时,CRGFLG_RTIF 就会由硬件置1,向CRGFLG_RTIF 写1,可以清零标志位。这和51单片机不一样,51单片机的标志位清零是向相应的寄存器写0 与 RTI 相关的寄存器还有 CLKSEL_RTIWAI,不过一般都不会用到。当CLKSEL_RTIWAI=1时,只要系统进入等待模式,RTI 就停止工作。当CLKSEL_RTIWAI=0时,在等待模式下,RTI 仍然工作实时中断写到这里接进尾声了,下面附些与实时中断相关的程序:
             

#include     
#include    
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void RTI_INIT()       //实时中断 RTI 初始化函数
{
CRGINT_RTIE=1;       // 允许在每个周期结束产生中断
RTICTL=0x59;     // 设置RTICTL为 0101 1001 溢出周期为 (9+1)*2^(5+9)/(16M)= 10*2^14/(16M)
}                  //实际上是10.24ms    16M是外部晶振的频率,实时中断以外部晶振时钟为参考时钟
void main()
{
DisableInterrupts;
RTI_INIT();
EnableInterrupts;
for(;;)
    {   
    }
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED       //实时中断RTI 中断函数
void interrupt 7 RTI(void)
{
CRGFLG_RTIF=1; //向CRGFLG_RTIF 写1 清除标志位

关键字:飞思卡尔  RTI 引用地址:飞思卡尔RTI实时中断模块

上一篇:飞思卡尔中断设置
下一篇:飞思卡尔运动小车前方道路识别

推荐阅读

眼下AI备受瞩目,许多商界和政府领导人在认真思考正确的举措。在实验室进展更是大家关心的,毕竟学术和企业研究人员发现的成果将奠定AI在未来几年的发展方向。开发机器学习模型需要一个耗时、专家驱动的工作流程,这个流程包括数据准备、特征选择、模型或技术选择、训练以及调优等。自动化机器学习AutoML技术,可使用许多不同的统计和深度学习技术,旨在使...
随着科技的发展以及技术的成熟,机器人技术正快速拓展至人类生活的各个方面,医疗机器人、特种机器人、仓储物流机器人、协作机器人等,各种新兴机器人与人类之间开展互动和探索,并且为人类提供协助和服务,日益影响人类及其生活。 在工业4.0与中国智造的变革浪潮中,一批以智能制造、智慧服务为使命与愿景的机器人企业竞相涌现,其中江西太空机器人科...
基于51单片机的蔬菜大棚温湿度智能控制系统设计模块使用:使用dht11、74hc595数码管模块、继电器模块任务1)根据检测到的温湿度信息控制通风与加热;2)采用MCU、温湿度传感器、继电器、按键、数码管等;3)通过按键设定大棚温湿度报警值;4)上传信息到PC机;5)当温度或适度超限时用继电器控制小灯状态模拟相应动作的发生。 单片机源程序如下://////////...
环境搭建环境搭建就不多说了,按照官方的wiki进行搭建就好了。移植步骤说明micropytho使用gcc进行编译,因此使用官方的lpcopen_2_10_lpcxpresso_ea_devkit_1788开发包。将MCUXpresso IDE也下载安装好,后面有用。需要的文件ports目录下有个minimal目录,这是micropython的最小移植,后面都所有操作都在这个移植的基础上进行。下面看看,这个移植里面都有...

史海拾趣

问答坊 | AI 解惑

在nios里,怎样写串口的程序啊!

最近做了一块板子因要许多I/O口,但我开始所选的芯片I/O口不多,所以想在FPGA里做一个NIOS的核,通过串口给nios发送数据,因nios需要很多的资源,想通过nios进行外部的运算后再给FPGA,但现在不知道怎样去设计一个nios,怎样经行串口的进行发送数据 ...…

查看全部问答∨

有没有STR9的CAN例程?

有没有STR9的CAN例程?最近要搞个CANOPENST网站上只有CAN在TEST模式的DEMO,写的很简单.有没有那有例程?…

查看全部问答∨

stm32uart通讯遇到的问题。

用的是stm32f103,UART11 57600,8,1,N 使用时偶尔发现通讯停止现象,复位后又工作正常。由于设计中速度比较慢,所以用万利的开发板连PC机跑程序。单片机持续发送数据,PC机也持续发送数据。出现以下现象。 单片机在主程序中持续发送数据。程 ...…

查看全部问答∨

请教屏幕问题

4.3寸的触摸屏,原来可以用,今天突然就没有显示了,uboot启动时是白色的,linux启动之后就没有显示,诡异的是触摸功能还可以用,运行屏幕校准居然可以,这个大概是什么原因呢?…

查看全部问答∨

关于单片机和继电器

请问,stm32的I/0口出来的信号,中间应该接一些什么,然后接到继电器上(比如24v的继电器) …

查看全部问答∨

FPGA入门相关书籍

上传一部分找到的FPGA入门相关书籍,回馈论坛给予的资源帮助,以供各位参考学习,希望大家都可以共享一些更有价值的资料。。。。。。 [ 本帖最后由 旅途尽美 于 2013-4-29 14:55 编辑 ]…

查看全部问答∨

帮忙写个小家电程序 有点报酬

用PIC单片机做的,这个做好后还有三个要做,只是用来学习不是有在公司产品上,QQ177928361 …

查看全部问答∨

各位大侠进来帮帮忙!

本人小菜鸟一个对电子也不是很懂,最近在学习模电在网上下载了一本书叫(电子设计从零开始)在第156页中遇到令我费解的事,也就如下图:图纸上的电路中的Re单位是560千欧,怎么到下面的计算里面就变成了560欧姆了.还望各位大侠指点一下。 …

查看全部问答∨

晶体振荡电路

为什么去掉C2 才能起震 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved