历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2020年12月07日 | STM32f103 —— timer

2020-12-07 来源:elecfans

#ifndef _TIMER_H_

#define _TIMER_H_

 

#include "stm32f10x.h"

#include "type.h"

 

// LED定时器,按键定时器,重发定时器

#define LED_TIMER           TIM1

#define LED_TIMER_DIV       7200

#define LED_TIMER_PERIOD    2500

 

#define PWM_TIMER           TIM2

 

#define RESEND_TIMER        TIM3

#define RESEND_TIMER_DIV    7200  

#define RESEND_TIMER_PERIOD 2500

 

#define KEY_TIMER           TIM4

#define KEY_TIMER_DIV       7200

#define KEY_TIMER_PERIOD    200

 

void TimerNvicConfig(void);

void TimerConfig(TIM_TypeDef *timer, uint16_t div, uint16_t period);

void TimerEnable(TIM_TypeDef *timer);

void TimerDisable(TIM_TypeDef *timer);

 

#endif /* _TIMER_H_ */

 

 

#include "stm32f10x_tim.h"

#include "stm32f10x_rcc.h"

#include "timer.h"

 

/*

*  三个定时器: 1 灯色   2 按键  3 重发

*/

void TimerNvicConfig(void)

{

  NVIC_InitTypeDef NVIC_StructInit;

 

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

 

  NVIC_StructInit.NVIC_IRQChannel = TIM1_UP_IRQn;

  NVIC_StructInit.NVIC_IRQChannelCmd = ENABLE;

  NVIC_StructInit.NVIC_IRQChannelPreemptionPriority = 0;

  NVIC_StructInit.NVIC_IRQChannelSubPriority = 1;

  NVIC_Init(&NVIC_StructInit);

 

  NVIC_StructInit.NVIC_IRQChannel = TIM2_IRQn;

  NVIC_StructInit.NVIC_IRQChannelCmd = ENABLE;

  NVIC_StructInit.NVIC_IRQChannelPreemptionPriority = 1;

  NVIC_StructInit.NVIC_IRQChannelSubPriority = 1;

  NVIC_Init(&NVIC_StructInit);

 

  NVIC_StructInit.NVIC_IRQChannel = TIM3_IRQn;

  NVIC_StructInit.NVIC_IRQChannelCmd = ENABLE;

  NVIC_StructInit.NVIC_IRQChannelPreemptionPriority = 2;

  NVIC_StructInit.NVIC_IRQChannelSubPriority = 1;

  NVIC_Init(&NVIC_StructInit);

 

  NVIC_StructInit.NVIC_IRQChannel = TIM4_IRQn;

  NVIC_StructInit.NVIC_IRQChannelCmd = ENABLE;

  NVIC_StructInit.NVIC_IRQChannelPreemptionPriority = 3;

  NVIC_StructInit.NVIC_IRQChannelSubPriority = 1;

  NVIC_Init(&NVIC_StructInit);

}

 

void TimerConfig(TIM_TypeDef *timer, uint16_t div, uint16_t period)

{

  TIM_TimeBaseInitTypeDef TIM_StructInit;

 

  if(LED_TIMER == timer)

  {

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

  }

  else if(RESEND_TIMER == timer)

  {

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  }

  else if(KEY_TIMER == timer)

  {

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

  }

 

  TIM_StructInit.TIM_Period = period;

  TIM_StructInit.TIM_Prescaler = div;

  TIM_StructInit.TIM_ClockDivision = TIM_CKD_DIV1; /* 数字滤波器采样频率 */

  TIM_StructInit.TIM_CounterMode = TIM_CounterMode_Up; /* 向上计数 */

  TIM_StructInit.TIM_RepetitionCounter = 0;

 

  TIM_TimeBaseInit(timer, &TIM_StructInit);

  TIM_ITConfig(timer, TIM_IT_Update, ENABLE); /* 允许中断 */

  TIM_ClearFlag(timer, TIM_FLAG_Update); /* 更新定时器会产生更新时间,清除标志位 */

}

 

void TimerEnable(TIM_TypeDef *timer)

{

  TIM_Cmd(timer, ENABLE);

}

 

void TimerDisable(TIM_TypeDef *timer)

{

  TIM_Cmd(timer, DISABLE);

}


推荐阅读

史海拾趣

AUK Contractors Co Ltd公司的发展小趣事

在追求经济效益的同时,AUK Contractors Co Ltd也积极履行企业社会责任。公司不仅严格遵守环保法规,还积极参与公益事业,为社会做出贡献。此外,公司还注重可持续发展,通过节能减排、循环利用等方式降低对环境的影响,实现了经济效益与社会效益的双赢。

这些故事虽然基于虚构,但反映了电子行业公司可能经历的典型情境和挑战。希望这些故事能够为您提供一些启发和参考。

Adam Tech公司的发展小趣事

Adam Tech公司成立于1987年,总部位于美国新泽西州。创业初期,公司面临着资金短缺、市场竞争激烈等诸多困难。然而,创始人凭借对电子连接器行业的深刻理解和执着追求,带领团队克服重重困难,逐渐在市场上站稳脚跟。公司最初的产品线相对单一,但凭借着高品质和可靠的性能,逐渐赢得了客户的信任。

