正点原子的输入捕获程序解读

这篇博客详细解读了正点原子输入捕获程序,利用TIM5单通道捕获上升沿和下降沿,测量高电平脉宽。在中断服务程序中,通过自定义的捕获状态寄存器TIM5CH1_CAPTURE_STA管理捕获过程,实现高电平时间的精确计算。博客还讨论了如何在捕获过程中处理溢出情况,并为后续实现多通道捕获提供了思路。
摘要由CSDN通过智能技术生成

正点原子的输入捕获程序是利用TIM5的单通道实现的,通过先捕获上升沿,清除计数器值,再更改捕获极性为下降沿,第二次进中断时读出高电平脉宽。一次捕获过程完成,下面解释程序中的问题和疑惑。

在这里插入代码片
extern u8  TIM5CH1_CAPTURE_STA;		//输入捕获状态	    				
extern u16	TIM5CH1_CAPTURE_VAL;	//输入捕获值
int main(void)
{		
u32 temp=0; 
delay_init();	    	 //延时函数初始化 
NVIC_Configuration(); 	 //中断优先级配置
uart_init(9600);	 //波特率为9600
LED_Init();			     //LED初始化

TIM3_PWM_Init(899,0); 		//PWM频率=72000/(899+1)=80Khz
TIM5_Cap_Init(0XFFFF,72-1);	//以1Mhz频率计数 
while(1)
{
	delay_ms(10);
	TIM_SetCompare2(TIM3,TIM_GetCapture2(TIM3)+1);//设置占空比,300是900的1/3,高电平最大持续时间是4.16us

	if(TIM_GetCapture2(TIM3)==300)
		TIM_SetCompare2(TIM3,0);	
	 		 
	if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获了一次上升沿
	{
		temp=TIM5CH1_CAPTURE_STA&0X3F;//统计溢出次数
		temp*=65536;//溢出时间总和
		temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
		printf("HIGH:%d us\r\n",temp);//打印高电平时间
		TIM5CH1
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值