一些库函数的用法手册上讲得不甚详细,网上也几乎没有资料,把我个人理解的一些东西和大家分享一下,如有错漏请批评指正。

     TIM_DeInit(TIM2);//注意:按缺省值复位后,时钟源为内部时钟,不必再调用函数设置。如需要更改定时器计时的时钟源,//调用后面的那几个相关函数就行。定时器的时钟不是直接来自APB1/2,而是来自于输入为APB1/2的一个倍频器。//当APB1/2的预分频系数为1时,定时器的时钟频率等于APB1/2的频率;//当APB1/2的预分频系数为其它数值时,定时器的时钟频率等于APB1/2的频率两倍。TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period = 10000-1;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值//由于计数从0开始,所以此处应为理想周期减1,最大值为0xFFFFTIM_TimeBaseStructure.TIM_Prescaler = 0xF;//设置用来作为TIMx时钟频率除数的预分频值,最大值为0xFFFFTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置定时器输入频率fCK_INT与数字滤波器采样频率基准fDTS使用的采样频率之间的分频比例TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//中央对齐模式1 计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向下计数时被设置//中央对齐模式2 计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向上计数时被设置//中央对齐模式3 计数器交替地向上和向下计数。输出比较中断标志位,只在计数器向下和向上计数时均被设置TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//设置输出模式//TIM_OCMode_Timing:  比较成功后不在对应输出管脚上产生输出(输出引脚冻结,可另作他用),但产生中断,用来作软件定时器用。//TIM_OCMode_Toggle:  比较成功后翻转对应输出管脚上的电平。//TIM_OCMode_Active:  输出比较主动模式,匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输出为高电平//TIM_OCMode_Inactive:输出比较非主动模式,匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平//TIM_OCMode_PWM1:    当计时器值小于比较器设定值时则TIMX输出脚此时输出有效高电位。//                     当计时器值大于或等于比较器设定值时则TIMX输出脚此时输出低电位。//TIM_OCMode_PWM2时:  与TIM_OCMode_PWM1相反TIM_OCInitStructure.TIM_Pulse=0xFFFF;//设置输出脉宽,最大只能取0xFFFFTIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//使能输出TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//设置输出极性
//  TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;
//  //指定TIM互补输出引脚的在比较有效时的输出电平。仅供高级定时器有效。
//  TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Enable;
//  //使能或使能TIM的互补输出。仅供高级定时器有效
//  TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
//  TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;
//  //指定在空闲状态下的TIM输出比较引脚的状态。仅供高级定时器有效。TIM_OC1Init(TIM2, & TIM_OCInitStructure);//使用哪个通道,就把前面的OCxInit改成几TIM_ICInitTypeDef TIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//选择通道。TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//选择输入捕获的边沿TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
//  TIM_ICSelection_DirectTI   TIM输入1,2,3或4与IC1或IC2或IC3或IC4相连
//  TIM_ICSelection_IndirectTI TIM输入1,2,3或4与IC2或IC1或IC4或IC3相连
//  TIM_ICSelection_TRC        TIM输入1,2,3或4与TRC(内部触发)相连。TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//设置输入捕获预分频器TIM_ICInitStructure.TIM_ICFilter = 0x0;//选择输入比较滤波器。该参数取值在0x0和0xF//不同的取值代表着不同的采样频率和带宽,详见手册336页表//实际采样频率fSAMPLING不一定等于采样频率基准fDTSTIM_ICInit(TIM2, &TIM_ICInitStructure);//TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);//新版函数库里取消了TIM_ICMode,TIM_ICInit()默认为输入捕获模式ICAP//如果使用PWM输入模式,要用TIM_PWMIConfig()来初始化TIM_Cmd(TIM2, ENABLE);TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE );//TIM_IT_Update:  更新事件:计数器上溢/下溢,计数器初始化(由软件或内部/外部触发)//TIM_IT_CC1:     通道1输入捕获/输出比较//TIM_IT_CC2:     通道2输入捕获/输出比较//TIM_IT_CC3:     通道3输入捕获/输出比较//TIM_IT_CC4:     通道4输入捕获/输出比较//TIM_IT_COM:     TIM Commutation Interrupt source//TIM_IT_Trigger: 触发事件:计数器开始、停止、初始化或由内部/外部触发计数//TIM_IT_Break:   打断输入TIM_InternalClockConfig(TIM2);//禁止从模式,用内部时钟直接驱动定时器的预分频器TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR3);//设置定时器工作于从模式,时钟源为其他定时器的输出分频.此时钟源无滤波//TIM_TS_ITR0 TIM内部触发0 TIM1//TIM_TS_ITR1 TIM内部触发1 TIM2//TIM_TS_ITR2 TIM内部触发2 TIM3//TIM_TS_ITR3 TIM内部触发3 TIM4TIM_TIxExternalClockConfig(TIM2, TIM_TS_TI1FP1,TIM_ICPolarity_Rising, 0);//设置 TIMx 触发为外部时钟(从四个通道引脚引入)//触发源选择://TIM_TIxExternalCLK1Source_TI1ED:  未经滤波的Timer Input 1//TIM_TIxExternalCLK1Source_TI1:    滤波后的Timer Input 1//TIM_TIxExternalCLK1Source_TI2:    滤波后Timer Input 2//设置输入捕获的边沿://TIM_ICPolarity_Rising//TIM_ICPolarity_Falling//设置滤波设置://必须在0x0与0xF之间TIM_ETRClockMode1Config(TIM2, TIM_ExtTRGPSC_DIV2,TIM_ExtTRGPolarity_NonInverted, 0x0);//外部时钟模式1.需要设置预分频,以及外部触发极性://TIM_ExtTRGPolarity_Inverted     TIM外部触发极性翻转:  低电平或下降沿有效//TIM_ExtTRGPolarity_NonInverted  TIM外部触发极性非翻转:高电平或上升沿有效//最后要设置滤波环节。TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_DIV2,TIM_ExtTRGPolarity_NonInverted, 0x0);//外部时钟模式2.//通用定时器的计数时钟有三种://内部时钟(CK_INT)//外部时钟源,包括://外部时钟模式1 外部输入脚(TIx)  //外部时钟模式2 外部触发输入(ETR) //内部触发输入(ITRx) 这三种//ETR仅用于外部触发,CHx还可以输出PWM,ETR是不可能输出PWM的。//这个函数后面的一些函数大部分是为实现上述功能而需要调用的底层函数,不需要熟练掌握TIM_ARRPreloadConfig(TIM2, ENABLE);//使能预装载寄存器后其与影子寄存器间将不再是立即写入的关系,而是等更新事件产生后才写入//输入捕获和输出比较相关的预装载寄存器同理TIM_OC1FastConfig(TIM2, TIM_OCFast_Enable);//输出比较快速特征性能用在缩短单脉冲输出模式时的最小输出延迟//失能时,由于从激励进入到打开计数器需要时间,因此最小延迟为5个时钟周期//使能后,一旦有激励进入,将立即输出活动电平,而不管比较结果如何。延迟被缩短为3个时钟周期//必须将通道配置为PWM模式此设置才有作用

