This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用TM4C123GH6PZ开发产品用C语言和ARM汇编语言怎么做呢?

Other Parts Discussed in Thread: TM4C123GH6PZ

使用TM4C123GH6PZ开发产品用C语言和ARM汇编语言怎么做呢,具做就是程序主体有C语言去实现,部分功能要用到ARM汇编语言实现,我找了一些方法,在KEIL5.17下编译总是报错。以前做过51单片机的混编,是可以实现的,实在用ARM芯片,不知道片么做了,请大侠指点。

  • 嵌入汇编包括内联汇编和内嵌汇编两种,你需要搞清楚M4支持哪种。从系统延时函数看,M4应该用的是内嵌汇编,延时函数的示例如下,你可以照着修改

    #if defined(rvmdk) || defined(__ARMCC_VERSION)
    __asm void
    SysCtlDelay(uint32_t ui32Count)
    {
        subs    r0, #1;
        bne     SysCtlDelay;
        bx      lr;
    }
    #endif


  • 在KEIL环境下,还是在别的开发环境呢

  • 这个是在MDK环境下的代码。其他的也大概类似。

    #if defined(ewarm) || defined(DOXYGEN)
    void
    SysCtlDelay(uint32_t ui32Count)
    {
        __asm("    subs    r0, #1\n"
              "    bne.n   SysCtlDelay\n"
              "    bx      lr");
    }
    #endif
    #if defined(codered) || defined(gcc) || defined(sourcerygxx)
    void __attribute__((naked))
    SysCtlDelay(uint32_t ui32Count)
    {
        __asm("    subs    r0, #1\n"
              "    bne     SysCtlDelay\n"
              "    bx      lr");
    }
    #endif
    #if defined(rvmdk) || defined(__ARMCC_VERSION)
    __asm void
    SysCtlDelay(uint32_t ui32Count)
    {
        subs    r0, #1;
        bne     SysCtlDelay;
        bx      lr;
    }
    #endif
    //