完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
新唐N76E885定时器配置问题,开机只进入一次中断,是哪里配置错了?
/************************************************************************** * 函 数: tiMER0_Init * 功能说明: TIMER0初始化 * 形 参: * 返 回 值: ***************************************************************************/ void TIMER0_Init() { //Timer0设置推完输出模式 clr_P2M1_0; set_P2M2_0; System_Clock_Select(E_HIRCEN); //Fosc = 22.1184MHz Internal RC TMOD = 0x00; //Timer 0 and Timer 1 mode configuration u8TH0_Tmp = (8192-TH0_INIT)/32; //TIMER0计数器13位8192 u8TL0_Tmp = (8192-TL0_INIT)%32; clr_T0M; //定时器0时钟选择1/12系统时钟 clr_T1M; //定时器1时钟选择1/12系统时钟 clr_TR1; //Timer1 stop TH0 = u8TH0_Tmp; TL0 = u8TL0_Tmp; set_ET0; //enable Timer0 interrupt set_EA; //enable interrupts set_TR0; //Timer0 run set_TR1; } /************************************************************************** * 函 数: Timer0_ISR * 功能说明: TIMER0中断函数 * 形 参: * 返 回 值: ***************************************************************************/ void Timer0_ISR (void) interrupt 1 //interrupt address is 0x000B { // TH0 = TH0_INIT; // TL0 = TL0_INIT; if(TF0==1) { Timer_Sequence(); } clr_TF0; //P30 = ~P30; //P3.0 toggle when interrupt //Period = 10.85/2 ms@XTAL=22.1184MHz } |
|
相关推荐
1个回答
|
|
//设置TH0的初始值,定时1ms TH0 = 0xFF; TL0 = 0x9C; //设置计数方式为模式1,同时启动定时器 TMOD &= ~0x03; TMOD |= 0x01; //启动定时器0 TR0 = 1; //开启中断,并允许嵌套中断 ET0 = 1; EA = 1;} /*** * Timer0中断服务函数,每个定时1ms */void TIMER0_ISR() interrupt 1 using 1{ static uint16_t cnt = 0; cnt ++; if(cnt == 1000){ cnt = 0; //中断处理内容,每秒执行一次 } }}
根据代码,定时器设置的是模式1,每隔1毫秒会进入一次中断函数Timer0_ISR(), 在中断函数中cnt变量每隔1000次清零,中断处理内容每秒执行一次。 可以按照下面的方式修改代码: 1.首先确保开启了全局中断EA; 2.在主函数中的循环中添加while(1) { } 循环,保证程序不会退出,一直执行下去; 3.在main函数中调用TIMER0_Init()函数,开启定时器中断; 4.调用中断服务函数TIMER0_ISR()并在中断处理内容位置打印一条语句,观察是否每隔1秒执行一次。 修改后的代码如下: void main(){ TIMER0_Init(); while(1){ TIMER0_ISR(); } } //Timer0中断服务函数,每个定时1ms void TIMER0_ISR() interrupt 1 using 1{ static uint16_t cnt = 0; cnt ++; if(cnt == 1000){ cnt = 0; printf("Enter Interrupt every 1 second."); } } } |
|
|
|
只有小组成员才能发言,加入小组>>
854 浏览 0 评论
1182 浏览 1 评论
2560 浏览 5 评论
2893 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2749 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1173浏览 3评论
213浏览 2评论
481浏览 2评论
396浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
478浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 04:08 , Processed in 0.977073 second(s), Total 45, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号