/******************************************************************************* * -------------------------------------------------------------------------------- * 实 验 名 : 输入捕获实验 * 实验说明 : 按键k_up是在定时器5通道1上,通过配置好定时器5输入捕获通道, 按下按键k_up或者连接脉冲发生器即可在串口上打印输出捕获高电平的时间, 在串口助手上显示其输出 ,按下复位开关重新运行 见文件内截图 ,程序设计中所有中断函数都放在中断stm32f10x_it.c文件 * 连接方式 : * 注 意 : 所用函数在头文件.c文件内 *******************************************************************************/ #include "public.h" #include "printf.h" #include "systick.h" #include "input.h" #include "key.h" /**************************************************************************** * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None ****************************************************************************/ int main() { u32 temp; key_init(); // 按键初始化 input_init(); // 输入捕获初始化 printf_init(); // printf初始化 while(1) { if((TIM5CH1_CAPTURE_STA&0x80)) // 成功捕获到了一次完整的高电平 { temp = TIM5CH1_CAPTURE_STA&0x3f; // 取出总共溢出的次数 temp = temp*65536; // 计算溢出时间总和 = 溢出次数 * 每次溢出的计数值65536 temp = temp + TIM5CH1_CAPTURE_VAL; // 得到总的高电平时间,TIM5CH1_CAPTURE_VAL为未溢出那一次的计数值 printf("高电平持续时间为:%d us\r\n", temp); TIM5CH1_CAPTURE_STA = 0; // 开启下一次捕获 } delay_ms(10); } }