DM6437下裸定时器在CC5.4下开发的疑问现象解决

来源:本站
导读:目前正在解读《DM6437下裸定时器在CC5.4下开发的疑问现象解决》的相关信息,《DM6437下裸定时器在CC5.4下开发的疑问现象解决》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《DM6437下裸定时器在CC5.4下开发的疑问现象解决》的详细说明。
简介:之前写的code发现有Bug存在,于是去调试这个定时器,悲剧的是当时自己使用的最简单的定时模式,竟然出现一些难以理解的现象。

之前写的code发现有Bug存在,于是去调试这个定时器,悲剧的是当时自己使用的最简单的定时模式,竟然出现一些难以理解的现象。

DM6437的Time有64bit ,32 bit等最简单的定时模式,对应的工作末模式包括once stop 和continuous 模;

以配置64bit模式如下:

/*set 1us unit times*/

void timer0_init(Uint32 times)

{

TIMER0_TGCR = 0;

TIMER0_EMUMGT = 0x0003;

TIMER0_TIM12 = 0;

TIMER0_TIM34 = 0;

TIMER0_PRD12 = times * 27; // 1us

TIMER0_PRD34 = 0;

TIMER0_TGCR = (0 << 2) |//TIMMODE 64bit GP Timer

(1 << 1) | //TIMER0 3:4 no reset

(1 << 0); // TIMER0 1:2 no reset

TIMER0_TRC = (0 << 22) |

(0 << 8) | //internal clock

(0 << 6) ; //one-time mode disable

}

void start_timer0()

{

TIMER0_TRC |= (1 << 6);

}

void stop_timer0()

{

TIMER0_TRC ^= (1 << 6); //disable the timer0.

TIMER0_TIM12 = 0;

TIMER0_TIM34 = 0;// clear count value

}

是的,配置代码就是这么简单,但是虽然我设置了once stop启动,但是JTAG拉着仿真器进入中断后,你会发现其实TIM12和TIM34的数值为0,这按datasheet说的是保持当前的count value,(Whenthe timer is enabledfor onetime operation(ENAMODE12=1),it counts up until the counter value equals the period value and then stops.)。故一直以为是配置有误了。占时还不知道这里面的原因,不过可以肯定的是,定时器是按着正常的配置来工作了的。只是进入中断后才出现的清空。

好吧,就这样的留点东西,分享给大家。

原因:目测可能是as hadow register当ccs5读取的时候?不过实测貌似的确自动回归0

提醒:《DM6437下裸定时器在CC5.4下开发的疑问现象解决》最后刷新时间 2024-03-14 01:12:12,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《DM6437下裸定时器在CC5.4下开发的疑问现象解决》该内容的真实性请自行鉴别。