嵌入式开发,硬件的中断回调函数怎么注册

嵌入式开发,硬件的中断回调函数怎么注册,第1张

中断服务程序的入口地址注册,不同的系统都不一样的。

具体的方法在编译器的手册里面会有详细说明,不过这种语法说明看起来会比较费劲。

一个简单点的办法是先看看编译器提供的中断程序的例程,再去查编译手册。

设置中进行更改。定时器是嵌入式系统的心脏,一点也不为过。定时器,不仅使用在rtos领域,在任务的运行、等待、延时、资源的获取方面都有广泛的影响。

1、首先打开设置。

2、然后点击更改时间。

3、、最后点击更改即可。

static inline void __enable_interrupt(void) { __asm__ volatile ("cpsie i"); }

static inline void __disable_interrupt(void) { __asm__ volatile ("cpsid i"); }

这里并不矛盾。

首先,置一和写一并不是一样的。

置一是把这一位变成一,强调的是结果,英文原文应该是set this bit

写一是朝这位写入一,强调的是动作,英文是write 1 to corresponding bit

置一,结果一定是一,

写入一,相应的位不一定会变成一,这是由于寄存器的特殊性决定的,某些寄存器,对其进行写一 *** 作,结果是此寄存器清0,或者是相应的其他寄存器清零,这只是一个规定的 *** 作,没有数字计算的含义在里面。

上述不是中断,是异常;中断是异常的一种,根据异常向量表的地址顺序0x00--复位0x04未定义指令 0x08---软件中断,0x0c 中止(预取指令)0x10--中止(数据)0x14--保留0x18--外部中断0x1c--快速中断

给你发个相关的配置外部中断的寄存器版函数,你可以参考下:

//外部中断配置函数

//只针对GPIOA~I;不包括PVD,RTC,USB_OTG,USB_HS,以太网唤醒等

//参数:

//GPIOx:0~8,代表GPIOA~I

//BITx:需要使能的位;

//TRIM:触发模式,1,下升沿;2,上降沿;3,任意电平触发

//该函数一次只能配置1个IO口,多个IO口,需多次调用

//该函数会自动开启对应中断,以及屏蔽线        

void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM) 

u8 EXTOFFSET=(BITx%4)4;  

RCC->APB2ENR|=1<<14;   //使能SYSCFG时钟  

SYSCFG->EXTICR[BITx/4]&=~(0x000F<<EXTOFFSET);//清除原来设置!!!

SYSCFG->EXTICR[BITx/4]|=GPIOx<<EXTOFFSET; //EXTIBITx映射到GPIOxBITx 

//自动设置

EXTI->IMR|=1<<BITx; //开启line BITx上的中断(如果要禁止中断,则反 *** 作即可)

if(TRIM&0x01)EXTI->FTSR|=1<<BITx; //line BITx上事件下降沿触发

if(TRIM&0x02)EXTI->RTSR|=1<<BITx; //line BITx上事件上升降沿触发

以上就是关于嵌入式开发,硬件的中断回调函数怎么注册全部的内容,包括:嵌入式开发,硬件的中断回调函数怎么注册、嵌入式系统定时器中断程序时间怎么改、arm嵌入式问题关于中断的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9675161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存