完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大侠们好,最近在捣鼓 cc1110 这个无线的芯片,
使用外部 26MHz 晶振 设置 time 1 定时器的定时时间 总是不对,不知道是哪里出错了,请大侠们指点指点 ? 代码如下: 我的定时时间的计算方法: 26MHz/128 = 203.125KHz, 1/203.125KHz = 5uS; 那么1ms 就是 1000/5us = 200次,所以TIM1_VAL 这个设置为200, #define TIM1_VAL ( 200 ) // #define TIMER1_INIT() do{ T1CTL = 0x00; T1CCTL0 = 0x00; T1CCTL1 = 0x00; T1CCTL2 = 0x00; TIMIF amp;= ~0x40; }while(0) //#define TIMER1_RUN(value) (T1CTL = (value) ? T1CTL |= 0x02 : T1CTL amp; ~0x03) //比较计数 #define TIMER1_RUN(value) (T1CTL = (value) ? T1CTL |= 0x01 : T1CTL amp; ~0x03) //自动装载 #define TIMER1_ENABLE_OVERFLOW_INT(val) (TIMIF = (val) ? TIMIF | 0x40 : TIMIF amp; ~0x40) void TIME1_Init(void); void TIME1_Init(void) { TIMER1_INIT(); T1CTL |= 0x0C; //128分频,设置为模模式 0000 1100 T1CC0L = (u8)TIM1_VAL; //溢出值低8位 T1CC0H = (u8)(TIM1_VAL gt; gt; 8); //溢出值高8位 TIMER1_ENABLE_OVERFLOW_INT(TRUE); //定时器 T1 溢出中断使能 INT_ENABLE(INUM_T1, INT_ON); //定时器 T1 中断使能 EA = INT_ON; //全局中断使能 TIMER1_RUN(TRUE); //启动定时器 } #pragma vector = T1_VECTOR __interrupt void Timer1_ISR(void) //1ms中断,实际不止1ms,貌似有几百ms了 ????????????????????? { TempFlag = !TempFlag; //改变闪烁标志 } void main() { TIME1_Init(); while(1) { if(TempFlag) { RLED = !RLED; TempFlag = 0; } } } |
|
相关推荐
1个回答
|
|
您好!首先,我们需要确保您的代码中设置了正确的时钟源和时钟分频。在 CC1110 中,TIME1 定时器的时钟源可以是系统时钟或外部时钟。您提到使用了外部 26MHz 晶振,所以我们需要确保定时器使用的是这个时钟源。
以下是一些可能的原因和解决方案: 1. 确保时钟源设置正确: 在您的代码中,确保设置了正确的时钟源。例如,使用以下代码设置系统时钟为外部 26MHz 晶振: ```c RFST = 0x0C; // 关闭所有模块 RFIO = 0x40; // 设置外部时钟源 RFST = 0x0D; // 开启所有模块 ``` 2. 检查时钟分频设置: CC1110 的时钟分频器(CLKDIV)可以用于调整系统时钟频率。确保您的代码中设置了正确的时钟分频值。例如,要将系统时钟设置为 13MHz,可以使用以下代码: ```c CLKDIV = 0x03; // 26MHz / (3 + 1) = 13MHz ``` 3. 检查定时器预分频设置: TIME1 定时器有一个预分频器,可以用于调整定时器的时钟频率。确保您的代码中设置了正确的预分频值。例如,要将定时器时钟设置为 1MHz,可以使用以下代码: ```c T1DIV = 0x03; // 13MHz / (3 + 1) = 3.25MHz ``` 4. 检查定时器模式和寄存器设置: 确保您的代码中正确设置了 TIME1 定时器的工作模式(如上升沿触发、下降沿触发等),并正确配置了定时器的寄存器,如 T1CCTLx、T1CCTLx、T1DIV 等。 5. 检查中断和回调函数: 如果您使用了定时器中断,请确保正确设置了中断使能位,并在中断服务程序中正确处理了定时器中断。 6. 调试和测试: 使用调试器逐步执行您的代码,检查定时器的寄存器值和中断标志位,以确定问题所在。 希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多关于您的代码和设置的详细信息,以便我们能够更准确地为您提供帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1874 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1658 浏览 1 评论
1143 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
759 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
789浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
611浏览 3评论
628浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
590浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 15:36 , Processed in 0.836435 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号