完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,是在Z-stack里做初始化,因为这个版本的协议栈已经不给定时器初始化的函数了,只能自己写。先前同样是定时器3,我用自由模式,就是重复从00~ff计数,每2us计一次,这样就255*2us进一次中断,但是设置成模模式和倒计数模式后,中断都进不去了,用窗口看T3CNT也没发现有计数,我推断是定时器3没工作,但是初始化后中断有进过一次啊,后面就进不了,怎么回事?有大神指教吗?
下面这个是倒计数模式的初始化函数,自由模式也是这样配置,就是那两句修改了下。[C] 纯文本查看 复制代码 void T3_Init(void){ T3CTL |= 0x08 ; //开溢出中断 T3IE = 1; //开总中断和T3中断 T3CTL |= T3_PSC_32; //32分频,32/16000000=2us //T3CTL &= ~0x03; T3CTL |= 0x01; //倒计数模式 T3CC0 = 0x64; //100*2us T3CTL |= 0x10; //启动 EA = 1; //开总中断} |
|
相关推荐
3个回答
|
|
帮顶。。。。
|
|
|
|
遇到相同问题,至今没想到如何解决,不过从英文版的数据手册T3定时器的解释中可以看到这句话“If a periodic interrupt is wanted
at the period value, this can be obtained by enabling an output compare interrupt on channel 0”,是不是在设置定时器3的同时还要使能一个输出比较通道啊? |
|
|
|
把定时器的比较输出引脚初始化后就可以了。
T4CTL |= 0X80; //16分频 T4CTL |= 0X02; //modelue模式 T4CTL |= 0X08; //溢出中断使能 IEN1 |= 0X10; //T4中断使能 EA = 1; T4CCTL0 |= 0X04; //modelue模式必须设置通道0/1的输出比较模式 T4CCTL0 |= 0X40; //modelue模式必须设置通道0/1的中断使能 该位默认就是1 如果将该置0 则不会产生中断 T4CC0 = 0X64; //计数值为100 TIMIF &= 0XF7; //溢出标记清除 IRCON &= 0XEF; //T4中断标记清除 T4CTL |= 0x10; //T4启动 |
|
|
|
只有小组成员才能发言,加入小组>>
3275 浏览 9 评论
2950 浏览 16 评论
3454 浏览 1 评论
8982 浏览 16 评论
4043 浏览 18 评论
1092浏览 3评论
564浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
561浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2297浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1854浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 02:15 , Processed in 1.170725 second(s), Total 85, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号