IO的中断编程

本文详细介绍了嵌入式系统中的中断处理机制,包括中断步骤、中断控制、中断向量表和NVIC。讨论了中断服务子程序的特性,如自动堆栈操作,并提及了中断标志位的清除。还提到了PDIR寄存器和全局变量在中断中的应用。此外,中断优先级和中断掩码寄存器PRIMASK也在文中有所涉及。
摘要由CSDN通过智能技术生成

中断与轮询

中断的堆栈占用

中断步骤:配置中断开关、配置中断源、写中断服务子程、将中断服务子程填入中断向量表

中断允许/禁止控制:全局中断控制-上电复位后是enable的、dedicated IE-上电复位后所有中断被disable

中断掩码优先级寄存器(PRIMASK):PM bit

NVIC:1、nested vector interrupt controller

2、16个内部中断+32个外部中断

3、asm("CPSIE i");NVIC_ISER |= 0x40000000;

请求中断标志位:w1c

中断服务子程序:1、在ARM Cortex M0平台上,中断服务子程与一般c函数写法没有区别,使用同样的汇编返回指令即可(堆栈弹出由NVIC自动完成)

2、对于每个中断,必须调用对应的ISR,填入中断向量表

3、如允许中断嵌套,则在中断函数中保持中断允许

ISR共同特点:1、被CPU硬件自动调用,非程序代码调用

2、ISR执行前后,CPU自动进行堆栈出入操作

3、写成c函数的参数和返回值都应为void

4、需要记得清除中断标志位IF

中断向量:终端服务的入口地址

中断向量表:所有中断类型码及其对应的中断向量按一定规律存放的区域

PDIR:port data input register

堆上的全局变量,在中断中改变它的值,main中可见

与数组相同,函数名是一个指针:函数名的值为函数的起始地址,是一个指针常量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值