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.

[参考译文] CCS/TM4C1294NCPDT:从 ROM 调用函数时的 ISR 故障问题

Guru**** 2024750 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/669600/ccs-tm4c1294ncpdt-fault-isr-problem-with-calling-functions-from-rom

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

尊敬的香榭丽舍

我修改了大于 0x00080000的测试函数地址、  

调用 ROM 函数时  ,程序始终跳转到 FaultISR()。

但 只将地址修改为小于0x008000  或仅修改不带 ROM 的调用函数

  它工作正常。

请告诉我们发生故障 ISR 的原因 、谢谢

void main (void)

/*初始化设备*/
//初始化 MCU
ConfigureMCU();

//让用户知道系统已重新启动

test();//0x00080000、  

while (1)


#pragma CODE_SECTION (TEST、".FLASH_BL");// 0x00080000
void 测试(void)

//SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
//SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
//SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);

while (1)


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Jimmy、

     我刚刚尝试了 TivaWare hello 示例、并进行了一些修改、以使用 pragma 并将 ConfigureUART 函数映射到0x08000。 这对我很有用。  

    #pragma CODE_SECTION (ConfigureUART、"my_section");
    无效
    配置 UART (空)

    //
    //启用 UART 使用的 GPIO 外设。
    //
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

    //
    //启用 UART0
    //
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);

    //
    //为 UART 模式配置 GPIO 引脚。
    //
    ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
    ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
    ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

    //
    //初始化控制台 I/O 的 UART
    //
    UARTStdioConfig (0、115200、g_ui32SysClock);

    下面是链接器命令文件。

    部分

    .intvecs:> app_base
    .text:> FLASH
    .const:> FLASH
    .cinit:>闪存
    .pinit:> FLASH
    init_array:> FLASH
    my_section:> 0x08000

    .vtable:> RAM_base
    .data :> SRAM
    .bss:> SRAM
    .sysmem:> SRAM
    .stack:> SRAM

    下面是.map 文件。

    my_section
    * 0 00008000 0000005c
    00008000 0000005c hello.obj (my_section:ConfigureUART)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    今天,“查尔斯爵士”正火!   再一次-超越/超越-做得很好。   *** 类似 ***  (轻松点击按钮-仍然很想念!)

    海报(隐藏代码(下面))是否使您的工作变得复杂和扩展?

    /*初始化设备*/
    //初始化 MCU
    ConfigureMCU();

    海报应提供"所有相关的设置/配置"-这减少了对供应商员工(甚至是我们的无电/无电)的(不公平)要求-外部搅拌器!)