单任务程序典型架构&中断服务程序

单任务程序典型架构 
 
  (1)从CPU复位时的指定地址开始执行;
 
  (2)跳转至汇编代码startup处执行;
 
  (3)跳转至用户主程序main执行,在main中完成:
 
   a.初试化各硬件设备; 
 
   b.初始化各软件模块;
 
   c.进入死循环(无限循环),调用各模块的处理函数
 
    用户主程序和各模块的处理函数都以C语言完成。用户主程序最后都进入了一个死循
环,其首选方案是:
while(1)
{
}


   中断服务程序 
 
    中断是嵌入式系统中重要的组成部分,但是在标准 C 中不包含中断。许多编译开发商
在标准 C 上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于
__interrupt、#program interrupt 等。当一个函数被定义为 ISR 的时候,编译器会自动为该函
数增加中断服务程序所需要的中断现场入栈和出栈代码。
 
    中断服务程序需要满足如下要求:
 
   (1)不能返回值;
 
   (2)不能向 ISR 传递参数;
 
   (3) ISR 应该尽可能的短小精悍;
 
   (4) printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在 ISR 中采用。
 
    在某项目的开发中,我们设计了一个队列,在中断服务程序中,只是将中断类型添加入
该队列中,在主程序的死循环中不断扫描中断队列是否有中断,有则取出队列中的第一个中断类型,进行相应处理。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值