STM中断系统

1.0   中断向量表

        在starup  XXX .s 的启动文件当中

2.0  中断函数

         在starup  XXX .s 的启动文件当中设计了中断函数【weak】,所以可以在外部再定义一个中断函数(此函数必须与启动文件中的中断向理表定义的函数相同)

3.0 中断设计

       3.1  中断分组  :0组到4组   (注意,一个程序只能一次分组,否则会则错) 可以设定不同的抢占优先组与向应优先级。

       3.2   与c51不同,stm32中断系统更加强大,c51很多能功中断都是确定或写死的,但stm32可以随意设定。

      3.3   抢占优先级与响应优先级

      3.4  因为STM32 设计有众多级中断,只要把中断设高级,这样就不会被其它中断抢占,在设计较少用屏敝中断寄存器。

       

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
	{
  		assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
  		SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;
	}

//例子:设置系统的抢占优先级分组为组2
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  

 

 


// 中断处理程序(中断服务程序 ISR)
/*
   注意中断处理程序的名称必须与中断向量表中一致。

   中断处理程序不是在正常的程序的上下文中执行。 
   即不是正常的通过函数调用执行,而是通过中断执行。

   中断处理程序注意事项:
   1. 没有参数      
      原因:不是通过代码显式调用,无法传递参数
   2. 没有返回值    
      原因:不是通过代码显式调用,无法返回值
   3. 不要做浮点运算  
      原因:浮点运算很耗时,而中断服务程序必须快速完成
   4. 不要使用标准输出函数 printf
      原因:printf 可能导致休眠,而中断报备程序中不能休眠
*/

可能有几个中断源跳到一个中断处理程序

多  对  1

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值