嵌入式系统:输入捕获/输出比较

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

输入捕获/输出比较

在这里插入图片描述


(一)工作原理

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值