• 【转】STM32


    程序跳转注意:

    1、如果跳转之前的程序A里有些中断没有关,在跳转之后程序B的中断触发,但程序B里没有定义中断响应函数,找不到地址会导致死机。

     2、程序跳转前关总中断,程序跳转后开总中断(关总中断,只是屏蔽了中断;当开总中断后,关总中断之前开的如定时器的中断还是开启的)

    开关总中断:

    在STM32/Cortex-M3中是通过改变CPU的当前优先级来允许或禁止中断

    PRIMASK位:只允许NMI和hard fault异常,其他中断/异常都被屏蔽(当前CPU优先级=0)。

    FAULTMASK位:只允许NMI,其他所有中断/异常都被屏蔽(当前CPU优先级=-1)。

    第一种方法:

    PRIMASK 用于除能在NMI 和硬fault 之外的所有异常,它有效地把当前优先级改为0(可编程优先级中的最高优先级)。

    void__disable_irq (void);//关闭总中断

    void __enable_irq (void);//开放总中断

    __set_PRIMASK(1);//关闭总中断

    __set_PRIMASK(0);//开放总中断

    第二种方法:

    FAULTMASK 更绝,它把当前优先级改为‐ 1 。这么一来,连硬fault 都被掩蔽了。使用方案与PRIMASK 的相似。但要注意的是,FAULTMASK 会在异常退出时自动清零。

    void __disable_fault_irq (void); //关闭总中断

    void __enable_fault_irq (void);//开放总中断

    __set_FAULTMASK(1);//关闭总中断

    __set_FAULTMASK(0);//开放总中断

    常常使用

    void __disable_irq (void);//关闭总中断

    void __enable_irq (void);//开放总中断

    来源

  • 相关阅读:
    (DP)codeforces
    (树状数组)POJ
    (树状数组)POJ
    (二维树状数组)POJ
    (模拟)HDU
    (暴力+深搜)POJ
    (判连通+暴力)UVA
    (深搜)UVA
    (暴力+各种算法)hihoCoder
    (尺取法)HDU
  • 原文地址:https://www.cnblogs.com/skullboyer/p/9031825.html
Copyright © 2020-2023  润新知