在C程序中禁用中断

在C程序中禁用中断,c,arm,interrupt,keil,C,Arm,Interrupt,Keil,如何禁用ARM M0大学设计启动程序中的中断? 该设计针对M0,将输入的字符作为整数进行回显,它是更大代码段的一部分(为简单起见而编写) 我可以在主程序(附件)中完成吗?还是必须编辑汇编代码(附件) 如果使用CMSIS驱动程序,请检查: void\u禁用\u irq(void) void\u启用\u irq(void) 他们只是调用CPSIE和CPSID指令 一般阅读编程手册中的NVIC。我还推荐一本关于Cortex M0的好书: Joseph Yiu编写的ARM Cortex-M0最终指南。如

如何禁用ARM M0大学设计启动程序中的中断? 该设计针对M0,将输入的字符作为整数进行回显,它是更大代码段的一部分(为简单起见而编写) 我可以在主程序(附件)中完成吗?还是必须编辑汇编代码(附件)


如果使用CMSIS驱动程序,请检查:

  • void\u禁用\u irq(void)
  • void\u启用\u irq(void)
  • 他们只是调用
    CPSIE
    CPSID
    指令

    一般阅读编程手册中的
    NVIC
    。我还推荐一本关于Cortex M0的好书:


    Joseph Yiu编写的ARM Cortex-M0最终指南。

    如果您希望在ASM中编写简单的代码,您只需存储BASEPRI并将其提升到比所有NVIC更高的优先级(此外,例如,异常类型debugMon),做你需要做的事情,然后恢复原来的BASEPRI

    你做了哪些研究来发现“如何禁用中断?”。您能否提供参考手册和/或您看过的其他来源?
      //------------------------------------------------------------------------------
    // Cortex-M0 DesignStart C program example
    //------------------------------------------------------------------------------
    
    #include <stdio.h>
    #include <time.h>
    #include <rt_misc.h>
    #include <stdlib.h>
    
    #define AHB_LED_BASE                0x50000000
    #define AHB_UART_BASE               0x51000000
    
    
    void UART_ISR(void)
    {
                int sample;
                char ch [16];
                sample = atoi (ch);
                printf("the value entered is %d\n", sample);
    }
    
    //////////////////////////////////////////////////////////////////
    // Main Function
    //////////////////////////////////////////////////////////////////
    
    int main() 
        {
    
            char ch [16];
            while(1==1)
            {
            fgets (ch, 16, stdin);
        //printf("String: %s\n\n",ch);
            }
    }
    
    UART_Handler    PROC
                    EXPORT UART_Handler
                    IMPORT UART_ISR
                    PUSH    {R0,R1,R2,LR}
                    LDR     R1, =0x51000000               ;UART
                    LDR     R0, [R1]                      ;Get Data from UART
                    STR     R0, [R1]                      ;Write to UART
    
                    BL UART_ISR
    
                    POP     {R0,R1,R2,PC}
                    ENDP
    
    
                    ALIGN 4