Other Parts Discussed in Thread: TMS320C5517
我有 一个由 Spectrum Digital Incorporated 制造的 TMS320C5517 EVM 开发板。 我想使用计时器0、但在 register.h 中看到计时器寄存器不存在、我感到很惊讶。 有人知道原因吗? 我自己也加入了这样的内容
#define T0CR *(ioport volatile uint16_t *) 0x1810 #define TIM0PRD1 *(ioport volatile uint16_t *) 0x1812 #define TIM0PRD2 *(ioport volatile uint16_t *) 0x1813 #define TIM0CNT1 *(ioport volatile uint16_t *) 0x1814 #define TIM0CNT2 *(ioport volatile uint16_t *) 0x1815 #define TISR *(ioport volatile uint16_t *) 0x1C3E
但是、当我放入一个断点并在 Code Composer Studio 寄存器视图中查看寄存器值时、寄存器具有默认值。 有人知道什么问题吗? 可以在下面找到我的来源。
.sect "vector" .def _VECSTART .ref _timerIsr .ref _dmaIsr .ref _gpioIsr .ref _communicationIsr .ref _c_int00 .ref _dummyIsr .align 256 ;中断矢量定义 _VECSTART: _RST: ivec _c_int00、use_RETA;复位/软件中断#0 NMI: ivec no_isr ;不可屏蔽中断 INT0: ivec no_isr ;外部用户中断#0 INT1: ivec no_isr ;外部用户中断#1 TINT0: ivec _timerIsr ;定时器#0/软件中断#4 PROG0: ivec no_isr ;可编程0中断 UART: ivec no_isr ; IIS #1接收中断 。
。
。 #define system_clk_FREQ_Hz (((uint32_t) 196000000) uint16_t configAndRestorartTimer (uint16_t delayM、uint16_t timerIntCallbackPtr){ T0CR = 0x8000; //启用计时器 uint32_t timerFreq = system_clk_FREQ_Hz / 8192; uint32_t numNeedTimerTicks = timerFreq/(1000 *((uint32_t) delayM); TIM0PRD2 =(uint16_t)(numNeedTimerTicks >> 16);//设置计时器周期 TIM0PRD1 =(uint16_t)(numNeedTimerTicks >> 0);//设置计时器周期 TIM0CNT2 = 0; //重置计数值 TIM0CNT1 = 0; //重置计数值 TISR = 1; //定时器0中断被路由到 CPU 不可屏蔽中断(NMI)。 T0CR =(((uint16_t) 1) < 15)| //启用计时器 (((uint16_t) 0xC)<< 2)| // 8192作为预分频器。 这将提供一个196 MHz/8192 = 23.926 kHz 的定时器频率 (((uint16_t) 0) << 1)| //自动重载被禁用 (((uint16_t) 1) <<<<0); //启动计数器 返回0; } 中断 void timerIsr (void){ UART_SW_Tx_only_transmitNullTermString ("\r\ntimerIsr"); }