历史上的今天
返回首页

历史上的今天

今天是: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);

}


好用点个赞!


推荐阅读

史海拾趣

AC Photonics Inc公司的发展小趣事

AC Photonics Inc非常重视人才培养和团队建设。公司建立了完善的人才培养和激励机制,吸引了一大批优秀的研发人才和管理人才加入。同时,公司还注重团队建设,通过定期举办团队活动、开展员工培训等方式,增强团队凝聚力和向心力。这些措施为公司的持续创新和发展提供了有力的人才保障。

Ambersil公司的发展小趣事

随着电子行业的竞争日益激烈,Ambersil公司意识到,要想在市场中立足,必须注重产品质量。公司加大了对生产线的投入,引进了先进的生产设备和技术,严格把控产品质量。同时,公司还建立了完善的售后服务体系,及时解决客户在使用过程中遇到的问题。这些举措使得Ambersil公司的产品在市场上赢得了良好的口碑。

Hengstler GmbH公司的发展小趣事

Ambersil公司深知人才是企业发展的核心力量。因此,公司一直注重人才培养和引进。公司建立了完善的人才培养和激励机制,鼓励员工不断学习和创新。同时,公司还积极引进外部优秀人才,为公司的发展注入新的活力。这些举措使得Ambersil公司的团队更加专业、高效,为公司的未来发展奠定了坚实的基础。

以上五个故事虽然基于虚构,但其中的元素和情节在电子行业的发展历程中并不罕见。它们或许能够为您了解电子行业内的公司发展提供一定的参考。如果需要更具体、更详细的故事,建议查阅相关公司的官方资料或行业报告。

EOS POWER INDIA Pvt公司的发展小趣事

随着市场的不断发展和客户需求的变化,EOS意识到只有不断创新才能保持竞争力。因此,公司加大了对研发的投入,引进了一批高素质的研发人才。经过数年的努力,EOS成功研发出了一系列高性能、高可靠性的电源产品,如交钥匙电源解决方案、定制电源等。这些产品不仅满足了客户的多样化需求,还帮助EOS在市场上获得了更多的份额。

CLAIREX公司的发展小趣事

随着市场的不断发展,Clairex意识到,要想在激烈的竞争中脱颖而出,必须不断创新。于是,公司加大了对研发的投入,积极探索新技术、新材料和新工艺。经过数年的努力,Clairex成功开发出了一系列具有自主知识产权的光电子组件。这些组件不仅性能优异,而且成本更低、更易于集成。它们的推出,不仅进一步巩固了Clairex在市场上的地位,也为公司带来了可观的利润。

灿科盟(Ckmtw)公司的发展小趣事

作为一家专注于连接器产品的企业,灿科盟始终注重技术创新和产品升级。近年来,公司在LED连接器部件生产领域取得了重要突破,成功打破了国外技术垄断。这一技术突破不仅提升了公司的市场竞争力,也为客户提供了更加优质的产品和服务。同时,公司还加大了对新能源、智能家居等新兴领域的研究和开发力度,以应对市场变化和挑战。

问答坊 | AI 解惑

我爱龙芯

    很关注自己国家的芯片的动态,特别让我们感动的是我们自己的芯------龙芯。关于龙芯,对于我而言,了解的也许只是浅在的,并不是从技术层面的。我是学电子的,所对对于中国的电子业发展状况,绝对比一般的局外人看的清楚一些,可以豪 ...…

查看全部问答>

小小一片,大大学问——谈谈滤光片

各位有没有想过, 到底CCD上那片玻璃片是干嘛用的?--- 那片滤光片,正确名称叫”光学低通滤波器” (OLPF)! 啊!不就是片破玻璃片嘛! 且听我道来: 滤光片的功用:1.滤除红外线. 2.修整进来的光线 滤除红外线: 彩色CCD也可感应红外线,就是因为会感应 ...…

查看全部问答>

PCB技术---资料集

PCB技术---资料集…

查看全部问答>

单片机串口波特率的计算方法

我刚开始学习单片机,请问单片机串口波特率怎么计算,见笑了。…

查看全部问答>

2440VGA输出配置

我用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 应该怎么写,我是菜鸟高手帮帮忙,谢谢各位…

查看全部问答>

STM8 硬件I2C问题

如题,最近在调STM8的 硬件I2C来读写24C16,不知道是不是用7位模式?要用7位模式或10位模式要怎么配置?…

查看全部问答>

AVR重复定义 大家帮帮忙

我刚刚初学A V R 是一个新手  用的是AVR studio4 昨天买来单片机开发板,看着视频做 我把他的示例文件  自己用手动输了一遍  提示gcc plug-in: Error: Object file not found on expected location D:\\cyuyan\\de ...…

查看全部问答>

Mbus主站接受电路的问题!!!!!!!!!

这个电路的主要作用就是检测SR两端的电压波动,通过U1差动输入和U2的比较作用,从而实现光耦的通断 我想问的是电容C1和C2起的作用是什么? 哪位大神给指点一下吧 跪谢…

查看全部问答>

让低功耗 MSP430 的功耗更低 — 第 2 部分

在上次(https://bbs.eeworld.com.cn/thread-440392-1-1.html)我们探讨了特别有趣的 MSP430 属性:尽管 MSP430 的电源电压范围很宽(1.8 至 3.6V),但功耗会随提供给 MCU 的特定电压变化而变化。换句话说,电源电压从 1.8V 提高到 3.6V 会明显增 ...…

查看全部问答>