完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
很简单的使用定时器0定时两秒,控制PWM波,发现没有进入定时器0中断,一直没有发现问题出在哪一步,哪位大哥帮忙看看! void main() { IO_Config(); //将所有的IO口配置为准双向口 Uart_Init(); //初始化串口 timer0_Init(); ADC_Init(); //初始化ADC PWM_Init(); EA = 1; //打开总中断 Start_PWM(CYCLE1M); while(1) { } } bit Delay_Status = 0; volatile u8 cnt = 0; void Timer0_Init(void) //20毫秒@24.000MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0xC0; //设置定时初始值 TH0 = 0x63; //设置定时初始值 TR0 = 1; //打开定时器 ET0 = 1; } void PWM_Init(void) { P_SW2 |= 0x80; //使能访问XSFR,否则无法访问以下特殊寄存器 PWMCFG |= PWM1A_SET_0; //设置端口的初始电平 PWMCFG |= PWM1B_SET_0; PWMCFG |= PWM2A_SET_0; PWMCFG |= PWM2B_SET_0; PWMCKS = 0x00; //选择PWM时钟为Fosc/(0+1) //PWMC = CYCLE; //设置PWM周期 PWM4T1 = 1; PWM4T2 = 0x00; PWM4CR = 0x00; //PWM4输出到P2.2,使能PWM4T2翻转中断 PWMCR |= 0x84; //使能PWM发生器,使能PWM计数器归零中断 P_SW2 &= ~0x80; } //起始频率工作,振幅比 void Start_PWM(u16 CYCLE) { P_SW2 |= 0x80; if(Delay_Status == 1) { PWMCR &= ~0x84; PWM2A = 0; } else { PWMC = CYCLE; //设置pwm周期 PWM4T1 = 1; PWM4T2 = CYCLE*DUTY/100+1; PWMCR |= 0x84; //使能PWM信号输出 } P_SW2 &= ~0x80; } void Timer0_Isr(void) interrupt 1 { cnt++; if(cnt >= 100) //100*20ms=2s { cnt = 0; Delay_Status = !Delay_Status; } }
|
|
相关推荐
1个回答
|
|
定时器中断无法进入,请查看数据手册中断服务程序是否写对,手册602/1473请查看下。
最佳答案
|
|
5 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
297 浏览 0 评论
708 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
375 浏览 0 评论
stm32f407+ksz8863rlli概率性ping不通
1090 浏览 1 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
515 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11334 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-1 07:11 , Processed in 0.653599 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号