1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这个代码,我调用过来,发现定时器0可以进入中断,但是定时器1却不能进入中断。使用的是内部时钟,外部没有加晶振。
void timerInit(void) { // Timer0选择HXT做时钟源,并且不除频 / // CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HXT, CLK_TMR0_CLK_DIVIDER(1)); //使能Timer0的时钟 // CLK_EnableModuleClock(TMR0_MODULE); //初始化Timer0,周期模式,每秒发生一次中断 TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1); //如果要修改预分频和比较寄存器的值可以用下面两个宏 TIMER_SET_CMP_VALUE(TIMER0, 23789);//修改比较寄存器的值 TIMER_SET_PRESCALE_VALUE(TIMER0, TIMER_COUNTER_FALLING_EDGE);//修改预分频的值 //使能Timer0中断 TIMER_EnableInt(TIMER0); NVIC_EnableIRQ(TMR0_IRQn); // 启动 Timer 0 TIMER_Start(TIMER0); // 使能Timer1的时钟// CLK_EnableModuleClock(TMR1_MODULE); //Initial Timer1 default setting // TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 1); // Configure Timer1 setting for external counter input function TIMER_SET_CMP_VALUE(TIMER1, 239); TIMER_EnableEventCounter(TIMER1, TIMER_COUNTER_FALLING_EDGE); TIMER_EnableInt(TIMER1); NVIC_EnableIRQ(TMR1_IRQn); // 启动 Timer 1 TIMER_Start(TIMER1); } |
|
相关推荐
1个回答
|
|
// 确定Timer0的工作模式,設定預設中斷週期 / // TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 50000); // 設定 Timer0 中斷服務程式&nbs ; NVIC_EnableIRQ(TMR0_IRQn); }
void TMR0_IRQHandler(void){ // 中斷處理程式} 以上是定时器0的初始化,下面是定时器1的初始化。void Timer2Init(void){memcpy((uint8_t *)&TIMER1->CMP, (uint8_t *)&TIMER0->CMP, sizeof(TIMER0->CMP)); // 定时器1的中断周期与定时器0的中断周期相同 / // 选择 timer2 的时钟源及除频 / CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR1_S_HXT, CLK_TMR1_CLK_DIVIDER(1)); // 开启 timer2 的时钟 / CLK_EnableModuleClock(TMR1_MODULE); // 初始化 timer2(与 timer0的区别仅在于 timer2的 CMP 相关参数比 timer0 多) / TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 50000); TIMER_EnableInt(TIMER1); NVIC_EnableIRQ(TMR1_IRQn);} void TMR1_IRQHandler(void){ // 中断处理程序} 定时器1的初始化与定时器0基本一致,但是因为要使用定时器1,所以需要修改时钟源,而且还要开启定时器1的中断使能,增加了TIMER_EnableInt(TIMER1);这一行代码。 由于定时器0可以进入中断,而定时器1却不能进入中断,可以检查以下几点问题: 1.确认定时器1的中断已经开启 2.确认中断服务函数名字是否正确 3.确认定时器1的时钟源是否正确 4.确认定时器1的中断周期是否正确 同时,建议使用调试工具查看定时器1的计数器和中断触发情况,以确定是否进入了中断。 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:04 , Processed in 1.068095 second(s), Total 77, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号