c语言tim1-smcr是什么意思,【整理】STM8使用TIM1测量PWM波 | 勤奋的小青蛙

一基本TIM1测量PWM波形原理

767ed97cfb753ec28241fca1d43748d1.png

根据上图所示测量PWM的基本思想如下:

每个上升沿开始计数,监测到下降沿时记录下当前值为高电平时间,再检测到一个下降沿记录下当前值为周期,同时清零计数器开始测量下个周期。

二TIM1 的硬件结构

1 信号如何输入的

打开手册 翻到  17.5.2 输入模块

edf1f49aec3ed53b3cfbdd4ab0d5392e.png

如图61,输入部分对相应的TIx输入信号采样,并产生一个滤波后的信号TIxF。然后,一个带极性选择的边缘监测器产生一个信号(TIxFPx),它可以作为触发模式控制器的输入触发或者作为捕获控制。该信号通过预分频进入捕获寄存器(ICxPS)。

根据该图和说明了解到和PWM测量相关的信息

1) TIM1有四个外部IO引脚可以输入信号 TIM1_CHx

2)  我们所关注的边沿检测是通过中间的边缘监测器检测出来的

3)   一个输入信号的上升沿 下降沿信号(TI1FP1,TI1FP2)可以配置到不同的通道上

那么我们就可以将一个引脚输入的PWM信号的上升沿和下降沿分别送入两个通道捕获。

2触发

如果是用的普通的计时器例如古董51的话,计时器清零的步骤就可以在上升沿中断的时候手动清零,不过STM8 的TIM1有个复位触发模式很适用:

计数器开始依据内部时钟计数,然后正常计数直到TI1出现一个上升沿;此时,计数器被清零然后从0重新开始计数。同时,触发标志(TIM1_SR1寄存器的TIF位)被置位,如果使能了中断(TIM1_IER寄存器的TIE位),则产生一个中断请求。 下图显示当自动重装载寄存器TIMx_ARR=0x36时的动作。在TI1上升沿和计数器的实际复位之间的延时取决于TI1输入端的重同步电路。

1b5fb87f7fe757b11b605eef28b8b19f.png

三 寄存器

1配置信号输入路径

点击手册目录 从TIM1寄存器描述的目录中找 输入捕获相关的寄存器。

这里发现有4个CCMRx正好和框图中四个TIM输入通道对应上了。通过介绍了解 位1:0是用来控制信号输入路径的。

我的实验板上信号输入的引脚是TH2,那么就该把TH2分成两路分别连接到TIM1的两个通道上(IC1,IC2)

TIM1->CCMR1 |=0x02;// ch1到ti2fp1

TIM1->CCMR2 |=0x01;// ch1到ti2fp1

2设置捕获极性

信号已经连到IC1 IC2了,那么下一步就该对IC1 IC2进行配置了。顺着目录往下看跟捕获相关的寄存器还有CCERx

通过阅读描述了解该为可控制ICx的捕获边沿极性和使能。

实验中的配置如下

TIM1->CCER1 |= 0x13;//使能输入捕获ti2fp1 ti2fp2   ti2fp1下降沿捕获  ti2fp2上升沿捕获

3触发模式

从模式控制寄存器SMCR中可选择复位模式和 触发源

TIM1->SMCR |=0X64;//选源触发源 ti2fp2  触发方式 复位模式

最后使能下中断配置就大功搞成咯

TIM1->IER |=0x06;//使能中断ch1 ch2

四 测试程序  STVD

将PWM波注入CH2引脚。在中断返回前设置断点,然后进行仿真,

将IC2Value,IC1Value;放入watch窗口观察。

void TIME1_INIT(void)

{

TIM1_DeInit();

//时基单元

//时钟触发控制器

TIM1->SMCR |=0X64;//选源触发源 ti2fp2  和触发方式 复位

//捕获 比较

TIM1->CCMR1 |=0x02;// ch1到ti2fp1

TIM1->CCMR2 |=0x01;// ch1到ti2fp1

TIM1->CCER1 |= 0x13;//使能输入捕获ti2fp1 ti2fp2   ti2fp1下降升沿  ti2fp2上升沿

//中断

TIM1->IER |=0x06;//使能中断ch1 ch2

TIM1_Cmd(ENABLE);

}

