stm8s103-PWM输出与输入捕获
芯片:stm8s103F3P6
软件环境:IAR for stm8 2.20.3
功能简述:使用定时器1(PD4-Tim1_ch3)输出100Hz 50%占空比的PWM波形;
定时器1(PC6-Tim1_ch1/2)检测输入PWM 波形频率和占空比;
在工程环境无问题情况下,在主函数中直接添加代码:
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST); //初始化引脚为 输出推拉,低电平,10MHzTIM2_DeInit(); //定时器2寄存器恢复到默认状态 TIM2_TimeBaseInit(TIM2_PRESCALER_16, 10000); //16分频, 1MHZ 10000 = 10ms F= 100hzTIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 5000, TIM2_OCPOLARITY_HIGH); //占空比50%TIM2_Cmd(ENABLE); //使能定时器2
参考链接:https://blog.csdn.net/qq_18842031/article/details/74531738
PWM输出是没问题的,但是其输入捕获问题是只能检测到频率,不能检测到占空比;
若需要同时检测频率和占空比,还需要使用定时器1的通道1和2,
代码如下:
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT); //输入浮动,没有外部中断 TIM1_DeInit(); //tim1 定时器寄存器全部复位 TIM1_TimeBaseInit(0x0f, TIM1_COUNTERMODE_UP, 50000-1, 0);// 50ms 最小捕获50hz 设置时间分频 向上计数 捕捉50Hz及 以上的周期和占空比TIM1_PWMIConfig(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00); //选择TI1输入上升沿触发 选择TI2输入下降沿触发 输入捕捉预定标器 无滤波TIM1_SelectInputTrigger(TIM1_TS_TI1FP1); //滤波后输入TI1TIM1_SelectSlaveMode(TIM1_SLAVEMODE_RESET);//复位输入TIM1_ClearFlag(TIM1_FLAG_CC1); //指定要清除的标志TIM1_ClearFlag(TIM1_FLAG_CC2); //指定要清除的标志TIM1_ITConfig( TIM1_IT_CC1, ENABLE); //去掉是查询方式,否则是中断方式TIM1_ITConfig( TIM1_IT_CC2, ENABLE); //去掉是查询方式,否则是中断方式TIM1_CCxCmd(TIM1_CHANNEL_1, ENABLE); //使能输入捕获通道1TIM1_CCxCmd(TIM1_CHANNEL_2, ENABLE); //使能输入捕获通道2TIM1_Cmd(ENABLE); //使能定时器
但是仅仅这样写是不行的,因为PC6的定时器功能,需要使能复用功能才可以使用,不然的话,配置是无效的。
网上大佬还是很多的,详细配置方式见链接:https://blog.csdn.net/qq_18842031/article/details/77104097
最后需要稍微计算下就可以得到频率和占空比了:
INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)
{ uint16_t num = 0;static uint16_t num1;static uint32_t num2;uint8_t data[11]={0};uint8_t len = 0;if(TIM1_GetITStatus(TIM1_IT_CC1) != RESET) //如果CH1边沿触发 { num1 = TIM1_GetCapture1(); TIM1_ClearITPendingBit(TIM1_IT_CC1); //清除标志位 } else if(TIM1_GetITStatus(TIM1_IT_CC2) != RESET) //如果CH2边沿触发 { num2 = TIM1_GetCapture2(); //TIM1_ClearITPendingBit(TIM1_IT_CC2); //清除标志位 duty = ((num2 * 100) / num1); //计算占空比fre = 1000000/( num1); //计算频率}}
stm8s103-PWM输出与输入捕获相关推荐
- 【蓝桥杯嵌入式】【STM32】10_InputCaputer之输入捕获
文章目录 前言 1.输入捕获原理 1.1.设置输入捕获滤波器 1.2.设置输入捕获的极性 1.3.设置输入捕获的映射通道 1.4.设置输入捕获分频器 1.5.捕获到有效信号可开启中断 1.6.捕获实现 ...
- cc2530定时器和捕获比较_STM32定时器PWM和输入捕获事件
这几天在调试STM32407的定时器扩展功能,顺便研究了下利用定时器完成PWM波比较输出以及输入捕获事件, 捕获输入波形的高电平时间,具体代码如下,供参考学习,如有问题,请留言随时沟通!main函数部 ...
- K60的FTM的PWM、输入捕获、正交解码
FTM是一个神奇的模块,他能输出PWM,能输入捕获,能输出比较还能正交解码.英文全称是FlexTimer Module,你可以理解为高级定时器模块.易用定时器模块等等.不仅仅在Kinetis 32位处 ...
- 8、【STM32】定时器(TIM)——中断、PWM、输入捕获实验(一文精通定时器)
目录 前言 理论学习 一.定时器中断 1.1.时基单元包括: 1.2.通用定时器功能 1.3.计数器模式 1.3 相关寄存器 二.定时器PWM输出 2.1.PWM输入模式 2.2.定时器PWM输出 2 ...
- K60的FTM的PWM、输入捕获、正交解码(未理解完)
FTM模块默认对应引脚有3个FTM模块 FTM是一个神奇的模块,他能输出PWM,能输入捕获,能输出比较还能正交解码.英文全称是FlexTimer Module,你可以理解为高级定时器模块.易用定时器模 ...
- STM32学习笔记(四)TIM定时器运用之输入捕获
一.输入捕获 1.1输入捕获简介 简称IC(Input Capture),输入捕获可用于测量信号波形(例如PWM波形)的频率.占空比.脉冲间隔.电平持续时间等参数,也可以触发捕获中断. 输入捕获的过程 ...
- STM32F4系列HAL库配置定时器实验——输入捕获
STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...
- STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)
目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...
- stm32 PWM输入捕获
普通的输入捕获,可使用定时器的四个通道,一路捕获占用一个捕获寄存器. PWM输入,只能使用两个通道,通道1和通道2. 一路PWM输入占用两个捕获寄存器,一个捕获周期,一个捕获占空比. 这里,用通用定时 ...
- STM32-定时器输入捕获实验(捕获PWM方波的频率和占空比)
STM32-定时器输入捕获实验(捕获PWM方波的频率和占空比) 一.输入捕获模式 在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中.当 ...
最新文章
- layui select 与 vue 的结合使用
- Windows 2008 R2 X64 安装WebsitePanel(WSP虚拟主机管理面板)
- DM368开发 -- 常用指令演示
- php 中 t怎么打开,怎么在PHP项目中实现一个explort() 功能
- memcache 知识点
- linux php源码安装mysql_linux源码安装mysql5.7
- 双android手机同步工具,android手机同步数据PC(SyncDroid)
- 【linux学习笔记五】帮助命令
- 为Google Reader守夜。。。
- Proteus十字路口交通灯
- html古诗竖版,古诗词竖版图片
- python九宫格矩阵排数
- 17.10.21B组题解
- 如何实现开票申请及其审核功能
- KITTI 相关信息汇总
- 安装 FME Desktop 2020 教程(内置补丁可以有效激活软件)
- 怎样做竞品分析?竞品分析的意义?
- Javascript中的every()与some()的区别和应用
- 重修Java内功——书到用时方恨少
- uC/OS-II 中文手册
热门文章
- mysql自增函数_mysql实现自增函数
- Kubernetes 持续集成 SpringCloud
- excel最常用的八个函数
- 服务器车牌识别系统,车牌识别系统数据库连接问世
- html中if判断鼠标,怎样在网页里面检测鼠标
- python读取math_python调用通达信公式,python读取通达信公式结果
- python爬虫:用scrapy框架爬取链家网房价信息并存入mongodb
- 【易语言界面开发系列教程之 (EX_UI使用系列教程--第10讲(EXui右键菜单演示案例))】
- SpreadJS 15.0.5 SpreadJS Excel在线设计
- MySQL下载安装与配置详细教程