STM32 TIM定时器 库函数学习笔记相关推荐

  1. STM32 LCD中英文字符显示学习笔记

    本实验基于STM32 LCD英文字符显示学习笔记. 开发板:野火指南者(STM32F103VE) STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0 IDE:KEIL5(代 ...

  2. STM32 CAN总线通信学习笔记(一)

    STM32 CAN总线通信学习笔记(一) 一.CAN总线简介 CAN 是控制器局域网络(Controller Area Network, CAN)的简称.CAN采用数据块编码的方式,数据块根据帧的类型 ...

  3. 【STM32】OV2640摄像头学习笔记 转

    [STM32]OV2640摄像头学习笔记 2019年03月03日 13:01:35 淹死的大白鲨 阅读数 4736更多 分类专栏: [STM32] 版权声明:本文为博主原创文章,遵循 CC 4.0 B ...

  4. STM32基于固件库学习笔记(4)(通用定时器)TIM3定时1S中断

    STM32F103ZE系列定时器资源 有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器. 通用定时器:是一个通过可 ...

  5. STM32 TIM定时器的使用(1)——定时

    1.定时器简介 STM32中,定时器的应用非常广泛,涉及计时.信号检测.电机控制等等,并且定时器章节的介绍在STM32F1的手册里面也占据了大量的篇幅,足以看出定时器的重要性. 我将会做5个实验来学习 ...

  6. RT-Thread 软件定时器(学习笔记)

    本文参考自[野火EmbedFire]<RT-Thread内核实现与应用开发实战--基于STM32>,仅作为个人学习笔记.更详细的内容和步骤请查看原文(可到野火资料下载中心下载) 文章目录 ...

  7. stm32正常运行流程图_stm32学习笔记之问题总结

    1. SYSCLK时钟源有三个来源:HSI RC.HSE OSC.PLL; 2. MCO[2:0]可以提供4源不同的时钟同步信号; 3. GPIO口貌似有两个反向串联的二极管用作钳位二极管; 4. 总 ...

  8. stm32正常运行流程图_STM32学习笔记(超详细整理144个问题)

    1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备: 2.Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为s ...

  9. MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

    目录 硬知识 看门狗定时计数器 (WDTCNT) 看门狗模式 定时计数模式 看门狗定时器中断 时钟故障保护功能 低功耗模式下的看门狗操作 看门狗定时器控制寄存器 WDT_A API (机翻) 参数 上 ...

最新文章

  1. 智能车竞赛中的车模足底按摩
  2. 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 控制角色在真实的环境中寻路...
  3. Web前端如何学?Web前端学习方法分享
  4. LeetCode 702. 搜索长度未知的有序数组(二分查找)
  5. RocketMQ 端云一体化设计与实践
  6. ArcGis api配合vue开发入门系列(二)距离以及面积的测量
  7. Bailian3178 开关电灯【模拟】
  8. mac电脑开发环境配置
  9. 实现真正的「人机」对战:引入三方 AI 引擎
  10. STM32程序设计(跑马灯)以及STM32原理图绘制(通过ad软件)
  11. PostgreSQL客户端认证配置
  12. 龙卷风路径_和平精英龙卷风在哪里 龙卷风位置介绍
  13. PPT里面如何插入斜体文字
  14. Linux系统下安装Adobe Flash Player插件观播放视频
  15. ArcGIS 对道路名称进行标注
  16. 支持同步的Todo软件
  17. linux can总线接收数据串口打包上传_【Linux应用】CAN总线编程
  18. form表单—2种提交方式
  19. 运维工程师和实施工程师的区别
  20. Java阿凯_Java-7 面向对象(上)

热门文章

  1. 【华为OD机试真题 python】机器人走迷宫 【2022 Q4 | 200分】
  2. 为什么李莫愁老是杀人?
  3. wps怎么取消自动编号?四种方法任你选择
  4. 【linux】查看文件
  5. add(1)(2),add(1,2)(3)随意长度随意组合的完美解决
  6. ux设计师薪水_UX设计师的视觉设计技巧不再可选
  7. findfont: Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans. findfont: Generic famil
  8. 做题感悟日记201904
  9. android仿qq动态,Android仿QQ空间主页面的实现
  10. 嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)