历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | STM3的TIM4定时器功能设置

2018-09-16 来源:eefocus

一、初始化过程


/***********************************************************************

利用TIM4定时器作为计时,每个0.1秒处理一次数据

计算周期的公式为: psc/72*period/1000000 (单位为秒)

************************************************************************/


void TIM2_Config(void)

{

    TIM_TimeBaseInitTypeDef TIM_timeBaseStucture;

    TIM_OCInitTypeDef TIM_OCInitStructure;

    

    u16 period = 1000;                                        //设置PWM周期值(ARR值)

    u16 pluse = 5000;                                        //设置PWM脉冲宽度值(CRR值)

    

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);    //使能TIM4时钟

    

    TIM_DeInit(TIM4);                                        //重置TIM4

    //配置TIM4时基

    TIM_timeBaseStucture.TIM_ClockDivision = TIM_CKD_DIV1;    //分频因子

    TIM_timeBaseStucture.TIM_Prescaler = 7200-1;            //预分频

    TIM_timeBaseStucture.TIM_CounterMode = TIM_CounterMode_Up;    //向上计数

    TIM_timeBaseStucture.TIM_Period = period;                

    TIM_TimeBaseInit(TIM4, &TIM_timeBaseStucture);

    

    //配置TIM通道1的PWM输出

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //PWM输出模式为PWM1

    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //设置有效电平的极性

    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    //使能通道输出PWM

    TIM_OCInitStructure.TIM_Pulse = pluse;                        //设置PWM的脉冲宽度值,即CRR值

    TIM_OC1Init(TIM4, &TIM_OCInitStructure);

    

    TIM_ARRPreloadConfig(TIM4, ENABLE);                                //使能TIM3的寄存器ARR的预装载功能,DISABLE时将会使改变ARR值时立即生效

    TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);                //使能TIM3通道1的CCR的预装载功能,DISABLE时将回使改变CRR值时立即生效

    

    //使能TIM4定时器

    TIM_Cmd(TIM4, ENABLE);

    

    TIM_ClearFlag(TIM4, TIM_FLAG_Update);                            //先清除定时器更新标志位,防止一开启就进入中断处理函数

    

    TIM_ITConfig(TIM4, TIM_IT_Update,ENABLE);

    NVIC_EnableIRQ(TIM4_IRQn);

        

}


二、TIM4中断函数



void TIM4_IRQHandler(void)

{

    if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)

    {

        printf("here happened TIM4 IRQ.\n");

        TIM_ClearITPendingBit(TIM4,TIM_IT_Update);

    }

    

}


推荐阅读

史海拾趣

Bel Power Solutions公司的发展小趣事

随着全球环保意识的日益增强,Bel Power Solutions积极响应号召,将环保理念融入产品设计和生产中。公司推出了多款环保型电源产品,如高效能、低能耗的DC-DC转换器和电源供应器,帮助客户降低能耗、减少碳排放。同时,公司还致力于研发和推广可再生能源应用技术,为可持续发展做出贡献。

Electromagnetic Industries Llp公司的发展小趣事

EMI公司成立于20世纪80年代初,当时正值电子行业的快速发展期。创始人李先生凭借对电磁技术的深厚理解和市场洞察,决定投身电磁产品的研发与生产。初创时期,公司面临着资金短缺、技术难题和市场认可度低等多重挑战。然而,李先生和他的团队并没有放弃,他们通过夜以继日的研发,不断攻克技术难关,同时积极寻找合作伙伴,拓展销售渠道。经过几年的努力,EMI公司逐渐在市场上站稳了脚跟。

Calmos Systems Inc公司的发展小趣事

随着电子行业的快速发展,Calmos Systems Inc公司意识到技术创新是企业发展的核心动力。因此,公司加大了研发投入,引进了一批高水平的技术人才,建立了完善的研发体系。经过多次试验和失败,公司成功开发出了一款具有颠覆性的新技术,这项技术在行业内引起了广泛关注。凭借这一技术创新,公司在市场上获得了竞争优势,实现了快速发展。

Autonics公司的发展小趣事

