资料编号:147 下面是相关功能视频演示:
147-基于stm32单片机输入捕获简易频率测量数字频率计Proteus仿真(源码+仿真+论文)
使用 Proteus 仿真32单片机,实现了可以测量正弦波、方波、正弦波和锯齿波等波形频率的 频率计,测量误差在1%以内
前端处理电路由LM324运算放大器组成迟滞比较器和电压跟随器,迟滞特性一定程度上解决了噪声扰动的问题,且可将任意固定频率的信号转化为脉冲,便于单片机的后续处理,而电压跟随器可增强其带载能力。
下面是该资料的程序部分展示:
void delay_ms(uint64_t nms)
{
uint32_t temp = 0;
delay_Init();
if(nms == 0)
{
return;
}
while(nms > 500)
{
SysTick->LOAD = SystemCoreClock / 8000 * 500; /* Time load (SysTick-> LOAD is 24bit) */
SysTick->VAL = 0x000000; /* Empty counter */
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; /* Start the countdown */
do
{
temp = SysTick->CTRL;
}
while(temp&0x01 && !(temp&(1<<16))); /* Wait time is reached */
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* Close Counter */
SysTick->VAL = 0x000000; /* Empty counter */
nms -= 500;
}
SysTick->LOAD = SystemCoreClock / 8000 * nms; /* Time load (SysTick-> LOAD is 24bit) */
SysTick->VAL = 0x000000; /* Empty counter */
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; /* Start the countdown */
do
{
temp = SysTick->CTRL;
}
while(temp&0x01 && !(temp&(1<<16))); /* Wait time is reached */
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* Close Counter */
SysTick->VAL = 0x000000; /* Empty counter */
}
下面是该设计的设计报告:
下面是该设计的分享下载链接: