大家都知道stm32f4片内资源丰富,外中外设功能强大,拥有两个32位计数器,这对很多需要对脉冲计数的项目来说很是很好的,不仅省掉了外部计数器的扩展,节约PCB空间,程序设计也简单很多的。由于本人也是刚接触f4系列的单片机,只是觉得很强大,在32位计数器脉冲计数上也遇到了问题,在网上也搜索了很多资料,但是都没有具体的例程供参考,本人对寄存器了解不是很深刻,喜欢库函数,最后经过几天的苦思冥想和多次实践,最终终于成功了,贴出配置文件如下:
void TIM2_Int_Init(u32 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
// TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); /
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//PA0ÅäÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//
GPIO_Init(GPIOA, &GPIO_InitStructure);/
GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_TIM2); //
TIM_TimeBaseInitStructure.TIM_Period = arr; //
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//
TIM_TIxExternalClockConfig(TIM2, TIM_TIxExternalCLK1Source_TI1, TIM_ICPolarity_Rising, 0);
TIM_CounterModeConfig(TIM2,TIM_CounterMode_Up);
TIM_SetCounter(TIM2,0);//
TIM_Cmd(TIM2,ENABLE); //
}
下面是定时器4定时1秒来读取计数值并通过串口打印的函数:
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET) /
{
counter=TIM_GetCounter(TIM2);//读取计数值
printf("Fre:%32d ",counter);
TIM_SetCounter(TIM2,0);//设置计数初值
counter=TIM_GetCounter(TIM2);//确定计数初值是0
printf("Fre:%32d ",counter);
flag_1s=1;
}
TIM_ClearITPendingBit(TIM4,TIM_IT_Update); //
}
但是最后在实测时发现这个计数器计数不准确,频率越大偏差越大,100KHz时打印出的值大概是99K左右,1KHz时打印出九百九十五左右,但是计数值可以超过750KHz的(实测过的),这个和定时器初始化时的自动重装载值和预分频有关。希望能帮到大家。
上一篇:STM32CubeMX:ETR外部脉冲计数器
下一篇:STM32的计数器的使用
推荐阅读
史海拾趣
1984年,台湾的电子行业正迎来蓬勃发展的黄金时期。在这一年的10月,Bytesonic Corporation在台湾台北正式成立,标志着这家电子公司正式踏入竞争激烈的电子市场。初创时期,公司面临着资金短缺、技术匮乏等多重挑战,但凭借着创始人的远见卓识和团队的拼搏精神,公司逐渐在市场中站稳了脚跟。
在竞争激烈的电子行业中,持续的研发和创新是企业生存和发展的关键。Semi-Films Division 深知这一点,因此始终将研发和创新作为公司的核心竞争力。公司投入大量资金和资源用于新技术和新产品的研发,不断推出具有更高性能、更低成本的产品来满足市场的需求。这些创新产品不仅为公司带来了丰厚的利润,也提升了公司在行业中的地位和影响力。
Dolphin Interconnect Solutions ASA自创立之初,便以技术革新为核心驱动力。公司不断投入研发资源,开发出了基于PCI Express的I/O和clustering产品,这些产品在市场上取得了显著的成功。随着技术的不断进步,Dolphin又成功地将产品扩展到更广泛的领域,如云计算、大数据处理等,进一步巩固了其在电子行业的地位。
1995年,Curtis在中国建立了独资企业科蒂斯仪器(中国)有限公司,其制造工厂于1997年投入生产。经过近20年的发展,Curtis在中国已经建立了完善的生产、研发和销售体系。2012年,Curtis在苏州工业园区成立了独立的科蒂斯技术(苏州)有限公司,进一步提升了在中国的研发和生产能力。如今,Curtis中国已成为Curtis在全球的第6个研发中心,也是中国最现代化的生产电动车辆驱动控制系统的厂商之一。
苏州博众半导体是博众精工(股票代码:688097)直属的半导体子公司,创立于2022年。公司依托集团二十余年技术沉淀,立足于半导体领域,为客户提供领先的、稳定的先进工艺及检测设备。在封装测试阶段,博众半导体在贴片(共晶、固晶)、AOI检测等工艺流程的制造装备上进行布局,助力客户在芯片贴装、检测等工艺环节的制造过程中实现稳定生产。通过微米级、亚微米级、纳米级技术研发和产品创新,博众半导体致力于推动半导体先进制程发展和产业升级,不断为行业提供尖端产品。
在追求经济效益的同时,Cembre SPA也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,公司还积极参与社会公益事业,为社会做出贡献。这种负责任的态度不仅赢得了社会各界的认可,也为公司的长远发展奠定了坚实基础。
这五个故事展示了Cembre SPA在电子行业中的发展历程和取得的成就。通过技术创新、国际化战略、品质至上和社会责任等措施,公司逐渐在电气连接和固定技术领域树立起了自己的品牌形象和市场地位。
汽车电子信息产品是一大市场,市场将年增7%,车载远程信息处理系统市场达到200亿美元。据汽车用品之家社区,专家介绍随着我国汽车业发展迅速,目前我国汽车电子业呈现出七大发展特点: 一、汽车工业正处于科技创新时代,传统机电产品成为高 ...… 查看全部问答∨ |
|
我用430F149开发一个小语音芯片,用到了SPI串口,现在想用串口调试助手把整个系统测试下,结果发现UART0被SPI已经占用了,异步串口的3.4和3.5口始终输出高电平,板子做好了已经不好改了,不知道还有什么办法解决一下! 另:这个片子的串口UART和管 ...… 查看全部问答∨ |
STM32F103XC的定时器5怎么不能用呀 同样的程序改成TIM2,TIM3,TIM4都好使,改成TIM5咱们不好使呀? 有人用过TIM5吗?… 查看全部问答∨ |
关于MSP430G2553定时器的捕捉模式的中断总是无法进入;方法是用板子上的LED1做检验是否进中断?如果进中断的话,LED1灯点亮。 捕获模式是输入信号的上升沿,输入信号是我将P1.1口接地,等待一段时间让它接在高电平上,制造上升沿。(P1.1口是TA0的 ...… 查看全部问答∨ |