历史上的今天
今天是:2025年02月20日(星期四)
2021年02月20日 | STM32f4输入捕获,比原子更简单的写法
2021-02-20 来源:eefocus
有没有谁和我一样,感觉正点原子的输入捕获函数看不懂
可能是我太笨了哈哈,所以参考网上资料自己写了一个
用的是正点原子stm32f4探索者板子。按键GPIO口是A5
代码测试过很多次,绝对没问题
//基本定时器里的配置,
//84-1是分频为1微秒1次。
//2000000-1是2s就溢出
tim5.TIM_Prescaler=84-1;
tim5.TIM_Period=2000000-1;
///
u8 BUHUO_Flag=0;//捕获状态初始值为0,检测到上升沿后为1
u8 update_times=0;//记录更新/溢出次数
u32 VAL1=0,VAL2=0,Sum_tim=0;//上升沿的值,下降沿的值,总时长
/*完整中断服务函数代码*/
void TIM5_IRQHandler(void)
{
if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)
{
if(BUHUO_Flag==1)//只有当检测到上升沿之后才有效
{
update_times++;//记录溢出次数
}
}
if(TIM_GetITStatus(TIM5,TIM_IT_CC1)!=RESET)//检测到捕获中断了
{
if(BUHUO_Flag==0)//是上升沿中断
{
VAL1=TIM_GetCapture1(TIM5);//记录上升沿出现的时刻
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//设置下降沿检测
BUHUO_Flag=1;//改捕获标志
}
else
{
if(update_times==0)
VAL2=TIM_GetCapture1(TIM5);//此处需要判别是否已经在检测下降沿后有溢出
else if(update_times>=1)//如果溢出,那么要知道溢出的次数
{
VAL2=TIM_GetCapture1(TIM5)+2000000*update_times;
update_times=0;//结束后,给更新溢出标志位置0
}
Sum_tim=VAL2-VAL1;//计算时间
printf("HIGH:%d usrn",Sum_tim);//打印到串口上
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//重置为上升沿检测
BUHUO_Flag=0;//改标志
}
}
TIM_ClearITPendingBit(TIM5,TIM_IT_Update|TIM_IT_CC1);
}
好用点个赞!
史海拾趣
|
各位有没有想过, 到底CCD上那片玻璃片是干嘛用的?--- 那片滤光片,正确名称叫”光学低通滤波器” (OLPF)! 啊!不就是片破玻璃片嘛! 且听我道来: 滤光片的功用:1.滤除红外线. 2.修整进来的光线 滤除红外线: 彩色CCD也可感应红外线,就是因为会感应 ...… 查看全部问答> |
|
我用CH7005将LCD信号转换成VGA输出,在640*480分辨率下能在VGA输出,但是在800*600分辨率下不能输出。 640*480分辨率的相关注册表配置如下:(谢谢知道的大侠指点下这些该怎么配置,下面的配置是借别人的配置)\"Clkval_TFT\"= DWORD:1 \"vbpd\" ...… 查看全部问答> |
|
keil uvision3 device list 里面没有LPC2148 想自己添加 keil uvision3 device list 里面没有LPC2148 想自己添加,但是在添加菜单里面不知道,最后options 应该怎么写,我是菜鸟高手帮帮忙,谢谢各位… 查看全部问答> |
|
我刚刚初学A V R 是一个新手 用的是AVR studio4 昨天买来单片机开发板,看着视频做 我把他的示例文件 自己用手动输了一遍 提示gcc plug-in: Error: Object file not found on expected location D:\\cyuyan\\de ...… 查看全部问答> |
|
这个电路的主要作用就是检测SR两端的电压波动,通过U1差动输入和U2的比较作用,从而实现光耦的通断 我想问的是电容C1和C2起的作用是什么? 哪位大神给指点一下吧 跪谢… 查看全部问答> |
|
在上次(https://bbs.eeworld.com.cn/thread-440392-1-1.html)我们探讨了特别有趣的 MSP430 属性:尽管 MSP430 的电源电压范围很宽(1.8 至 3.6V),但功耗会随提供给 MCU 的特定电压变化而变化。换句话说,电源电压从 1.8V 提高到 3.6V 会明显增 ...… 查看全部问答> |