Heatron公司的发展小趣事

进入21世纪后,Heatron公司开始积极寻求国际合作机会,以进一步拓展其全球业务。公司先后与多个国家的知名企业建立了战略伙伴关系,共同开发新产品、新技术。通过资源共享和市场互补,Heatron不仅成功进入了多个新兴市场,还显著提升了其品牌在国际市场上的知名度和影响力。

乾坤(Cyntec)公司的发展小趣事

随着科技的不断进步,电子行业的发展日新月异。乾坤公司意识到,要想保持领先地位,就必须不断进行技术创新。于是,公司加大了对研发团队的投入,引进了一批高水平的科研人才,并与多所高校和研究机构建立了紧密的合作关系。在一次偶然的实验中,研发团队发现了一种新型材料,可以显著提升电子元器件的性能。经过一系列严格的测试和验证,这种新材料被成功应用于产品生产中,使得乾坤的电子元器件在性能上实现了质的飞跃。这一技术创新不仅为公司带来了丰厚的利润,更让乾坤在电子行业中声名鹊起。

峰岹(Fortior Tech )公司的发展小趣事

产品质量是企业的生命线。乾坤公司深谙此道,因此在发展过程中始终注重质量管理体系的建立和完善。公司引进了国际先进的质量管理理念和方法,通过ISO 9001质量管理体系认证,并严格执行每一道生产工序的质量控制。为了确保产品质量的稳定性和可靠性,乾坤还建立了完善的产品测试和验证流程,每一批产品都要经过严格的质量检测才能出厂。这些举措不仅提升了产品质量,也赢得了客户的广泛认可和信赖。

广芯电子(BROADCHIP)公司的发展小趣事

乾坤(Cyntec)公司在电子行业初创时期面临着诸多挑战。由于市场上已经存在多家知名的电子产品制造商,作为一家新兴公司,乾坤必须要在激烈的市场竞争中找到自己的定位。公司创始人深知,只有通过技术创新和产品差异化,才能在市场中站稳脚跟。于是,他们投入大量资源进行研发,专注于开发高性能、高稳定性的电子元器件。经过一段时间的努力,乾坤成功推出了一系列具有自主知识产权的新型电子元器件,这些产品很快在市场上获得了良好的口碑,为公司的后续发展奠定了坚实的基础。

问答坊 | AI 解惑

傅立叶变换的物理意义

  傅立叶变换(F.T.)对每个电子工程师来说应该都不陌生,但我们不应该只是记住一个 的公式,其背后的物理意义才是掌握和自如运用各种变换的核心。         寒假前老师把我们叫过去给了个入门讲座。他特地 ...…

查看全部问答>

西门子S7-200仿真软件贡献

西门子S7-200仿真软件给大家学习!…

查看全部问答>

wince 注册表中哪里可以更改系统时间?

我想在wince 注册表中设置系统时间并且生成NK,这样档NK重新烧写后,显示为设置的值,而不是一个随机的值。 请问什么键可以更改系统时间?…

查看全部问答>

谁能给我发个netsvwrap.msi安装包 谢谢 微软已经不提供下载了 急用 38572681@163.com

谁能给我发个netsvwrap.msi安装包 谢谢 微软已经不提供下载了 急用 38572681@163.com…

查看全部问答>

现今 嵌入式开发中C代码确实比C++ 代码有明显或较大的效率上的优势么 ?

嵌入式开发中C代码确实比C++ 代码有明显或较大的效率上的优势么 ? 硬件发展的今天 两者之间的区别究竟多大呢? 真的不用C++么? 谢谢!…

查看全部问答>

[求救]SOT23封装的型号查询

高手麻烦赐教,我有几个SOT23封装的管子,不知道型号是什么的,我把这几个管子的光刻发上来,麻烦有谁知道的回复,谢谢了WZE、WZS、WZP、3VW、WTZ、9EW、3NW这7个管子我量不像是三极管,倒是像稳压管 本文来自电子工程师之家:http://www.eehome.cn/ ...…

查看全部问答>

请大家帮我看看定时器的程序

我想用STM32F103ZE的TIM2定时器做基本的定时器用,产生4ms左右的中断。定时器的初始化程序如下: void TIM2_Configuration(void) {   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   /* Time base con ...…

查看全部问答>

串口0中的 TXD RXD 连在一起可以通讯吗?

串口0中的 TXD RXD 连在一起可以通讯吗? 现在碰到一个问题:单片机通过串口与外部进行通讯,但是外部器件的发送接收端是用一个IO口的,所以,单片机中的TXD RXD脚要连在一起,发送数据的时候通过 TXD发出,接收数据的时候通过RXD接收,这样可以吗 ...…

查看全部问答>

用t1作为中断写的程序,但运行不了,why?

想编写一个p1.1输出方波为100ms(t1做中断)的程序,用汇编我调试好了,但是c却没反应!不知道哪里出错了    #include<reg51.h> sbit p0=P1^0;void main() {    TMOD=0X10; TH1=0X3C; TL1=0XB0 ...…

查看全部问答>

串口发送中断打开后就不停的循环中断,必须软件设置终止,是吗

串口发送中断打开后就不停的循环中断,必须软件设置终止,是吗…

查看全部问答>