输入捕获/输出比较

(一)工作原理
1.输入捕获:捕获外部输入信号波形
- 信号周期
- 高低电平持续时间
(1)捕获类型
- 上升沿捕获
- 下降沿捕获
(2)测量原理:以基本定时器计数周期为基本单位,测量信号持续时间(计数值的整数倍)

- 上升沿/下降沿 — 上升沿/下降沿:信号周期
- 上升沿 — 下降沿:高电平持续时间
- 下降沿 — 上升沿:低电平持续时间
2.输出比较:输出不同类型的波形
(1)输出原理:以基本定时器计数周期为基本单位,输出不同时间的高低电平
(2)输出类型
- 上计数模式下

- 连续计数模式下

- 上下计数模式下

(3)PWM:脉宽调制波形(可调占空比波形)
- 占空比:高电平与总周期的比值
- 输出比较波形的一种特例
(二)编程
1.编程流程
(1)输入捕获
- 引脚复用为输入捕获模式
- 功能配置
- 基本定时器配置
- 输入捕获模式
- 捕获类型
- 输入捕获使能
- 中断配置(输入捕获中断\定时器溢出中断)
- 中断源
- 中断优先级
- 中断使能
- 中断处理函数
(2)输出比较
- 引脚复用为输出比较模式
- 功能配置
- 基本定时器配置
- 输出比较模式
- 输出比较类型
- 输出比较值
- 输出比较起始电平
- 输出比较使能
- 中断配置(定时器溢出中断\输出比较值中断)
- 中断源
- 中断优先级
- 中断使能
- 中断处理函数
2.编程实例
(1)输入捕获
- 寄存器版本
#include "msp.h"
#include "driverlib.h"
void main()
{
//关闭看门狗
WDTCTL = WDTPW | WDTHOLD;
//GPIO复用为HFXT
PJ->SEL1 &=~(BIT2 | BIT3);
PJ->SEL0 |= (BIT2 | BIT3);
//解锁时钟寄存器(0x695A)
CS->KEY = CS_KEY;
//HCLK 16MHz
CS->CTL2 |= CS_CTL2_HFXTFREQ_2 | CS_CTL2_HFXTDRIVE | CS_CTL2_HFXT_EN;
//SMCLK 4MHz
CS->CTL1 |= CS_CTL1_DIVS_2 | CS_CTL1_SELS_5;
//SMCLK 时钟源使能
CS->CLKEN |= CS_CLKEN_SMCLK_EN;
//锁住时钟寄存器(0xA569)
CS->KEY = CS_KEY_KEY_OFS;
//GPIO复用为输入捕获模式
P2->SEL0 |= BIT4;
P2->SEL1 &=~BIT4;
//时钟选择(1MHz)
TIMER_A0->CTL |= TIMER_A_CTL_SSEL__SMCLK | TIMER_A_CTL_ID__4;
//计数值1ms
TIMER_A0->R = 999;
//上升计数模式,计数值清零
TIMER_A0->CTL |= TIMER_A_CTL_MC__UP | TIMER_A_CTL_CLR

本文详细介绍了微控制器中输入捕获和输出比较的工作原理,包括上升沿/下降沿捕获和测量信号周期、高低电平持续时间,以及输出不同类型的波形。同时,提供了寄存器版本和库函数版本的编程实例,涵盖了输入捕获模式配置、中断处理和PWM波形生成等关键步骤。通过这些实例,读者可以深入理解微控制器的定时器应用和信号处理技术。
最低0.47元/天 解锁文章
3946

被折叠的 条评论
为什么被折叠?



