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:WTIMER:Cant Reset or Assert (WTIMER1_TIMER_ICR)中断清除位。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/568536/ccs-wtimer-cant-reset-or-assert-wtimer1_timer_icr-interrupt-clear-bit

主题中讨论的其他器件:TM4C123GH6PM

工具/软件:Code Composer Studio

我在我的 TM4C123gh下午6微控制器上使用 PC6 、问题是代码工作正常、我从 Wtimer 获取时间捕获、但在其 ISR 中、标志未设置。 ? Code Composer Studio 会在 该位置显示我(*)星号,在监视窗口中,它会显示我的类型为: READNONE/WRITE NONE。 它为什么这么做? 问题和解决方案。

void PeriodMeasure_Init (void){
//为 WTIME1 WT1CCP0启用引脚 PC6 = WTimer1 A

noInterrupts ();


SYSCTL_RCGCGPIO_R |=(1<<2); //激活端口 C 时钟
SYSCTL_RCGCWTIME_R |=(1<<1); //激活 Wtimer1时钟


// GPIOPinUnlockGPIO (GPIO_PORTC_BASE、GPIO_PIN_6); //解锁 PD7 GPIO



GPIO_PORTC_DIR_R &=~(1<<6); //使 PC6输入
GPIO_PORTC_AFSEL_R |=(1<<6); //启用 alt funt
GPIO_PORTC_DEN_R |=(1<<6); //启用数字函数

GPIO_PORTC_PCTL_R =(GPIO_PORTC_PCTL_R 和0xF0FFFFFF)+0x07000000;//在引脚6

上配置为 WTIMER 1_CTL_R &&~0x00000001; //在设置

WTIMEER1_CFG_R = 0x00000004期间禁用 timer1A; //配置为32位捕获模式
WTIMER 1_TAMR_0x00000017; //为上升沿事件配置
WTIME1_CTL_R &&~0x0000000C; //上升沿
WTIMER 1_TAILR_R = 0x00000000; //起始值
WTIMER 1_TAPR_0xFFFF; //激活预分频、预分频器计数:65535复位时间:3.518
WTIMER 1_IMR_R |= 0x00000004; //启用捕获匹配中断
WTIME1_ICR_R |=(1<<2); //清除 timer0A 捕获匹配标志//清除标志

WTIMEER1_CTL_R |= 0x00000001; // timer0A 24-b、+EDGE、中断

NVIC_PRI24_R =(NVIC_PRI24_R 和0xFFFFFF1F)|(1<<5);//WTimer1A->优先级1
NVIC_EN3_R |= 0x1; //在 NVIC
interrupts ()中启用中断96;
}

void WideTimer1A_Handler (void){
if (FirstRun=1){
WTIMER 1_ICR_R = 0x00000004; //清除 timer0A 捕获匹配标志//清除标志

Periodlong =(WTIMER1_TAR_R - INT_TIME)& 0xFFFFFFFF;// 32位、12.5ns 分辨率
时间= Periodlong*12.5e-9;


INT_TIME = WTIMER1_TAR_R; //设置下一
个}

FirstRun = 1; //设置信标
WTIMER1_ICR_R = 0x00000004; //清除 timer0A 捕获匹配标志//清除标志
}


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

    您是否尝试在内存浏览器中查看寄存器。 还要检查 RIS 寄存器以查看正在设置哪些位。

    此外、您使用的是 DRM。 我们不建议在论坛上采用这种方法、因为它会在调试或审阅用户代码时将我们设置回原来的状态。 我建议改用 TivaWare API。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我当时在关注数据表,当时不知道 Tivaware API/Driverlib,但现在我设法解决了这个问题,它是一个时序问题。 Code Composer Studio 在我检查时没有更新 RIS 的值、可能是因为我不知道从哪里来的延迟。 感谢您的回复。 TI e2e 非常有帮助。 我将从开始使用 API。

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

    有时、CCS 窗口不会更新、即使"Auto-Refresh"设置为"On (打开自动刷新)"也是如此。 最好关闭窗口并重新打开、这样通常会解决问题。