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/EK-TM4C1294XL:存储器映射阻止读取0X01009B7C

Guru**** 2952510 points

Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/949027/ccs-ek-tm4c1294xl-memory-map-prevented-reading-0x01009b7c

器件型号:EK-TM4C1294XL
主题中讨论的其他器件:TM4C1294NCPDT

工具/软件:Code Composer Studio

尊敬的所有人:  

使用定制应用程序调试 EK-TM4C129Xl 时、我面临一些挑战。 请查找以下附加文件以供参考。  

谢谢、
SAI  

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

    尊敬的所有人:

    请找到以下附件作为参考。  

    谢谢、

    SAI  

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

    SAI、

    查看该器件的数据表、该地址没有存储器。

    调试器将配置为阻止读取这些地址。  这就是您收到消息"Memory map prevented reading..."的原因。

    至于程序执行为什么会到达那个地址、我不确定。  当您第一次启动调试会话时,它会立即进入这里还是调试器会在 main()停止?

    我将在 TM4C 团队中提供帮助。

    此致、

    John

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

    尊敬的 John:  

    感谢您提供数据表。  

    我正在尝试调试自定义应用程序,并在 main()中执行了几行代码。 它会暂停代码执行、并使""存储器映射无法读取""。  

    您能更详细地解释一下此错误消息吗? 并建议一种替代方法来克服调试过程中的停止?

     

    谢谢、

    SAI  

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

    在执行代码时、程序似乎已经分支到一个未执行内存的位置。 如果您未通过禁用存储器映射等方式获得错误"阻止读取的存储器映射"、则表示您已获得中止。 我建议您确定哪一行 C 代码产生了错误。 然后重置器件并运行到该行 C 代码。 请尝试汇编语言步进、而不是从这一点开始执行 C 步进。 在执行此操作时查看 CPU 寄存器中的值。 常见的问题是使用错误的地址执行间接调用、或从堆栈值损坏的函数返回。

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

    尊敬的克罗斯比:  

    当然、我将再次尝试使用汇编代码进行调试、并记录寄存器值以进行分析。 此外,在调试期间,代码的逐步执行从 main()程序中崩溃。 它有任何理由吗? 为什么调试时会停止分步过程? 请告诉我、谢谢。

    此致、

    SAI  

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

    尊敬的克罗斯比:

    请在汇编调试后找到以下两个文件。  

    1)在 Timer2_A 步进发生错误之前。  

    2) 2)在执行下一个步骤或退出 Timer2_A 之后 (错误)""内存映射阻止读取。 但愿这对您有所帮助。  

    我正在尝试在我的应用中启用 Timer1A、Timer2A、Timer3A。 在执行过程中、我的应用程序在 Timer2A 处崩溃。 有人能建议更好的解决方案吗? 我希望上面的两个附件有助于分析。  

    此致、

    SAI  

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

    [引用 user ="Johnes">查看该器件的数据表、该地址没有存储器。正如 CCS/TM4C1294NCPDT 线程中所述 :CCS GEL 文件中指定的 ROM 大小与 TM4C 器件中实际的 ROM 大小之间存在差异:

    [引用用户="Brian Willoughby">在相关注释中、TM4C1294[KN]CPDT 的数据表中 ROM 的地址错误。 第103页将0x02000000.0x02FFFFFF 显示为 ROM 的存储器范围、但我们知道 ROM 实际上从0x01000000开始。[/QUERP]

    [quote user="Johes">调试器将配置为阻止读取这些地址。  从上述引用的线程来看、另一个问题是 、虽然 CCS_base/emulation/gel/tm4c1294ncpdt.gel 的 ROM 的正确基址为0x01000000、但其大小小于实际的 ROM。 例如、CCS 10.1.1 CCS_base/emulation/gel/tm4c1294ncppdt.gel 具有:

    GEL_MapAddStr (0x01000000、0、0x00008c00、"R"、0); /* ROM */ 

    其中、与之前的测试一样、对于 ROM 版本为0x301的 TM4C1294NCPDT、ROM 大小为0xe700字节。

    以上两项意味着、当 SAI 在地址0x01009B7C 处获得"存储器映射阻止读取"错误时、程序计数器实际上位于 ROM 中的有效地址。

    是否可以更新器件数据表和 CCS GEL 文件以匹配 TM4C ROM 的实际地址?

    我没有找到指定的实际 ROM 大小;只是创建了一个程序、该程序探测 ROM 地址以查找不会导致总线故障的最高地址。

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

    切斯特、

    感谢您指出这一点。 我也被数据表中的表格误导了。 我已根据数据表输入了内部 TT、以更正此问题、并注意它也适用于 CCS 映射文件。 遗憾的是、没有更新数据表的近期计划。

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

    尊敬的 John:  

    您能否给我一些建议、以克服上述 EK-TM4C129XL 调试期间的程序崩溃?  

    谢谢、

    SAI  

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

    SAI、

    您使用的是哪个版本的 CCS? 我看不到您描述的问题。 您可能具有错误的目标配置。 我返回到 CCS 版本8.3、并在您的示例中展示的 ROM 地址0x0109b7c 处看到正确的反汇编。

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

    没关系、我在 CCS v10中看到了这个问题。 我将为您创建文件 tm4c1294ncpdt.gel 的更新版本。 需要几个小时。

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

    尊敬的 Bob:  

    目前、我使用 Code Composer 7.4.0来调试定制应用。  

    谢谢、
    SAI  

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

    尊敬的 Bob:  

    目前、我使用 Code Composer Studio 7.4.0来调试定制应用。  

    此致、

    SAI   

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

    尊敬的 Bob:  

    我在存储器浏览器中搜索了地址。 结果如下所示、请立即查看。 期待收到您的回复。

    此致、

    SAI  

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

    好的、我的机器上没有加载该旧版本。 我只有版本8、9和10。 (您可能需要考虑更新。)

    检查您加载了哪些 GEL 文件。 从顶部菜单"Tools"->"GEL Files"。 您应该看到如下所示的内容:

    查找以下文件:

    C:\ti\ccsv7\ccs_base\emulation\gel\tm4c1294ncpdt.gel。 将其替换为附加的版本并重新启动 Code Composer。

    /cfs-file/__key/communityserver-discussions-components-files/81/tm4c1294ncpdt.gel

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

    尊敬的 Bob:  

    非常感谢您提供 TM4C1294NCPDT.gel 文件的更新版本。 它已经成功地工作了。 但是、我可以在反汇编和内存浏览器中读取数据。 我仍然会得到"0x 1009e64"没有可用的源 代码。 请告诉我。 它到底意味着什么以及如何解决它?  

    请查找参考片段以了解相关信息。  

    此致、
    SAI  

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

    您好、Sai、

    您的代码调用了 ROM 存储器中的函数。 源代码不是项目的一部分、因此消息是正确的。 通常、客户不会通过 ROM 函数进行调试。 它们通常是 CSTEP。 但是、有时您希望查看 TivaWare 函数内发生的情况。 一种方法是从函数名称中删除"map_"或"rom_"前缀。 这样、目标代码将从库中提取、而不是从 ROM 中执行。 您仍然会收到一条有关源位置的错误消息、但您可以搜索源并在 TivaWare 目录"C:\ti\TivaWare_C_Series-2.2.0.295\driverlib"中找到它(具体取决于您使用的 TivaWare 的版本)。  

    我经常使用另一种方法。 例如、如果我想通过 TivaWare UART 函数进行调试、我将把文件"C:\ti\TivaWare_C_Series-2.2.0.295\driverlib\UART.c"复制到我的项目中。 当我单步执行其中一个 UART 函数时、CCS 可以找到源代码。

    第三个(更高级)选项是从"C:\ti\TivaWare_C_Series-2.2.0.295\driverlib\ccs"中导入 CCS 工程、并重建 driverlib.lib 库文件。 然后、该版本将为您的计算机上的 TivaWare 源文件提供正确的路径信息。 然后、您必须将链接器指向该版本的库。 同样、调用时 不带"map_"或"rom_"前缀。

    虽然这都是值得学习的好信息、但我怀疑它不能帮助您解决最初的问题。 如果您描述的是原始问题、例如当 I C-step 进入函数"xxxx"时、器件不返回、我可能能够让您对可能发生的情况有一些了解。

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

    尊敬的 Bob:  

    感谢您询问源代码。 请查找以下代码以了解相关信息。  

    我正在尝试在 main()循环的 Porta 初始化所有目标器件参数、例如 GPIO、TIMER1A、TIMER2A、TIMER3A 和 UART0。 直到 Timer1A 的初始化、程序执行良好。 在 Timer2A 初始化期间、程序会崩溃、我无法继续调试代码。 您能给我一个关于计划崩溃的见解吗? 期待收到您的一些建议。

    /这是运行应用程序的主循环。
    //
    int main (void)
    {
    //从 PLL 以120MHz 运行。
    //注意:SYSCTL_CFG_VCO_240是 TivaWare 2.2.x 和中提供的新设置
    //之后更好地反映由于 SYSCTL_22而导致的实际 VCO 速度。
    //
    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240)、120000000);
    
    //启用所有 GPIO 组。
    
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
    
    // LED 端口
    
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_0);//心跳/用户 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_1);//公制 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_2);//中文 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_3);//公头 LED 端口输出
    
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_4);//包容式 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_5);//图形 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_6);//普通 LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_7);//输入 LED 端口输出
    
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3));//端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、(GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6));//端口输出
    
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTL_base、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2));//端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTL_base、(GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7));//端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、0xff);// DP LED 端口输出
    MAP_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0);//检测信号
    
    clrDp();
    
    //为周期性中断配置 SysTick。
    MAP_SysTickPeriodSet (g_ui32SysClock/100);// 10 msec
    
    map_SysTickIntEnable();
    map_SysTickEnable();
    
    
    //为周期性中断配置计时器1。
    
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);
    MAP_TimerConfigure (Timer1_base、TIMER_CFG_PERIODICRACASE);
    MAP_TimerLoadSet (Timer1_base、timer_A、g_ui32SysClock / 10);// 0.5秒
    MAP_IntEnable (INT_TIMER1A);
    MAP_TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT);
    MAP_TimerEnable (Timer1_base、timer_A);
    






    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2); MAP_TimerConfigure (TIMER2_base、TIMER_CFG_PERIODICRACASE); MAP_TimerLoadSet (TIMER2_base、TIMER_A、g_ui32SysClock / 2);// 0.5秒 MAP_IntEnable (INT_TIMER2A); MAP_TimerIntEnable (TIMER2_base、TIMER_TINA_TIMEOUT); MAP_TimerEnable (TIMER2_base、TIMER_A); MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIOPinRead (GPIO_PORTN_BASE、GPIO_PIN_0)^ GPIO_PIN_0);
    MAP_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER3); MAP_TimerConfigure (TIMER3_base、TIMER_CFG_PERIODICRACASE); MAP_TimerLoadSet (TIMER3_base、TIMER_A、g_ui32SysClock / 20);// 0.5秒 MAP_IntEnable (INT_TIMER3A); MAP_TimerIntEnable (TIMER3_base、TIMER_TINA_TIMEOUT); MAP_TimerEnable (TIMER3_base、TIMER_A); //为周期性中断配置计时器2。 //为周期性中断配置计时器3。 //sai 更改为5 //启用处理器中断。 MAP_IntMasterEnable(); //启用 UART。 MAP_GPIOPinConfigure (GPIO_PA0_U0RX); MAP_GPIOPinConfigure (GPIO_PA1_U0TX); MAP_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1); //UARTStdioInit (0);//在 TM4C129XL UARTStdioConfig (0、115200、g_ui32SysClock)中不可用; delay100Ms (1);

    谢谢、

    SAI  

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

    当您在尝试启用定时器2的行 CSTEP 后停止调试器时、您是否看到它卡在这里?

    //
    //
    //这是当处理器收到意外
    的//中断时调用的代码。 这只是进入一个无限循环、保持系统状态
    //供调试器检查。
    ////
    *****************
    静态空
    IntDefaultHandler (void)
    {
    //
    //进入无限循环。
    //
    while (1)
    {
    }
    }
    

    在这种情况下、您没有为计时器1中断服务例程设置矢量、并且在尝试初始化计时器2时从计时器1获得中断。  

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

    是的、我获得了正确的 Bob 信息。 请查看我的整个源代码。 我分别提到了中断。 请告诉我应用程序中的错误是什么。


    #include #include #include #include "inc.h"#include #include #include #include //全局变量 uint32_t g_ui32SysClock; volatile unsigned int counter = 0; volatile unsigned int delaycnt = 0 ;volatile int ohmsReadFlag = 0; int blink = 0; char lastBuf[Ohm_BUF_SIZE];// ohmBuf 静态 char char char 'ohmBuf[Ohm_BUF_size]的副本 ;// unsigned static tranuys/void int = 0 //驱动程序库遇到错误时调用的错误例程。 // #ifdef debug void __error__(char *pcFilename,unsigned long ulLine) { } #endif //************* // SysTick 中断的中断处理程序。 // void SysTickIntHandler (void) { counter++; } //********* //针对1个计时器 A 子计时器中断的中断处理程序。 //每秒1次,用于控制 LED 闪烁速率 void Timer1AIntHandler (void) { //清除计时器中断。 ROM_TimerIntClear (Timer1_base、timer_TINA_TIMEOUT); delaycnt++; } //********* //针对2个计时器 A 子计时器中断的中断处理程序。 //每秒1次,用于控制 LED 闪烁速率 void Timer2AIntHandler (void) { //清除计时器中断。 TimerIntClear (TIMER2_base、TIMER_TINA_TIMEOUT); if (blink) blink = 0; else blink = 1; if (blinkflags & GENBLINK){ maleLED (blink); femaleLED (blink ^ 1); showGender (blink); } if (blinkflags & PPWBLINK);{ blink)} (blink); (blink) graphicLED (闪烁^ 1); } if (blinkflags & PGBLINK){ graphicLED (闪烁); } if (blinkflags & PPBLINK){ plainLED (闪烁); } //********* //针对3个计时器 A 子计时器中断的中断处理程序。 //每秒10次读取密钥 //********* void Timer3AIntHandler (void) { //清除计时器中断。 TimerIntClear (TIMER3_base、TIMER_TINA_TIMEOUT); keyUpdate ();//每0.1秒读取一次 kbd MAP_IntMasterDisable (); if ((state = WAIT4WEIGHT)&&(numKey = 1)&&(weight_lb2 > STEPOFF)){// 仅静态标志 * //这是运行应用程序的主循环。 // int main (void) { //将 PLL 的时钟设置为以80MHz 运行。 // map_SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN); // //从 PLL 以120MHz 运行。 //注意:SYSCTL_CFG_VCO_480是 TivaWare 2.1.4和中提供的新设置 //之后更好地反映由于 SYSCTL_22而导致的实际 VCO 速度。 // G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); //启用所有 GPIO 组。 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM); SysCtlPeripheralEnable (SYSCTL_Periph_GPION); // LED 端口 GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_0);//心跳/用户 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_1);//指标 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_2);//中文 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_3);//公头 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_4);//包容式 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_5);//图形 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_6);//普通 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_7);//输入 LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3));//端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、(GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6));//端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTL_base、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2));//端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTL_base、(GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7));//端口输出 GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、0xff);// DP LED 端口输出 GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0);//检测信号 clrDp(); //为周期性中断配置 SysTick。 SysTickPeriodSet (g_ui32SysClock/100);// 10msec // SAI 更改为1msec SysTickIntEnable(); SysTickEnable(); //为周期性中断配置计时器1。 SysCtlPeripheralEnable (SYSCTL_Periph_Timer1); TimerConfigure (Timer1_base、timer_CFG_PERIODICRACRACASE); TimerLoadSet (Timer1_base、timer_A、g_ui32SysClock / 10);// 0.5秒// SAI 更改为100msec IntEnable (INT_TIMER1A); TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT); TimerEnable (Timer1_base、timer_A); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2); TimerConfigure (TIMER2_base、TIMER_CFG_PERIODICRACASE); TimerLoadSet (TIMER2_base、TIMER_A、g_ui32SysClock / 2);// 0.5秒// SAI 更改为100msec IntEnable (INT_TIMER2A); TimerIntEnable (TIMER2_base、TIMER_TINA_TIMEOUT); TimerEnable (TIMER2_base、TIMER_A); GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIOPinRead (GPIO_PORTN_BASE、GPIO_PIN_0)^ GPIO_PIN_0);//使 LED 闪烁 SysCtlPeripheralEnable (SYSCTL_Periph_TIMER3); TimerConfigure (TIMER3_base、TIMER_CFG_PERIODICASE); TimerLoadSet (TIMER3_base、TIMER_A、g_ui32SysClock / 20);// 0.5秒// SAI 更改为100ms IntEnable (INT_TIMER3A); TimerIntEnable (TIMER3_base、TIMER_TINA_TIMEOUT); TimerEnable (TIMER3_base、TIMER_A); //为周期性中断配置计时器2。 //为周期性中断配置计时器3。 //启用处理器中断。 IntMasterEnable(); //启用 UART。 GPIOPinConfigure (GPIO_PA0_U0RX); GPIOPinConfigure (GPIO_PA1_U0TX); GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1); //UARTStdioInit (0);//在 TM4C129XL UARTStdioConfig (0、115200、g_ui32SysClock)中不可用; delay100Ms (1);

    谢谢、

    SAI  

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

    您是否修改了 startup_ccs.c 将中断例程添加到矢量表中? 当您有一个小项目需要某人审阅时、最好使用 CCS "File"->"Export"、"General"、"Archive File"将整个项目导出到.zip 文件中、然后将其附加到线程中。 这将包括所有使用的文件和选项。  

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

    尊敬的 Bob:  

    是的、我在启动文件中缺少那些特定的 Timer1A、Timer2A、Timer3A 和 UART3中断处理程序。 感谢整个过程中的建议、也感谢为我提供调试课程。  

     

    extern void SysTickIntHandler (void);
    extern void UART3IntHandler (void);
    extern void Timer1AIntHandler (void);
    extern void Timer2AIntHandler (void);
    extern void Timer3AIntHandler (void); 

    SysTickIntHandler、 // SysTick 处理程序 Timer1AIntHandler、 //计时器1子计时器 A Timer2AIntHandler、 //计时器2子计时器 A Timer3AIntHandler、 //计时器3子计时器 A UART3IntHandler、 // UART3 Rx 和 Tx

    此致、

    SAI