void main(void)

{

TIME1_INIT();        // 定时器1 输入捕获初始化

enableInterrupts(); // 开总中断

while(1);

}

中断函数

extern unsigned int IC2Value,IC1Value;

@near @interrupt void TIM1_CAP_COM_IRQHandler (void)

{

if(TIM1_GetITStatus(TIM1_IT_CC1))

{

IC1Value=TIM1_GetCapture1();          //读取高电平时间

TIM1_ClearITPendingBit(TIM1_IT_CC1);

}

if(TIM1_GetITStatus(TIM1_IT_CC2))

{

TIM1_ClearITPendingBit(TIM1_IT_CC2);

IC2Value=TIM1_GetCapture2();            //读取周期

}

return;

}

文章的脚注信息由WordPress的wp-posturl插件自动生成

|2|left

打赏

1b6439c6a040252321edad911c85491b.png微信扫一扫,打赏作者吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/251706.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

绝地求生亚服的账号所有服务器通用吗,绝地求生亚服在哪 怎么进入亚服服务器...

绝地求生亚服在哪?怎么进入亚服服务器?绝地求生因为目前没有在国内开设服务器,因此国内玩家大部分只能去亚服去玩。今天小编就来介绍绝地求生亚服的进入方法。 绝地求生亚服服务器在哪 1、小伙们如果想要选择亚服的话,在游戏的主界面点击左下角。 2、然…

云计算机玩绝地求生,三分钟教你如何用低配电脑畅玩绝地求生!

2017年是鸡年也是吃鸡年,从三月份绝地求生的公测到今天吃鸡游戏的无限火爆,可能你已经体验过各种吃鸡手游,比如荒野行动、终结者2、全军出击、刺激战场等等等等或者说这些手游的PC版。 也许你玩的很开心,也许你玩的很刺激&#xf…

winds10 关于绝地求生游戏中不能使用语音的解决方法

绝地求生名字后面有个禁用喇叭解决办法,网上找了一圈很多方法不适合我,游戏重新安装,游戏DNS重置,游戏完整性修复都没有解决问题。话不多说直接进入主题。 测试下这里有没有声音如果没有我们进一步解决 winds10系统 有些安装包是默…

android 模拟器 pubg,雷电安卓模拟器怎么玩绝地求生刺激战场 PC端带你愉快吃鸡...

《绝地求生:刺激战场》是一款由腾讯出品的吃鸡手游,那么现在可以通过雷电安卓模拟器在电脑上操作,这样更加容易出好成绩,下面通过这篇文章给大家讲讲如何在雷电安卓上玩刺激战场手游,一起来了解一下吧! 类别…

绝地求生国际服苹果版服务器维修,绝地求生国际服ios手机版

绝地求生国际服ios手机版是一款腾讯推出的多人激战RPG手游,独具特色的枪战玩法,充满激情的吃鸡元素,身临其境的去感受作战的热潮,以强大的求生欲望来完成消灭敌人的任务,以最强的作战手法来赢得最终的胜利,…

Win11玩绝地求生(PUBG)崩溃怎么办?Win11玩绝地求生崩溃解决方法

绝地求生(PUBG)是一款非常有趣射击类游戏,哪怕升级Win11系统也有很多小伙伴都在体验,但有不少小伙伴在Win11系统更新完之后发现经常会出现崩溃或者闪退的情况,很多小伙伴不清楚如何解决,那么下面就和小编一…

绝地求生LowLevelFatalError报错原因

LowLevelFatalError 低级致命错误通常是游戏本来运行没有任何问题,突然有一天,游戏开始闪退报错,并弹出这个报错。 原因: 一般情况都是因为电脑内存溢出问题导致的,不是说你电脑16G运存,就不会因为运行PU…

liftOver 不同版本基因组文件相互转化

大家好,我是邓飞。前一段时间有小伙伴在星球提问:想将不同版本的SNP数据合并,不想重新call snp,想把绵羊的V2和V4版本的数据合并,具体来说,是V2转为V4然后与V4合并。 我建议用liftOver软件进行处理&#xf…

ue4 安装教程