作为一家具有社会责任感的企业,Autonics不仅注重经济效益的发展,还积极参与公益事业和环保活动。公司致力于推动绿色生产,减少对环境的影响。同时,Autonics还关注员工福利和社会贡献,为员工提供良好的工作环境和发展空间,积极回馈社会。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上五个故事仅是对Autonics公司发展起来的一些重要阶段的概括性描述,并未涉及具体的细节和内部信息。如需了解更多关于Autonics公司的发展历程和故事,建议查阅相关新闻报道、行业分析报告或公司官方网站。

Astro Tool Corp公司的发展小趣事

Astro Tool Corp公司深知产品质量是企业生存和发展的关键。因此,公司始终将质量管理放在首位,建立了完善的质量管理体系和检测机制。通过严格把控原材料采购、生产过程和成品检测等各个环节,公司确保了产品的稳定性和可靠性。同时,公司还注重品牌建设,通过提升产品附加值和服务质量,不断增强客户对公司的信任度和忠诚度。

Digital Core Design公司的发展小趣事

1988年,Core Design由Jeremy Heath-Smith创立,起初仅有8名员工和1万6千英镑的注册资金。这家新兴的游戏开发公司很快凭借其首款游戏《Rick Dangerous》在英国游戏市场崭露头角。这款游戏凭借其独特的游戏机制和引人入胜的故事情节,迅速登上英国游戏销量榜的榜首,并赢得了欧洲年度游戏奖,为Core Design的未来发展奠定了坚实的基础。

问答坊 | AI 解惑

Error:Non-input node'txd' assigned to dedicated input是什么意思?

Error:Non-input node\'txd\' assigned to dedicated input是什么意思?…

查看全部问答>

雪崩光电二极管反向电流的测量

雪崩光电二极管是一种高灵敏度、高速度的光电二极管。施加反向电压时,能启动其内部的增益机构。APD的增益可以由反向偏置电压的幅度来控制。反向偏置电压越大增益就越高。APD在电场强度的作用下工作,光电流的雪崩倍增类似于链式反应。APD应用于对 ...…

查看全部问答>

SDIO接口输出用几条线呀?

背景:想把SMD解密卡嵌到PCB板上,此SMD的接口是SDIO方式的。 问题:SDIO接口一般使用几条线呀,都输出什么信号。 例如: SPI接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从 ...…

查看全部问答>

2440开发板通过交换机连摄像头

  我们做的这个项目要求连四路摄像头到开发板上,我们打算用交换机连在开发板上的网络口,然后通过交换机引出四个摄像头,这个方案我们需要做些什么啊,没有思路。摄像头指令怎么发啊。大家谁做过分享一下经验,有没有这方面的例子啊。在 ...…

查看全部问答>

SBC84500 没有SDK 如何开发程序

请问如果没有SDK 怎么开发基于wince的程序? 急寻高手指点…

查看全部问答>

获取电池电量函数问题GetSystemPowerStatusEx2

我查了我的sdk里已经包含了Coredll.lib和Winbase.h,为什么我在EVC里调用GetSystemPowerStatusEx2函数,编译时说没有定义呢,头文件我已经加了的…

查看全部问答>

软件开发与软件工程联盟群成员列表

软件开发与软件工程联盟群成员列表 本帖被 supersoft 从 软件开发与软件工程社区管理版块 移动到本区(2007-03-08) 联盟群宗旨:建设合谐型软件开发与工程的社区-程序员的社区 社区主页:http://supersoft.ttsite.com 计算机专业书讯交流(计算机 ...…

查看全部问答>

谁知道74LV04DB,118这个型号的相关资料数据啊~!

谁知道74LV04DB,118这个型号的相关资料数据啊~!…

查看全部问答>

怎样在Linux里面通过C语言程序了,输出嘟嘟的报警声???

在做一个网络传输的项目,功能是在收到网络消息的时候,在屏幕上面打印出消息的同时,可以听到报警提示的声音。大家有什么好的方法吗??…

查看全部问答>

【视频分享】使用TI C2000 MCU设计EPS电子控制单元ECU

简介:电子控制单元ECU是汽车电动助力系统EPS最核心的组成部分,本视频为您介绍如何用TI 的C2000 系列 MCU 来设计电动助力系统EPS中的电子控制单元ECU部分。更多请点击TI官网:www.ti.com.cn   $(\'swf_NzZ\').innerHTML=AC_FL_RunContent(\ ...…

查看全部问答>