恩~这是博主的第一次发博客用來记录博主几个小时之内感到困难的问题,写的不好还请大家指正!
今天,本来想用TIM1发一个38KHZ的脉冲来驱动红外发射管的(就是简单的发送无需协议)。可是必须每次发送之后,必须延迟一段时间暂定500ms。在这段延时中是不需要PWM波的。
开始我想的还挺简单。直接开啟关闭定时器就好了
可是,用示波器一看IO口的脉冲电平输出根本就不是恒定的,会有波动至于为什么,大家想一下就明白了是由於程序运行的时间问题。
“STM32定时器输出指定脉冲个数”于是一大堆答案就出来了。可是仔细一看大部分都是“定时器主从方式输出可控个数的PWM脉冲”。这就很麻烦了还要用到两个定时器。本人有点不耐烦了仔细想了想。便有了现在的想法通过TIM1的更新中断来控制脉沖个数(尽量在几十个以内,几个脉冲就更好了)并达到指定个数之后,关闭定时器
***psc:时钟预分频数 //用于IR红外的驱动 //此部分需手动修妀IO口设置 // 默认映像管脚,无需配置 TIM1->RCR = 0;//高级定时器配置输出必须配置,配置该值为0则每次更新溢出都会中断 //定时器1中断服务程序