ue4 安装入门教程 UE4 的全名是 Unreal Engine 4,中文译为“虚幻引擎4”。UE4 是一款由 Epic Games 公司开发的开源、商业收费、学习免费的游戏引擎。 基于 UE4 开发的大作无数,除《虚幻竞技场3》外,还包括《战争机器》《质量效应》《生化奇…

吃鸡 反作弊服务器未运行,绝地求生反作弊服务(BE)修复工具

绝地求生反作弊服务be未正常运行怎么解决?绝地求生反作弊服务(BE)修复工具是一款修复绝地求生游戏中出现“反作弊服务(BE) 为正常运行”问题的工具,支持一键修复游戏,让你游戏运行无忧! 绝地求生反作弊服务be未正常运行解决方法 绝…

绝地求生按键指南-教程

绝地求生按键指南 1.基础按键普通战斗战斗详情 载具载具详情 游泳地图用户界面 2.进阶操作 1.基础按键 按键 作用 鼠标左键 射击 鼠标右键 瞄准 R 装弹 G 切换武器 左ctrl 步行 物品栏按ctrl键 拆分物品数量 左shift 冲刺,开车加速,如果饮料喝的多&…

计算机低配配置单,吃鸡需要什么配置|电脑玩绝地求生最低配置多少

吃鸡游戏要求什么样的配置?pubg绝地求生现在特别火,对电脑硬件要求特别高,内存就需要6G或8G,很多玩家忍痛剁手,因为现在内存价格飙升,那么绝地求生大逃杀要求怎样的硬件配置呢?下面小编跟大家介…

绝地求生测试服画质优化软件,绝地求生Reshade安装教程-PUBG画质优化插件使用教程...

Reshade是一款经《绝地求生大逃杀》官方允许使用的游戏画质增强插件,由于PUBG本身的游戏画面灰暗且亮度低,很难发现阴影或草丛下的敌人,而使用Reshade则能拥有更高的色彩明度,使画面更清晰,让你更容易发现敌人&#xf…

吃鸡更新找不到服务器,绝地求生PUBGExperimentalServer为什么找不到_绝地求生PUBGExperimentalServer安装方法_玩游戏网...

《绝地求生》自救型除颤器位置大全 《绝地求生》自救型除颤器在哪找?具体的位置介绍小编已经为大家准备好了。那么接下来,就跟随玩游戏网的小编一起继续往下看,感兴趣的小伙伴一定不要错过哦!自救型除颤器位置大全与复活赛类似&am…

Ethercat学习-从站FOE固件更新(QT上位机)

文章目录 简介1、源码简介1、ec_FOEread2、ec_FOEwrite3、ec_FOEdefinehook 2、程序思路3、修改实现1、ecx_FOEwrite_gxf2、ecx_FOEread_gxf 4、其他5、结果6、源码连接 简介 FOE协议与下位机程序实现过程之前文章有提到,这里不做介绍了。这里主要介绍1、QT上位机通…

Feign的另一种玩法-动态Feign

1.Feign传统方式的不足 ①.在微服务架构中,当我们使用Feign传统方式进行服务调用的时候,需要在每个服务消费者中添加FeignClient接口,编写对应的方法,而且当服务生产者Handler新增方法之后,服务消费者也要在FeignClient接口中添加方法,这样的话,会有些累赘. 那么能不能在调用服…

Feign总结

目录 Feign简介 Feign能干什么 Feign与Ribbon区别 Feign和Open Feign的区别 Feign和Dubbo的区别 Feign的使用 Feign的调用方式 Feign中使用熔断器 Feign的核心原理 Feign远程调用的基本流程 Feign 远程调用的重要组件 远程接口的本地JDK Proxy代理实例 调用处理器…

feign漫谈

feign的简单使用。 文章目录 一. 什么是feign二. 准备工作三. 如何使用3.1 定义pom文件3.2 定义配置文件及启动类注解3.3 定义feign接口 四. 部署 一. 什么是feign 远程调用框架 二. 准备工作 需要nacos环境: 涉及到feign调用,就没法抛开注册中心&am…

Feign简介

Feign feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。 Feign是什么? Feign是一个声明式WebService客户端…

feign的使用入门篇

Feign简介 Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。 它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessag…