PWM输入信号测量
该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:
·两个ICi信号被映射至同一个TIi输入。
·这两个ICi信号的有效边沿的极性相反。
·其中一个TIiFP信号被作为触发输入信号,而触发模式控制器被配置成复位触发模式。
例如,你可以用以下方式测量TI1上输入的PWM信号的周期(TIM1_CCR1寄存器)和占空比(TIM1_CCR2寄存器)。(具体取决于fMASTER的频率和预分频器的值)
1. 选择TIM1_CCR1的有效输入:置TIM1_CCMR1寄存器的CC1S=01(选中TI1)。
2. 选择TI1FP1的有效极性(用来捕获数据到TIM1_CCR1中和清除计数器):置CC1P=0(上升沿有效)。
3. 选择TIM1_CCR2的有效输入:置TIM1_CCMR2寄存器的CC2S=10(选中TI1FP2)。
4. 选择TI1FP2的有效极性(捕获数据到TIM1_CCR2):置CC2P=1(下降沿有效)。
5. 选择有效的触发输入信号:置TIM1_SMCR寄存器中的TS=101(选择TI1FP1)。
6. 配置触发模式控制器为复位触发模式:置TIM1_SMCR中的SMS=100。
7. 使能捕获:置TIM1_CCER1寄存器中CC1E=1,CC2E=1。
PWM输入信号测量实例
关键字:STM8S 输入捕获
引用地址:
STM8S 输入捕获学习
推荐阅读最新更新时间:2024-03-16 15:15
对STM8S单片机GPIO.C的理解
一、STM8S单片机GPIO.C的组成 实际上,STM8S 系列单片机需要使用的stm8s_gpio.c由以下几个部分组成: void GPIO_DeInit(GPIO_TypeDef* GPIOx) void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode) void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal) void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins)
[单片机]
stm8s跳出中断程序c语言,STM8S I2C总线中断程序
/*========================================================================================================== 本源程序文件内部使用的一些操作指令的宏定义 ==========================================================================================================*/ /*-----------------------------------------------------------------------------
[单片机]
TIM通用定时器:PWM输入捕获模式
一、概念理解 PWM输入捕获模式是输入捕获模式的特例,自己理解如下 1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。 2. 同一个TIx输入映射了两个ICx信号。 3. 这两个ICx信号分别在相反的极性边沿有效。 4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。 5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获 一个PWM周期(即连续的两个上升沿或下降沿) ,它等于包含TIM 时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。 6. 同样另一个捕获通道捕获触发信号和下一个相
[单片机]
Atomthreads关于STM8S低功耗的思考
Atomthreads像众多操作系统一样,在没有任务调度是会调用idle。 static void atomIdleThread (uint32_t param) { /* Compiler warning */ param = param; /* Loop forever */ while (1) { /** todo Provide user idle hooks*/ } } atomthreads中atomIdleThread()是以线程的形式存在,也就是最低优先级线程。作者默认没有填写这个函数。 uint8_t atomOSInit (void *idle_thread_sta
[单片机]
STM32之通用定时器输入捕获模式
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_
[单片机]
STM8S之时钟设置
在测量一些CATV系统指标中,常常要用到频谱仪,为了使测量结果准确,在频谱仪的使用上常涉及到一个分辨带宽设置的问题。要弄清这个问题,得要知道一些频谱仪的基本原理。图1是频谱仪的基本原理框图。图中的中频频率(输入信号通过与本振信号的和频或差频产生),本振受斜波发生器的控制,在斜波发生器的控制下,本振频率将从低到高的线性变化。这样在显示时,斜波发生器产生的斜波电压加到显示器的X轴上,检波器输出经低通滤波器后接到Y轴上,当斜波发生器对本振频率进行扫描时显示器上将自动绘出输入信号的频谱。检波器输出端的低通滤波器称为视频滤波器,用在分析扫描时对响应进行平滑。 1、分辨带宽 在频谱分析仪中,频率分辨率是一个非常重要的概念,它是由中频滤波
[单片机]
STM32CubeMX系列 | 输入捕获
1. 输入捕获简介 输入捕获模式可以用来测量脉冲宽度或者测量频率,下图以测量脉宽为例来说明输入捕获的原理 假定定时器工作在向上计数模式,图中t1-t2的时间就是我们需要测量的低电平时间。测量方法为:首先设置定时器通道x为下降沿捕获,在t1时刻就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为上升沿捕获,到t2时刻又会发送捕获事件,得到此时的CNT值(记为CCRx2)。在t1-t2之间可能产生N次定时器溢出,因此需要对定时器溢出做处理,防止低电平太长导致数据不准确。 t1-t2之间计数的次数为:N * ARR + CCRx2,再乘以CNT计数周期即可得到低电平持续时间 2. 硬件设计 本实验通过TIM5的通道1输入
[单片机]
关于STM8S IAR 无法下载程序,以及无法进去中断的问题
之前内有用过STM8 一会再用STM32 做一个小项目时 觉得STM8也有库应该很方便就直接选了它,结果调试的时候各种心酸,本想着一天解决的任务,结果拖了三天。接下来介绍一下遇到的主要问题 以及解决方法。 1、IAR无法下载程序问题 首先关于芯片型号设置就不说了 网上一大堆,主要是Vcap 引脚对地电容的取值,网上普遍说1uF, 由于我做了两个板子 一个PCB一个覆铜板 PCB没问题 ,但是覆铜板1uF 就下不进去程序,后来改成0.1uF才可以。如果软件配置对了,现在不进去很有可能是这个电容的问题。 2、定时器进不去中断问题 尝试了TIM2 TIM4 都进不去,我是用的是风驰 分享的STM8s207寄存器版本的例程,其他都
[单片机]