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.

[参考译文] TM4C1294NCPDT:Timer1输入捕捉 μ,不能运行到中断中

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/721113/tm4c1294ncpdt-timer1-input-capture-cannot-run-into-the-interrupt

器件型号:TM4C1294NCPDT

这是我的代码:

void Timer1_Capture_Config (void){
SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);//使能TIMER0 32位(TIMER0A16位+ TIMER0B16位)
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SysCtlDelay (200);
GPIOPinTypeGPIOInput (GPIO_Porta_base、GPIO_PIN_3);
GPIOPinConfigure (GPIO_PA3_T1CCP1);//#define GPIO_PC4_WT0CCP0 0x00021007
GPIOPinTypeTimer (GPIO_Porta_base、GPIO_PIN_3);
TimerConfigure (Timer1_base、TIMER_CFG_B_CAP_TIME_UP|TIMER_CFG_SPLIT_PAIR);
TimerControlEvent (Timer1_base、timer_B、timer_event_POS_EDGE);
TimerEnable (Timer1_base、timer_B);
TimerPrescaleSet (TIMER0_BASE、TIMER_B、24);
ROM_TimerLoadSet (TIMER0_BASE、TIMER_B、624);

IntEnable (INT_TIMER1B);
TimerIntEnable (Timer1_base、timer_CAPB_EVENT);
IntMasterEnable();
//主中断启用所有中断的 API

我无法进入中断

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

    在代码中、您有以下两行用于设置 TIMER0而不是 TIMER1。 如果要使用 Timer1、请更改为 Timer1_base。
    TimerPrescaleSet (TIMER0_BASE、TIMER_B、24);
    ROM_TimerLoadSet (TIMER0_BASE、TIMER_B、624);

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

    供应商的 Charles 出色地识别了您的代码"不合规"。

    但是-正如您所注意到的、"未能进入(假定的) Timer1中断"-您是否"未"提到(某些/轻微)"尚未进入" Timer1中断(理想情况下为代码列表)?

    此外- Timer1中断必须"启动文件"中正确显示(而"名称匹配"(在启动和您的其他代码中) -或"已注册"-以确保其被识别。   (在进入之前进行识别!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议
    很抱歉、我在这里粘贴了错误的代码。
    根据您的建议,我更正了我的代码,如下所示:
    void Timer1_Capture_Config (void){
    SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    SysCtlDelay (200);
    GPIOPinConfigure (GPIO_PA3_T1CCP1);
    GPIOPinTypeTimer (GPIO_Porta_base、GPIO_PIN_3);
    TimerConfigure (Timer1_base、TIMER_CFG_B_CAP_TIME_UP|TIMER_CFG_SPLIT_PAIR);
    TimerControlEvent (Timer1_base、timer_B、timer_event_POS_EDGE);
    ROM_TimerLoadSet (Timer1_base、timer_B、32768);
    IntEnable (INT_TIMER1B);
    TimerIntEnable (Timer1_base、timer_CAPB_EVENT);
    IntMasterEnable();
    TimerEnable (Timer1_base、timer_B);




    Timer1中断似乎正确写入了“启动文件”,但我仍然无法运行到中断中。
    我的配置中是否有任何其他问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议!
    为 PA3提供了1kHz 方波,为了测试 Timer1,我只需在主函数中配置 Timer1。 我的"启动文件"是正确的。 我想 mt config 是错误的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议
    问题是信号 VPP 太小、tm4c1294无法捕获信号。