完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void CLK_INIT(void) //Fmast 8M CPU 8M
{ CLK_CKDIVR = 0x08; @far @interrupt void tiM2_IRQhandler (void) { if(CC1IF_LOW) //检测到下降沿 { LOW_LEVEL_H=TIM2_CCR2H; LOW_LEVEL_L=TIM2_CCR2L; CC1IF_LOW=0; //清除中断标志位 //复位计数器 重新初始化计数器 TIM2_EGR |= 0x01; TIM2_PSCR |= 5; TIM2_CR1 |= 0x01; //启动计数 TIM2_SR1 = 0x02; //状态清零 //********检测同步码********// if(LOW_LEVEL_H>6 LOW_LEVEL_H<=10) { } } 请教下 LOW_LEVEL_H; LOW_LEVEL_L 时间是怎么计算的 时间单位是us吗 |
|
相关推荐
1个回答
|
|
STM8S103是一个8位微控制器,属于STMicroelectronics的STM8系列。在STM8S103中,LOW_LEVEL_H和LOW_LEVEL_L是用来存储定时器捕获值的高位和低位寄存器。这些值可以用来计算低电平的时间。
在您提供的代码中,CLK_CKDIVR寄存器被设置为0x08,这将影响系统的时钟分频。然后,通过定时器中断和捕获功能来测量低电平的时间。 以下是计算LOW_LEVEL_L和LOW_LEVEL_H时间的步骤: 1. 首先,确定系统的主时钟频率(Fmaster)。在您的代码中,Fmaster为8MHz。 2. 然后,查看CLK_CKDIVR寄存器的值。在您的代码中,它被设置为0x08。这个值将影响定时器的时钟分频。具体的分频值取决于定时器的类型和配置。 3. 接下来,计算定时器的时钟频率。这可以通过将主时钟频率除以CLK_CKDIVR寄存器的值来实现。 4. 在定时器中断中,当检测到下降沿时,读取定时器的捕获值。这些值存储在LOW_LEVEL_H和LOW_LEVEL_L寄存器中。 5. 将LOW_LEVEL_H和LOW_LEVEL_L的值组合起来,形成一个16位的捕获值。这可以通过将LOW_LEVEL_H左移8位,然后与LOW_LEVEL_L进行逻辑或操作来实现。 6. 最后,使用定时器的时钟频率和捕获值来计算低电平的时间。这可以通过将捕获值除以定时器的时钟频率来实现。 例如,如果定时器的时钟频率为1MHz(即Fmaster/8),捕获值为0x1234,那么低电平的时间可以计算为: 时间 = 捕获值 / 定时器时钟频率 = 0x1234 / 1MHz = 4660.5 微秒 请注意,这个计算假设定时器的时钟分频和捕获值是准确的。在实际应用中,可能需要考虑其他因素,如时钟抖动、定时器分辨率等。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1885 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1663 浏览 1 评论
1149 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
763 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1965浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
791浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
616浏览 3评论
631浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
594浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-14 18:47 , Processed in 1.258724 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号