⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 externalinterrupt.c

📁 程序展示了 ucos在EASYARM2200上的移植。并添加了多个设备在UCOS下的驱动UART:SPI:IIC:ZLG7290.当然还没有完全完成板上其它设备的驱动。由于限制
💻 C
字号:
#include "config.h"
extern OS_EVENT *eintMbox;
/***
EXTINT 
0       1       2       3       4---7
EINT0   EINT1   EINT2   EINT3   保留
EINT0:  电平激活方式下如果管脚的EINT0功能被选用且管脚处于有效状态时该位置位;
		边沿激活方式下如果管脚的EINT0功能被选用且管脚上出现所选极性该位置位; 
		该位通过写入1清除但电平激活方式下管脚处于有效状态的情况除外;
***/
/***
EXTWAKE
0           1          2          3
EXTWAKE0   EXTWAKE1    EXTWAKE2   EXTWAKE3
EXTWAKE0    该位为1时使能EINT0将处理器从掉电模式唤醒;

			EXTWAKE寄存器中的使能位允许外部中断将处理器从掉电模式唤醒
			相关的EINTn功能必须映射到管脚才能实现掉电唤醒
			但中断并不必要为了实现唤醒操作而在向量中断控制器中被使能
			这样做的好处是允许外部中断输入将处理器从掉电模式唤醒
			但不产生中断只是简单地恢复操作或者在掉电模式下使能中断而不会将处理器唤醒
			这样当应用中并不需要唤醒特性时也不必关闭中断		
***/
/***
EXTMODE
0          1           2           3
EXTMODE0   EXTMODE1    EXTMODE2    EXTMODE3
EXTMODE0    该位为0时EINT0使用电平激活;该位为1时EINT0使用边沿激活

			寄存器中的位用来选择每个EINT脚是电平或边沿激活
			只有选择用作EINT功能并已通过VICIntEnable使能
			管脚才能产生外外部中断功能的中断
			当然如果管脚选择用作其它功能则产生其它功能的中断 

注当某个中断在VICIntEnable中被禁能时软件应该只改变EXTMODE寄存器中相应位的值
重新使能前软件向EXTINT写入1来清除EXTINT位EXTINT位可通过改变激活方式来置位
***/
/***
EXTPOLAR
0           1            2            3
EXTPOLAR0   EXTPOLAR1    EXTPOLAR2    EXTPOLAR3
EXTPOALR0  该位为0时EINT0低电平或下降沿有效由EXTMODE0决定 
           该位为1时EINT0高电平或上升沿有效由EXTMODE0决定
***/

/******/
/***引入外部变量,在外部中断服务程序之中发送给ADC采集任务
    指明采集通道,
    以后扩展的时候还要传递其他的信息,可是是一个结构体指针***/
extern OS_EVENT *adcMbox;

void initExternalInterrupt(EXTERNALINTERRUPTCONFIG config)
{
   EXTMODE=config.mode;
   EXTPOLAR=config.polar;
   EXTWAKE=config.wakeup;
   EXTINT=0X02;/***清除外部中断标志***/
}
/***外部中断服务例程***/
void ExternalINT1_Exception(void)
{
   INT32U msg;/***测试的时候直接将msg=1,采集一ADC的信息***/
   
   OS_ENTER_CRITICAL(); 
   msg=1;
   EXTINT=0X02;   /***清除中断标志***/
   VICVectAddr=0;
   OS_EXIT_CRITICAL();
   IO0CLR=1<<BEEPCON;/***蜂鸣器响,表明进入外部中断***/
   hc595SendData(0xcc);
   OSMboxPost(adcMbox,(void*)msg);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -