为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 飞思卡尔xs128单片机中断优先级设置简易教程

飞思卡尔xs128单片机中断优先级设置简易教程

2017-12-09 5页 doc 106KB 15阅读

用户头像

is_721103

暂无简介

举报
飞思卡尔xs128单片机中断优先级设置简易教程飞思卡尔xs128单片机中断优先级设置简易教程 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档---------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ 本教程试图用最...
飞思卡尔xs128单片机中断优先级设置简易教程
飞思卡尔xs128单片机中断优先级设置简易教程 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档---------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ 本教程试图用最少的时间教你飞思卡尔XS128单片机的中断优先级设置方法和中断嵌套的使用,如果是新手请先学习中断的基本使用方法。 先来看看XS128 DataSheet 中介绍的相关知识,只翻译有用的: 七个中断优先级 每一个中断源都有一个可以设置的级别 高优先级中断的可以嵌套低优先级中断 复位后可屏蔽中断默认优先级为1 同一优先级的中断同时触发时,高地址(中断号较小)的中断先响应 注意:高地址中断只能优先响应,但不能嵌套同一优先级低地址的中断 下面直接进入正题,看看怎么设置中断优先级: XS128中包括预留的中断一共有128个中断位,如果为每个中断都分配一个优先级寄存器的话会非常浪费资源,因此飞思卡尔公司想出了这样一种办法:把128个中断分为16个组,每组8个中断。每次设置中断时,先把需要的组别告诉某个寄存器,再设置8个中断优先寄存器的某一个,这样只需9个寄存器即可完成中断的设置。 分组的规则是这样的:中断地址位7到位3相同的中断为一组,比如MC9SX128.h中 这些中断的位7到位3都为D,他们就被分成了一组。0~F正好16个组。 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档---------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ INT_CFADDR就是上面说到的用来设置组别的寄存器: 我们需要设置某个组别的中断时,只要写入最后8位地址就行了,比如设置SCI0的中断优先级,就写入0xD0。 设置好组别之后,我们就要该组中相应的中断进行设置,设置中断的寄存器为 这其实是一组寄存器,一共有8个,每个都代表中断组中的一个中断。对应规则是这样的:中断地址的低四位除以2 比如还是SCI0,低四位是6,除以二就是3,那么我们就需要设置INT_CFDATA3 往INT_CFDATAx中写入0~7就能设置相应的中断优先级了 拿我本次比赛的程序来举个例子:我们的程序中需要3个中断:PIT0,PORTH,SCI0。PIT0定时检测传感器数值,PORTH连接干簧管进行起跑线检测,SCI0接收上位机指令实现急停等功能。因此中断优先级要SCI0>PORTH>PIT0。 我们先要从头文件中找出相应中断的地址: 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档---------------------- ------------------------------------------------------------------------------------------------------------------------------------------ ------------ PIT0【7:4】位为7,选择中断组: INT_CFADDR=0x70; 【3:0】为A,A/2=5,设置为第5优先级那么 INT_CFDATA5=5; porth【7:4】位为C,选择中断组: INT_CFADDR=0xC0; 【3:0】为C,C/2=6,设置为第6优先级那么 INT_CFDATA6=6; Sci0【7:4】位为D,选择中断组: INT_CFADDR=0xD0; 【3:0】为6,6/2=3,设置为第7优先级那么 INT_CFDATA3=7; 最终程序为: void Interrupt_Priority_Set(void){ INT_CFADDR=0x70; INT_CFDATA5=0x05; INT_CFADDR=0xC0; INT_CFDATA6=0x06; INT_CFADDR=0xD0; INT_CFDATA3=0x07; } 还要注意一点,如果要实现中断嵌套,需要在低级中断中再开一次总中断,比如 这样才能实现中断的嵌套 精品文档 --------------------------精品文档,可以编辑修改,等待你的下载,管理,教育文档---------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------ QufuNormalUniversity SonicTeam2011
/
本文档为【飞思卡尔xs128单片机中断优先级设置简易教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索